![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java数据结构与算法
基础
Sharpen__
展望未来往往比思考当下来的容易,不去行动终是空想、妄想。
展开
-
蛇形矩阵
蛇形矩阵:输入一个数n,输出对应的矩阵,比如 n=3,则矩阵为: 1 2 3 8 9 4 7 6 5 方案:定义一个变量direction记录当前的方向(以东西南北),可以看到蛇形矩阵构造的方向为:东->南->西->北->东,如此循环。 public static int[][] snakeMatrix(int n){ int[][] storage=new int[n][n]; int direction=0;//代表转的方向 0-东,1-南,2-西,3-北 in转载 2020-12-07 13:37:41 · 292 阅读 · 0 评论 -
kmp算法
暴力匹配算法 以完成字符串的匹配为例 思路: 如果用暴力匹配的思路,并假设现在 str1 匹配到 i 位置,子串 str2 匹配到 j 位置,则有: 1) 如果当前字符匹配成功(即 str1[i] == str2[j]),则 i++,j++,继续匹配下一个字符 2) 如果失配(即 str1[i]! = str2[j]),令 i = i - (j - 1),j = 0。相当于每次匹配失败时, i 回溯,j 被置为 0。 3) 用暴力方法解决的话就会有大量的回溯,每次只移动一位,若是不匹配,移动到下一位接着判原创 2020-09-03 20:36:08 · 102 阅读 · 0 评论 -
链表的反转
public ListNode1 reverseLinked(ListNode1 head) { ListNode1 cur = head; ListNode1 prev = null; while (cur != null) { ListNode1 nextTemp = cur.next;//先保存当前结点的下一个结点 后面要用 cur.next = prev;//将cur的下一个节点指向新的链表的最前端原创 2020-09-02 19:52:11 · 95 阅读 · 0 评论 -
java基础_数据结构_数组模拟环形队列
思路如下: front 变量的含义做一个调整: front 就指向队列的第一个元素, 也就是说 arr[front] 就是队列的第一个元素 front 的初始值 = 0 rear 变量的含义做一个调整:rear 指向队列的最后一个元素的后一个位置. 因为希望空出一个空间做为约定. rear 的初始值 = 0 当队列满时,条件是 (rear + 1) % maxSize == front 【...原创 2020-03-02 21:59:20 · 193 阅读 · 0 评论 -
java基础_数据结构_栈队列
队列 队列的使用场景:银行排队叫号机 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 示意图 数组模拟队列 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及 rear分别记录队列...原创 2020-03-02 19:10:24 · 122 阅读 · 0 评论 -
java基础_数据结构概念_稀疏数组
数据结构和算法的关系 1.数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。 2.要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决. 3.程序 = 数据结构 + 算法 4.数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位。 数据结构包括:线性结构和非线性结构。 线...原创 2020-03-01 21:52:53 · 101 阅读 · 0 评论