一、思路 这个区间问题,在两个列表里,互相比较。采用双指针是实现这个过程。 分为两种情况,相交和不相交。相交情况,end取两个区间的最大值。不相交时,看哪个区间大,当前的end是小的区间的最大值。下一对start,end取大的个区间。 什么时候指针移动呢?根据两个当前区间的最大值,小的个指针就往前移。因为一直在进行两个区间的比较,所以趋向于两个指针…
一、思路 通过画图找规律 区间问题先排序 二、问题 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 示例 1: 输入:intervals = [[1,3],[2,6],[8,10…
一、思路 通过画图分析出区间覆盖的条件 区间问题一般通过排序,才能更好的处理 二、问题 给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。 只有当 c
一、思路 题目凸显了有序,一般来说,有序和双指针关联,无序和哈希表关联。 这里就是用双指针解决的 二、问题 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当…
一、思路 分治:将问题拆解为两数之和加第三个数和第四个数 二、问题 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意: 答案中不可以包含重复的四元组。 示例: 给定数组…
一、思路 分治:将问题拆解为两数之和加第三个数 二、问题 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1: 输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1…
一、思路 利用哈希表优化O(n)复杂度的查找,这是工作中常见优化点。 二、问题 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 你可以按任意顺序返回答案。 示例 1: 输入:nums =…
一、思路 与前两道打家取舍相比,结合了二叉树。 选择变成了,偷当前节点,下一步就去偷孙子节点。不偷当前节点,就去偷儿子节点。两个选择一计算,看哪个状态更优。 这儿还得注意动态规划常见的重叠子问题,用哈希表来优化。 二、问题 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根&rd…
一、思路 相比打家取舍一,不能同时偷第一家和最后家。就是多了个选择,要不偷第一家,要不偷最后家。 动态规划问题就是要在题目中找出选择,得出状态。 二、问题 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相…
一、思路 这是典型的动态规划问题。要想得到最优策略,就得在每个选择时刻最出最优决策。选择产生状态,合并状态得到结果。 开始认为,求最优选择时,只计算某一个选择。导致不知道怎么得出某一个。后来发现,应该把所有选择都计算,得到多个状态,取最优的状态。 二、问题 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就…