LeetCode
ljy_n
这个作者很懒,什么都没留下…
展开
-
归并排序(Merge-Sort)
归并排序(Merge-Sort)归并排序属于外部排序基础部分归并排序的算法思想:左边处理一下(对左半边排序)右边处理一下(对右半边排序)最后处理左右两边的(两边一起处理)代码实现class MargeSort { public static void margeSort(int[] nums){ margeSort(nums,0,nums.length - 1); } public static void margeSort(int[] num原创 2021-10-01 21:20:24 · 212 阅读 · 0 评论 -
二分算法(Binary-Search)
二分算法(Binary-Search)二分算法基础二分查找在有序数组中,查找一个值—对于顺序查找的一种优化方案一个min指针---初始值为数组下标0;一个max指针---初始值为数组大小 - 1;一个mid指针---(min + max)/ 2;三种情况:arr[mid] == x; 找到结果arr[mid] > x; max = mid - 1arr[mid] < x; min = mid + 1代码实现int binarySearch(int[] num,int原创 2021-10-01 21:19:54 · 307 阅读 · 0 评论 -
并查集(Union-find)及经典问题
并查集(Union-find)及经典问题解决的是连通性问题并查集是一种抽象画很高的数据结构, 常用于描述集合,经常用于解决此类问题:某个元素是否属于某个集合,或者 某个元素 和 另一个元素是否同属于一个集合Union-find实现public class UnionFind { int[] nums;//保存各个节点的父节点---其实就是该节点的前一个链接节点 int[] size;//保存节点下子节点的数量---权重 int count;//还剩多少个节点未连通原创 2021-09-23 20:53:17 · 200 阅读 · 0 评论 -
堆(Heap)与优先队列
堆(Heap)与优先队列堆的基础知识堆是一个完全二叉树,可以采用数组形式存储下标从0开始,i位置的节点:左孩子坐标为:2 * i + 1;右孩子坐标为:2 * i + 2;父亲节点坐标为:(i - 1) / 2;Java中的PriorityQueue类(优先队列)是堆的实现类大顶堆:性质:在二叉树任意的三元子中,根节点都大于两个子节点的堆最大值在堆顶,第二大的值在根节点的左节点或右节点中。兄弟之间无大小关系堆适合维护:集合最值小顶堆:性质:在二叉树任意的三元子中,根原创 2021-09-19 19:05:06 · 292 阅读 · 0 评论 -
数据结构与算法———树
树结构比较重要,因为时间原因,写的并不详细,在不久后会及时完善,喜欢的可以先收藏一下。树可以理解为具有多个next域的链表二叉树每个节点度数(子节点数)最多为2。度数为0的节点比度数为2的节点多1。二叉树遍历重要的三种遍历:通过中序遍历和其他两种遍历中的一种可以还原一个二叉树遍历种类节点的遍历顺序前序遍历根->左->右中序遍历左->根->右后续遍历左->右->根完全二叉树只有在最后一层的右侧缺少节点原创 2021-09-18 18:52:59 · 114 阅读 · 0 评论 -
LeetCode笔记---Java语言->线程池与任务队列(队列)
LeetCode笔记—Java语言->线程池与任务队列->622. 设计循环队列栈的简述:队列:是一片连续的存储区域(有一个头指针,一个尾指针->最后一个元素的下一位)FIFO-先入先出。队列-假溢出:队列中还有空的位置,只是因为尾节点走到了最后一位。循环队列:(走到尾部在从头开始):为了解决队列假溢出。队列的典型应用场景(通常用在缓冲区用途):1.CPU的超线程技术2.线程池的任务队列(函数式编程思想-范型编程思想):此题思路略class MyCircu原创 2021-07-31 10:00:15 · 307 阅读 · 0 评论 -
LeetCode笔记---Java语言->递归与栈->844. 比较含退格的字符串
LeetCode笔记—Java语言->递归与栈->844. 比较含退格的字符串栈的简述:栈:FILO先进后出,后进先出。从哪入从哪出栈适合解决的问题:可以处理具有完全包含关系的问题(表达式求值,递归,括号匹配,二叉树遍历)。栈的典型应用场景:场景一:操作系统中的线程栈场景二:表达式求值此题思路遇到退格出栈此题也是针对后面数据的操作,所以我们采用栈这个数据结构,当我们遇到退格符号时,就将栈顶元素弹出。不是退格符号,就将元素压入。class Solution {原创 2021-07-29 22:43:07 · 126 阅读 · 0 评论 -
LeetCode笔记---Java语言->链表
不定时更新—喜欢的可以先收藏一下环形链表思路:采用快慢指针思维,设置一个快指针,一个慢指针,快指针一次走两步,慢指针一次走一步,如果有环存在,快慢指针总会相遇,如果没环,快指针会先指向空节点。/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; *原创 2021-07-25 21:29:09 · 207 阅读 · 2 评论 -
LeetCode笔记---Java语言->递归与栈->面试题 03.04. 化栈为队
LeetCode笔记—Java语言->递归与栈->面试题 03.04. 化栈为队栈的简述:栈:FILO先进后出,后进先出。从哪入从哪出栈适合解决的问题:可以处理具有完全包含关系的问题(表达式求值,递归,括号匹配,二叉树遍历)。栈的典型应用场景:场景一:操作系统中的线程栈场景二:表达式求值此题思路采用两个栈,一出一进:因为队列是先入先出,而栈是先入后出。而我们用两个栈,当在一个栈中进行插入操作的时候。先插入的元素就到了最底下,然后当我要进行出队操作的时候,我们把在入队栈中原创 2021-07-29 17:16:33 · 98 阅读 · 0 评论 -
LeetCode笔记---Java语言->递归与栈->682.棒球比赛
LeetCode笔记—Java语言->递归与栈->682.棒球比赛栈的简述:栈:FILO先进后出,后进先出。从哪入从哪出栈适合解决的问题:可以处理具有完全包含关系的问题(表达式求值,递归,括号匹配,二叉树遍历)。栈的典型应用场景:场景一:操作系统中的线程栈场景二:表达式求值此题思路这道题需要我们对要进行的操作进行准确的判断,判断要进行的操作是什么,然后执行相应的操作即可。因为这道题的操作总是对于最后一到两位数的操作,所以我们选择使用栈。class Solution原创 2021-07-29 19:10:10 · 108 阅读 · 0 评论