Leetcode笔记
weixin_44580808
这个作者很懒,什么都没留下…
展开
-
双指针leetcode167 633
给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例 1:输入:numbers = [2,7,11,15], target =原创 2021-08-25 21:35:52 · 110 阅读 · 0 评论 -
LeetCode刷题笔记17--动态规划Ⅰ
LeetCode刷题笔记17–动态规划Ⅰ动态规划标准流程:典型的动态规划,以下按照标准流程解题。状态定义:设动态规划列表 dpdp ,dp[i]dp[i] 代表前 ii 个房子在满足条件下的能偷窃到的最高金额。转移方程:设: 有 nn 个房子,前 nn 间能偷窃到的最高金额是 dp[n]dp[n] ,前 n-1n−1 间能偷窃到的最高金额是 dp[n-1]dp[n−1] ,此时向这些房子后加一间房,此房间价值为 numnum ;加一间房间后: 由于不能抢相邻的房子,意味着抢第 n+1n+1 间原创 2020-08-10 23:48:28 · 117 阅读 · 0 评论 -
LeetCode刷题笔记(16)-BacktrackingⅣ
LeetCode刷题笔记(16)-BacktrackingⅣ背景今天结束了回溯,也结束了搜索这一板块,下一步就是动态规划啦。39、组合求和given candidate set [2, 3, 6, 7] and target 7,A solution set is:[[7],[2, 2, 3]]public List<List<Integer>> combinationSum(int[] candidates, int target) { List<Lis原创 2020-08-04 23:52:33 · 120 阅读 · 0 评论 -
LeetCode刷题笔记(15)-BackStrackingⅢ
LeetCode刷题笔记(15)-BackStrackingⅢ46、排序*给定一个 没有重复 数字的序列,返回其所有可能的全排列。输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]public List<List<Integer>> permute(int[] nums) { List<List<Integer>> permutes原创 2020-08-04 22:22:43 · 109 阅读 · 0 评论 -
LeetCode(14)刷题笔记--BackStrackingⅡ
LeetCode(14)刷题笔记–BackStrackingⅡ247、返回二叉树所有路径1/ 2 35[“1->2->5”, “1->3”]public List<String> binaryTreePaths(TreeNode root) { List<String> paths = new ArrayList<>(); if (root == null) { return paths; }原创 2020-08-01 22:06:14 · 69 阅读 · 0 评论 -
LeetCode刷题笔记(13)-BacktrackingⅠ
LeetCode刷题笔记(13)-BacktrackingⅠBacktracking含义Backtracking(回溯)属于 DFS。普通 DFS 主要用在 可达性问题 ,这种问题只需要执行到特点的位置然后返回即可。而 Backtracking 主要用于求解 排列组合 问题,例如有 { ‘a’,‘b’,‘c’ } 三个字符,求解所有由这三个字符排列得到的字符串,这种问题在执行到特定的位置返回之后还会继续执行求解过程。因为 Backtracking 不是立即返回,而要继续求解,因此在程序实现时,需要原创 2020-07-28 22:35:32 · 149 阅读 · 0 评论 -
LeetCode刷题笔记(12)DFS深度优先算法Ⅱ
LeetCode刷题笔记(12)DFS深度优先算法Ⅱ背景好几天没刷题了,出差做作业然后工作比较忙,应该改正。今天是LeetCode的深度优先算法第二部分,也结束了。130、填充封闭区域给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X从原创 2020-07-27 22:41:25 · 81 阅读 · 0 评论 -
LeetCode刷题笔记(11)-DFS深度优先搜索算法Ⅰ
LeetCode刷题笔记(11)-DFS深度优先搜索算法ⅠBFS深度优先搜索定义广度优先搜索一层一层遍历,每一层得到的所有新节点,要用队列存储起来以备下一层遍历的时候再遍历。而深度优先搜索在得到一个新节点时立即对新节点进行遍历:从节点 0 出发开始遍历,得到到新节点 6 时,立马对新节点 6 进行遍历,得到新节点 4;如此反复以这种方式遍历新节点,直到没有新节点了,此时返回。返回到根节点 0 的情况是,继续对根节点 0 进行遍历,得到新节点 2,然后继续以上步骤。从一个节点出发,使用 DFS 对一个原创 2020-07-22 22:51:47 · 177 阅读 · 0 评论 -
LeetCode刷题笔记(10)-BFS广度优先搜索
LeetCode刷题笔记(10)-BFS广度优先搜索BFS模板:void BFS(){ 定义队列; 定义备忘录,用于记录已经访问的位置; 判断边界条件,是否能直接返回结果的。 将起始位置加入到队列中,同时更新备忘录。 while (队列不为空) { 获取当前队列中的元素个数。 for (元素个数) { 取出一个位置节点。 判断是否到达终点位置。 获取它对原创 2020-07-21 23:03:40 · 465 阅读 · 0 评论 -
LeetCode刷题笔记(8)
LeetCode刷题笔记(8)二分查找背景因为这两天比较忙,没怎么刷题,非常有罪恶感,今天开始继续刷题。今天主攻的是二分查找的四道题,感觉还是比较简单的,的确非常高效率的一个算法。278、第一个错误版本你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool原创 2020-07-15 23:28:20 · 77 阅读 · 0 评论 -
LeetCode刷题笔记(6)
LeetCode刷题笔记(6)605、种花今天继续刷了贪心算法的四道题目,贪心算法在算法题里面是一种普遍运用的思想,先假设一种情况为最好的情况,如果发现有更优的答案则替换,题目做起来还是比较得心应手的。假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返原创 2020-07-10 21:59:51 · 147 阅读 · 0 评论 -
LeetCode刷题笔记(5)
LeetCode刷题笔记(5)背景今天主要刷的还是贪心算法的题目,应该是这个部分的题目本身就不难吧,感觉答案没有那么难以理解了。今天看了四道题目,其中也是第一次做hard级的题目,嗯,加油。435、去除不重复区域题目:计算让一组区间不重叠所需要移除的区间个数。给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。解题思路:先计算最多能组成的不重叠区间个数,然后用区原创 2020-07-09 23:01:14 · 117 阅读 · 0 评论 -
LeetCode刷题笔记(4)
LeetCode刷题笔记(4)背景前两天胃不舒服,休息了两天,哎,不过也稍微复习了下之前的笔记,今天大概两道题目。455、分配饼干贪心算法解题思路:我们只在每次分配时饼干时选择一种看起来是当前最优的分配方法,但无法保证这种局部最优的分配方法最后能得到全局最优解。我们假设能得到全局最优解,并使用反证法进行证明,即假设存在一种比我们使用的贪心策略更优的最优策略。如果不存在这种最优策略,表示贪心策略就是最优策略,得到的解也就是全局最优解。public class findContextChi原创 2020-07-07 23:37:33 · 105 阅读 · 0 评论 -
LeetCode刷题笔记(3)
LeetCode刷题笔记(3)背景今天主要是刷了两道kth排序的题目,中等难度,主要运用了HashMap,还是比较难的,主要考虑java中映射的概念。215、在未排序的数组中找到第 k 个最大的元素。方法一:基于快速排序的选择方法快速排序算法过程:分解: 将数组 a[l⋯r] 「划分」成两个子数组a[l⋯q−1]、a[q+1⋯r],使得a[l⋯q−1] 中的每个元素小于等于 a[q],且a[q] 小于等于 a[q+1⋯r] 中的每个元素。其中,计算下标 q 也是「划分」过程的一部分。解决: 通原创 2020-07-03 23:41:51 · 113 阅读 · 0 评论 -
Leetcode刷题总结(1)
Leetcode总结(1)背景今天是第一天刷Leetcode,总题量:4,模块:双指针题目总结26、已经排序的数组去除重复的元素public int removeDuplicates(int[] nums) {if (nums.length == 0) return 0;int i = 0;for (int j = 1; j < nums.length; j++) {if (nums[i] != nums[j]) {i++;nums[i] = nums[j];}}retur原创 2020-07-01 20:52:24 · 142 阅读 · 0 评论