随笔分类 -  leetcode

记录日常做题解法和思路
摘要:思路: 总体来说二叉树讲究的就是一套完整的解法体系以及框架套路,真正弄明白的人不多,大部分人会在递归遍历时被程序搞得晕头转向。 阅读全文
posted @ 2022-07-19 22:35 抗争的小青年 阅读(76) 评论(0) 推荐(0)
摘要:力扣今日题-565.数组嵌套 简单说下思路,其实题目要求就是求最大的环,我们可以在改数组上遍历每个元素,并求出以该元素为首最大的环,然后用一个值来保存结果并输出,同时使用visitd数组进行减枝。 阅读全文
posted @ 2022-07-17 18:19 抗争的小青年 阅读(57) 评论(0) 推荐(0)
摘要:拿到题,一看到数组中和为k,我就想到了用前缀和来做。定义一个前缀和函数perSum,长度为num+1。perSum[i],表示sum[0]到sum[i-1]这些值的和。那么很容易就知道sum[i]到sum[j]这个区间的和为perSum[j+1]-perSum[i],直接看代码。 阅读全文
posted @ 2022-07-14 22:38 抗争的小青年 阅读(53) 评论(0) 推荐(0)
摘要:思路: 方法一:其实就是动态规划,找状态转移方程,确定dp数组的含义。一开始的代码可能性能优化不太好,就可以写一个备忘录,或者字典优化时间或者空间复杂度。 方法二:分别使用i,j,k,满足条件。 阅读全文
posted @ 2022-07-09 10:16 抗争的小青年 阅读(68) 评论(0) 推荐(0)
摘要:1217. 玩筹码 思路:根据题意,3->1时cost=0,当2->1时cost=1,可以得知题目规律其实就是比较奇偶数的个数,并输出最小值。 阅读全文
posted @ 2022-07-08 22:43 抗争的小青年 阅读(49) 评论(0) 推荐(0)
摘要:729. 我的日程安排表 I 二分 先将所有已经预定的序列进行排序,然后依次遍历区间,看某个区间的left1,是否大于end 12会和3,5,10进行比较,这是会发现没有比它大的区间,这时就该考虑往它们后面插入了。 未找到:那就和最后一个区间的right1比较,看最后一个区间的right1是否小于插 阅读全文
posted @ 2022-07-05 14:11 抗争的小青年 阅读(72) 评论(0) 推荐(0)
摘要:1200. 最小绝对差 难度:简单:happy: 思路:题目不是让求最小绝对值差吗?我们可以先按照升序进行排序,然后让下标从第二个值开始,依次去减前一个元素。并用一个值min保存他们两个的差值,同时让它于我们之前设置的一个元素min_value(永远保存最小值)进行比较,如果min=min_valu 阅读全文
posted @ 2022-07-04 07:47 抗争的小青年 阅读(78) 评论(0) 推荐(0)
摘要:241. 为运算表达式设计优先级 这种应该算作分治吧,动态规划一般会有最优子结构的,二分治是将大问题分解成小问题,分而治之嘛!然后再将小问题的解合并成大问题的解。 class Solution { HashMap<String, List<Integer>> memo = new HashMap<> 阅读全文
posted @ 2022-07-01 22:37 抗争的小青年 阅读(75) 评论(0) 推荐(0)
摘要:难度:中等😕这也能叫中等难度? 可能想出来是比较难吧,总之今天的题比较水啦。 阅读全文
posted @ 2022-06-29 08:09 抗争的小青年 阅读(47) 评论(0) 推荐(0)
摘要:324. 摆动排序 II (双指针做法) 思路:定义了两个指针,分别指向大的一组值,和小的一组值的最右边。再重新排值是,就需要先放小的,再放大的,这样才符合题意。 阅读全文
posted @ 2022-06-28 19:58 抗争的小青年 阅读(76) 评论(0) 推荐(0)
摘要:522. 最长特殊序列 II 思路:子序列,不是字串,所以不需要注意是否连续。s的特殊序列可以他通过删去字符串s中的某些字符实现。 题目翻译:给出一个字符串数组,在里面找出字符串满足当前字符串不是字符串数组中其他字符串的子序列,返回满足条件的字符串中 最长的字符串的长度 使用双层循环,外层枚举每一个 阅读全文
posted @ 2022-06-27 22:56 抗争的小青年 阅读(64) 评论(0) 推荐(0)
摘要:104. 二叉树的最大深度 难度:简单 思路:定义两个变量,分别用来保存二叉树的最大深度,和当前遍历的深度。然后定义一个traverse函数,用来对二叉树进行遍历。 /** * Definition for a binary tree node. * public class TreeNode { 阅读全文
posted @ 2022-06-24 16:50 抗争的小青年 阅读(35) 评论(0) 推荐(0)
摘要:想法很简单,分别遍历左右子数(前序遍历),到达最大深度时第一次遇到的节点就是`最底层最左边`的节点。 阅读全文
posted @ 2022-06-22 09:08 抗争的小青年 阅读(55) 评论(0) 推荐(0)
摘要:难度是`简单`。不错,又可以增强信心了!:haircut: 阅读全文
posted @ 2022-06-21 08:46 抗争的小青年 阅读(46) 评论(0) 推荐(0)
摘要:一开始拿到题后,我看了不下5遍,老是想不通题干的`出现次数最多的子树元素和`与`多个元素出现的次数相同`的意思,一会`子树元素和`,一会`多个元素`的,差点把我搞晕了。经过我的分析,题干把`多个元素出现的次数`换成`字数元素和出现的次数`可能会好理解一些。 阅读全文
posted @ 2022-06-20 21:41 抗争的小青年 阅读(58) 评论(0) 推荐(0)
摘要:926. 将字符串翻转到单调递增 思路: 动态规划,状态转移方程: 当出现0的时候,可以对0进行+1操作或使得前面的所有1变成0, 状态转移方程 ret=min(ret + 1, num_1); class Solution { public int minFlipsMonoIncr(String 阅读全文
posted @ 2022-06-11 21:27 抗争的小青年 阅读(60) 评论(0) 推荐(0)
摘要:1037. 有效的回旋镖 思路:利用三角形面积公式,通过三个点的坐标来求三角形的面积是否为零,如果为零,就返回false如果不为零,返回true. class Solution { public boolean isBoomerang(int[][] p) { return (p[0][0]*(p[ 阅读全文
posted @ 2022-06-08 12:19 抗争的小青年 阅读(50) 评论(0) 推荐(0)
摘要:450. 删除二叉搜索树中的节点 思路: 情况一 A 恰好是末端节点,两个子节点都为空,那么它可以当场去世了: 情况二 A 只有一个非空子节点,那么它要让这个孩子接替自己的位置: 情况三 A 有两个子节点,麻烦了,为了不破坏 BST 的性质,A 必须找到左子树中最大的那个节点或者右子树中最小的那个节 阅读全文
posted @ 2022-06-02 11:57 抗争的小青年 阅读(92) 评论(0) 推荐(0)
摘要:1. 两数之和 暴力解法:通过两个for循环逐步遍历,判断是否有符合条件的答案 1.初始有对数据进行判断,比如数字比目标值大就不用判断,直接跳过,其实是不行的,因为里面有负数,最后相减也可以得出正确答案,这是最初版本。 class Solution { public int[] twoSum(int 阅读全文
posted @ 2022-05-31 10:41 抗争的小青年 阅读(83) 评论(0) 推荐(0)
摘要:面试题 17.11. 单词距离 解决思路:定义三个变量ars(用来计算距离),indx1(用来保存单词1的下标),indx2(用来保存单词2的下标) 使用函数: .equals()::large_blue_circle:equals用来比较的是两个对象的内容是否相等。 Math.min()::red 阅读全文
posted @ 2022-05-27 10:21 抗争的小青年 阅读(51) 评论(0) 推荐(0)