LeetCode刷题以及一些常见的简单算法
记录自己在刷题过程中的一些问题与理解
去北极避暑~
这个作者很懒,什么都没留下…
展开
-
653. 两数之和 IV - 输入二叉搜索树
先深度优先搜索遍历整棵二叉树,在遍历的同时在哈希表中存储当前结点的值。对于一个值为 x 的节点,首先检查哈希表中是否存在 k−x 。如果存在对应的元素,则遍历结束返回true;否则,将 x放入到哈希表中,接着进行往下遍历。如果遍历完整棵树都不存在对应的元素,那么该树上不存在两个和为 kkk 的节点。检查哈希表中是否存在 k−x,和将值放入到哈希表中是有先后顺序的。原创 2023-09-30 23:41:17 · 185 阅读 · 0 评论 -
反转字符串 反转字符串 || 反转字符串 |||
/左闭右开public static void reverse(char[] ch,int i,int j) { 翻转函数j = j-1;i++;j--;原创 2023-09-07 10:41:55 · 746 阅读 · 0 评论 -
【LeetCode】 双指针,快慢指针解题
【代码】【LeetCode】 双指针,快慢指针解题。原创 2023-08-24 17:18:43 · 266 阅读 · 1 评论 -
【LeetCode】面试题总结 消失的数字 最小k个数
找第K大的元素 返回小根堆的根节点的值找第K小的元素,返回大根堆的节点的值。原创 2023-08-24 17:04:07 · 384 阅读 · 0 评论 -
【哈希表】HashSet HashMap LeetCode习题
set.add(E);返回值都为键值对 (key , value)map.get(K);返回值为VO(1)O(1)put()get()原创 2023-08-21 13:10:01 · 266 阅读 · 0 评论 -
【LeetCode】对称二叉树 平衡二叉树
最终得到根节点的高度,也就是该树的高度。那么我们可以对求数的高度的函数进行一些改变,当每次求得当前子根节点的左右子树的高度时,进行绝对值求差值,差值小于等于1,则说明当前子根是平衡的,,接着遍历。若差值大于1,说明当前子根已经不平衡了,就不用在往下遍历了,可节省一定的时间消耗。该题的实质还是求树的高度,只要你会写求树的高度的函数代码,那基本上就没问题了,由于我们在求树的高度的时候,是从最下面往上不断的返回。即先判断根节点的左右子树相不相同,相同时,再判断。依次递推,过程中并设置一些不满足相同的条件。原创 2023-08-04 11:16:49 · 174 阅读 · 0 评论 -
【LeetCode】相同的树、 翻转二叉树 、对称二叉树
两棵树相同的条件就是根节点及他们的左右子树的值val相同,结构相同,就是一模一样,那这道题最终还是要同时遍历两个树的,并且还得遍历完,那如果我们在遍历的过程中,通过设置一些不满足相同的树的条件,那么只要遍历到不同的,就返回false。即从根节点开始,翻转根节点的左右子树,再以左孩子节点为当前根节点,翻转左孩子的左右子树,再以右孩子节点为当前根节点,翻转右孩子的左右子树.......依次往下递归,即就把每一个节点当成当前的根节点,再翻转它的左右子树,这样递归就形成了。(可以写一个交换函数)原创 2023-08-04 10:42:17 · 159 阅读 · 0 评论 -
【LeetCode】105. 从前序与中序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树
这道题也是经典的数据结构题了,有时候面试题也会遇到,已知前序与中序的遍历序列,由前序遍历我们可以知道第一个元素就是根节点,而中序遍历的特点就是根节点的左边全部为左子树,右边全部为右子树,再依次遍历前序序列,分割中序序列,不断结合这两个序列,就可以写代码了。详细说明都在代码中。因为前序是根左右,中序是左根右。此题与上个题几乎一模一样,区别在于,是已知中序和后序,而后序的特点是最后一个元素,为根节点,故要对后序序列进行从后往前遍历。剩下的就和前一个代码一样了。因为中序是左根右,后序是左右根。原创 2023-08-04 01:13:58 · 178 阅读 · 0 评论 -
【LeetCode】141. 环形链表 进阶题142. 环形链表 II
思路就是当确定是有环的时候,再加入一个指向头结点的指针,此时让指向相遇点的指针和新加入的(指向头结点)的这两个指针,继续往后以相同“速度”往后走,直到“相遇”(指向同一个节点),此时所指的这个节点就是链表开始入环的第一个节点。思想跟物理知识有点关系,如果有环,则在相对运动过程中,可以相当于慢指针静止,快指针每次走一步,那么最终肯定会相遇。相比上一题,上个题只需要判断有环无环,此题在上个题的基础上还要返回链表开始入环的第一个节点。若无环,则快指针在走的过程中,最后肯定会为null。这是判断无环的条件。原创 2023-08-02 17:23:51 · 257 阅读 · 0 评论 -
【LeetCode】27. 移除元素
快的指针在前面遍历找值不为val的元素的下标,慢的负责接收值不为val的元素,并及时更新数组。原创 2023-08-01 21:58:21 · 355 阅读 · 0 评论 -
【LeetCode】88. 合并两个有序数组
从两个数组的末尾开始比较,类似于直接插入排序。由于没有用额外的空间,所以空间复杂度是。这种java自带的排序的背后是。原创 2023-08-01 21:47:24 · 406 阅读 · 1 评论 -
【LeetCode】二叉树的前序,中序,后序,层序遍历,最近公共祖先
递归根左右左根右左右根。原创 2023-07-29 20:56:30 · 396 阅读 · 0 评论 -
【LeetCode】383. 赎金信
再用这个整形数组跟ransomeNote进行遍历比较,当数组中出现-1时,说明false,否则true.故首先用一个长度为26的整形数组记录magazine里字母出现的次数。由于此题只含有小写字母,并且magazine里面的字母不可重复使用.原创 2023-07-28 22:52:38 · 409 阅读 · 0 评论 -
【LeetCode】28. 找出字符串中第一个匹配项的下标
虽然有点偷懒,但运行结果还不错。主要是怕有时候竞赛会突然忘了一些算法,不过有时候多熟练掌握些自带的函数做题也会事半功倍。原创 2023-07-28 22:36:00 · 334 阅读 · 0 评论