![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode刷题以及一些常见的简单算法
文章平均质量分 50
记录自己在刷题过程中的一些问题与理解
去北极避暑~
这个作者很懒,什么都没留下…
展开
-
【杨辉三角】+ OJ题
由于这种规律是一层一层的,输出每一层时都要以上一层为基础。为此我们可以设置一个二维数组来存储这些数字,以每一层为数列的一行。听不懂的建议直接看下面的图示,更直观。原创 2023-06-19 00:11:14 · 430 阅读 · 21 评论 -
【C语言】-- 猜名次 猜凶手
将每个人从第1到第5来一遍,则一共会产生5^5种可能性,这个只需要一个5层循环即可搞定。但是这样会导致一些不期望出现的结果出现,因为我并没有查重,所以会出现两个人抢名次的情况,也就是两个人或者更多的人名次相同的情况,例如两个第二,三个第三这样的,所以即使满足了条件,也要查看一下五个人的名次是否重复,这个交给一个函数来执行,只要五个人名次并列,那就返回0,否则返回1即可。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。A选手说:B第二,我第三;C选手说:我第一,D第二;D选手说:C最后,我第三;原创 2023-07-22 13:00:00 · 297 阅读 · 10 评论 -
【C语言】-- X型图案
所以我们不妨设两个整型变量left,right。刚开始让left指向第一列,right指向最后一列。当进入第二个for循环(即列循环)里面时 当 j == left || j == right 时输出*,循环完成后left++,right--。然后以此循环。就完成打印了。原创 2023-06-22 16:27:43 · 1390 阅读 · 21 评论 -
653. 两数之和 IV - 输入二叉搜索树
先深度优先搜索遍历整棵二叉树,在遍历的同时在哈希表中存储当前结点的值。对于一个值为 x 的节点,首先检查哈希表中是否存在 k−x 。如果存在对应的元素,则遍历结束返回true;否则,将 x放入到哈希表中,接着进行往下遍历。如果遍历完整棵树都不存在对应的元素,那么该树上不存在两个和为 kkk 的节点。检查哈希表中是否存在 k−x,和将值放入到哈希表中是有先后顺序的。原创 2023-09-30 23:41:17 · 192 阅读 · 0 评论 -
反转字符串 反转字符串 || 反转字符串 |||
/左闭右开public static void reverse(char[] ch,int i,int j) { 翻转函数j = j-1;i++;j--;原创 2023-09-07 10:41:55 · 762 阅读 · 0 评论 -
【LeetCode】 双指针,快慢指针解题
【代码】【LeetCode】 双指针,快慢指针解题。原创 2023-08-24 17:18:43 · 276 阅读 · 1 评论 -
【LeetCode】面试题总结 消失的数字 最小k个数
找第K大的元素 返回小根堆的根节点的值找第K小的元素,返回大根堆的节点的值。原创 2023-08-24 17:04:07 · 390 阅读 · 0 评论 -
【哈希表】HashSet HashMap LeetCode习题
set.add(E);返回值都为键值对 (key , value)map.get(K);返回值为VO(1)O(1)put()get()原创 2023-08-21 13:10:01 · 283 阅读 · 0 评论 -
【LeetCode】对称二叉树 平衡二叉树
最终得到根节点的高度,也就是该树的高度。那么我们可以对求数的高度的函数进行一些改变,当每次求得当前子根节点的左右子树的高度时,进行绝对值求差值,差值小于等于1,则说明当前子根是平衡的,,接着遍历。若差值大于1,说明当前子根已经不平衡了,就不用在往下遍历了,可节省一定的时间消耗。该题的实质还是求树的高度,只要你会写求树的高度的函数代码,那基本上就没问题了,由于我们在求树的高度的时候,是从最下面往上不断的返回。即先判断根节点的左右子树相不相同,相同时,再判断。依次递推,过程中并设置一些不满足相同的条件。原创 2023-08-04 11:16:49 · 179 阅读 · 0 评论 -
【LeetCode】相同的树、 翻转二叉树 、对称二叉树
两棵树相同的条件就是根节点及他们的左右子树的值val相同,结构相同,就是一模一样,那这道题最终还是要同时遍历两个树的,并且还得遍历完,那如果我们在遍历的过程中,通过设置一些不满足相同的树的条件,那么只要遍历到不同的,就返回false。即从根节点开始,翻转根节点的左右子树,再以左孩子节点为当前根节点,翻转左孩子的左右子树,再以右孩子节点为当前根节点,翻转右孩子的左右子树.......依次往下递归,即就把每一个节点当成当前的根节点,再翻转它的左右子树,这样递归就形成了。(可以写一个交换函数)原创 2023-08-04 10:42:17 · 166 阅读 · 0 评论 -
【LeetCode】105. 从前序与中序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树
这道题也是经典的数据结构题了,有时候面试题也会遇到,已知前序与中序的遍历序列,由前序遍历我们可以知道第一个元素就是根节点,而中序遍历的特点就是根节点的左边全部为左子树,右边全部为右子树,再依次遍历前序序列,分割中序序列,不断结合这两个序列,就可以写代码了。详细说明都在代码中。因为前序是根左右,中序是左根右。此题与上个题几乎一模一样,区别在于,是已知中序和后序,而后序的特点是最后一个元素,为根节点,故要对后序序列进行从后往前遍历。剩下的就和前一个代码一样了。因为中序是左根右,后序是左右根。原创 2023-08-04 01:13:58 · 188 阅读 · 0 评论 -
【LeetCode】141. 环形链表 进阶题142. 环形链表 II
思路就是当确定是有环的时候,再加入一个指向头结点的指针,此时让指向相遇点的指针和新加入的(指向头结点)的这两个指针,继续往后以相同“速度”往后走,直到“相遇”(指向同一个节点),此时所指的这个节点就是链表开始入环的第一个节点。思想跟物理知识有点关系,如果有环,则在相对运动过程中,可以相当于慢指针静止,快指针每次走一步,那么最终肯定会相遇。相比上一题,上个题只需要判断有环无环,此题在上个题的基础上还要返回链表开始入环的第一个节点。若无环,则快指针在走的过程中,最后肯定会为null。这是判断无环的条件。原创 2023-08-02 17:23:51 · 269 阅读 · 0 评论 -
【LeetCode】27. 移除元素
快的指针在前面遍历找值不为val的元素的下标,慢的负责接收值不为val的元素,并及时更新数组。原创 2023-08-01 21:58:21 · 363 阅读 · 0 评论 -
【LeetCode】88. 合并两个有序数组
从两个数组的末尾开始比较,类似于直接插入排序。由于没有用额外的空间,所以空间复杂度是。这种java自带的排序的背后是。原创 2023-08-01 21:47:24 · 457 阅读 · 1 评论 -
【LeetCode】二叉树的前序,中序,后序,层序遍历,最近公共祖先
递归根左右左根右左右根。原创 2023-07-29 20:56:30 · 407 阅读 · 0 评论 -
【LeetCode】383. 赎金信
再用这个整形数组跟ransomeNote进行遍历比较,当数组中出现-1时,说明false,否则true.故首先用一个长度为26的整形数组记录magazine里字母出现的次数。由于此题只含有小写字母,并且magazine里面的字母不可重复使用.原创 2023-07-28 22:52:38 · 420 阅读 · 0 评论 -
【LeetCode】28. 找出字符串中第一个匹配项的下标
虽然有点偷懒,但运行结果还不错。主要是怕有时候竞赛会突然忘了一些算法,不过有时候多熟练掌握些自带的函数做题也会事半功倍。原创 2023-07-28 22:36:00 · 370 阅读 · 0 评论