![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
jieshaoNO1
专业造轮子,润了润了。
展开
-
利用赫夫曼树加密压缩文件
因为鼠标落家里了,鼠标快递明天才到,所以明天再补充(5.23注释)package copy.huffmantree;import java.io.*;import java.util.*;/** * 一.把String字符转成ascii编码然后通过赫夫曼树生成唯一标识符。 * * */public class HuffmanDecode { public static void main(String[] args) { //srcFile是输入,dstFil原创 2022-05-23 19:47:36 · 209 阅读 · 0 评论 -
栈的思路分析和代码实现(Java)
栈是什么?1、栈是一个先入后出(FILO-First In Last Out)的有序列表。2、栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。3、根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除栈的数组设计思路定义一个 top 来表示栈顶的角标位置,初始化 为转载 2022-04-17 21:19:31 · 311 阅读 · 0 评论 -
栈综合实现计算器加减乘除(java实现)
前言:本文大部分思想和代码来自尚硅谷。该文章提供代码分析的不同角度。下面开始正文。思路解析:1、首先我们需要两个栈,一个是数字栈存放数字,一个字符栈存放字符,然后根据符号优先级定义出栈顺序。2、具体如下2.1 通过一个 index 值(索引),来遍历我们的表达式如果我们发现是一个数字, 就直接入数栈。2.2 如果发现扫描到是一个符号, 就分如下情况: 2.2.1 如果发现当前的符号栈为 空,就直接入栈 2.2.2 如果符号栈有操作符,就进行比较,如果当前的操作...原创 2022-04-17 21:14:04 · 862 阅读 · 0 评论 -
KMP算法(Java实现)(困难)
太难了KMP算法,想了一天才想懂。原创 2022-04-10 15:26:02 · 1358 阅读 · 0 评论 -
求X的平方根,二分查找实现和牛顿迭代实现
二分查找实现:首先我们先把中点找出来,如果mid平方<=x那么就把L移动到mid位置上+1,因为mid的位置已经算过一次了,mid=L+(r-L)。如果mid平方>=x那么就把r移动到mid位置上-1,还是mid=L+(r-L)。 private static int binarySeach(int x) { int index=0,left=0,right=x,times1=0; while (left<=right){ .原创 2022-04-06 00:33:49 · 324 阅读 · 0 评论 -
删除排序数组中的重复项
一个有序数组nums,原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。不能使用额外的数组空间,必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。例:输入:[0,1,2,2,3,3,4]输出:5提升:重点考察双指针算法,一个慢指针一个快指针。public class SortedArrayDuplicates { public static void main(String[] args) { System.out.println(原创 2022-04-04 11:25:50 · 218 阅读 · 0 评论 -
寻找数组的中心下标(简单)
给定一个整数数组nums,请编写一个能够返回数组“中心下标”的方法中心下标是数组的一个下标,其左侧的所有元素相加的合等于右侧所有元素相加的和。如果数组不存在中心下标,返回-1。如果数组又多个中心下标,应该返回最靠近左边的哪一个。注意中心下标可能出现在数组的两端。import java.util.Arrays;public class ArrayCenterIndex { public static void main(String[] args) { Syste原创 2022-04-03 21:21:15 · 1211 阅读 · 0 评论 -
统计素数个数,暴力算法与埃氏算法
//count统计素数个数 public static int bf(int n){ int count=0; for (int i = 2; i < n; i++) { count+= isPrime(i)? 1:0; } return count; } //isPrime方法是进行素数运算,暴力算法 private static boolean isPrime(int...原创 2022-03-29 22:14:57 · 200 阅读 · 0 评论 -
反转链表关键代码迭代器写法和递归写法
public HeroNode reverse(HeroNode heroNode){ HeroNode next,prev=null; HeroNode cur=heroNode; while (cur!=null){ //head等于node1时cur.next=node2; next=cur.next; //node1的指针为空..原创 2022-03-27 20:46:44 · 1048 阅读 · 0 评论 -
手写单链表的增删改查(Java实现)
数据结构是编程的灵魂,任何时候都要学会数据结构原创 2022-03-27 13:59:44 · 636 阅读 · 0 评论