
leetcode题解
文章平均质量分 55
动态规划、回溯、贪心等算法
GeekTracy
这个作者很懒,什么都没留下…
展开
-
模运算小结
由于只有个位数会影响到乘积的个位数,那么 4⋅9=36 的个位数 6 就是答案。对于 1234+6789 的个位数,同理,4+9=13 的个位数 3 就是答案。根据这两个恒等式,可以随意地对代码中的加法和乘法的结果取模。如果让你计算 1234⋅6789 的个位数,你会如何计算?你能把这个结论抽象成数学等式吗?原创 2023-09-27 15:48:09 · 122 阅读 · 1 评论 -
动态规划03:1681. 最小不兼容性
请你返回将数组分成 k 个子集后,各子集 不兼容性 的 和 的 最小值 ,如果无法分成分成 k 个子集,返回 -1。注意到 [1,1] 和 [2,4] 可以得到更小的和,但是第一个集合有 2 个相同的元素,所以不可行。解释:最优的子集分配为 [1,2],[2,3],[6,8] 和 [1,3]。输入:nums = [6,3,8,1,3,1,2,2], k = 4。输入:nums = [5,3,3,6,3,3], k = 3。输入:nums = [1,2,1,4], k = 2。你需要将这个数组划分到。原创 2023-09-27 15:46:35 · 63 阅读 · 1 评论 -
动态规划02:1186. Maximum Subarray Sum with One Deletion 删除一次得到子数组最大和
上得到一个子数组下标:[a,b] (当然a <= b),当删除下标 i 时,则子数组变为:[a, i - 1) 和 (i + 1, b],则arr[i - 1]和arr[i + 1]这两个数一定在子数组中,其中[a, i - 1)的最大子数组和即为:dp[i - 1],也就是以arr[i -1]结尾的最大子数组和,而 (i + 1, b]区间表示以arr[i + 1]开头的最大子数组,其含义与dp[i]刚好相反。我们应该直接选择 [-1],或者选择 [-1, -1] 再从中删去一个 -1。原创 2023-06-30 15:38:31 · 81 阅读 · 0 评论 -
动态规划01:53. Maximum Subarray 最大子数组
的「连续子数组的最大和」,则dp[i]记录了以每一个元素结尾的「连续子数组的最大和」,那么数组dp[i] (0 <= i < n)中的最大值,即为本题的连续子数组的最大和。那么,dp[i] 跟 dp[i - 1]是什么关系呢?输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。假设数组nums的长度为n,下标则从0到n-1,定义。1.最大和,2.连续子序列,3.至少包含一个元素。输入:nums = [5,4,-1,7,8]原创 2023-06-30 15:09:41 · 80 阅读 · 0 评论 -
89. 格雷编码
方法二:递归的思想,知道递推逻辑,且知道n=0,n=1的结果,递归调用即可得到G(n)若G(n)表示n位格雷编码。原创 2023-06-22 16:02:19 · 189 阅读 · 1 评论