![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 63
蜂蜜柚子茶×
去见你的路上,连风都是甜的
展开
-
Leecode738.单调递增的数字-贪心算法详细思路及扩展
利用贪心算法解决单调递增的数字原创 2022-10-28 16:59:10 · 132 阅读 · 0 评论 -
Leecode135.分发糖果-贪心算法思路详解及最优扩展
贪心算法教会你巧解分发糖果原创 2022-10-28 16:22:00 · 191 阅读 · 0 评论 -
Leecode413等差数列划分-动态规划详细算法思路
这个做法的时间复杂度是 O(n^2) 的,即枚举最后两项的时间复杂度为 O(n)O(n),使用指针 jj 遍历的时间复杂度也为 O(n)O(n),相乘得到总时间复杂度 O(n^2)对于一些运行较慢的语言,该方法可能会超出时间限制,因此我们需要进行优化。如果 nums[i]−nums[i+1]=d,那么在这一轮遍历中,j 会遍历到与上一轮相同的位置,答案增加的次数相同,并且额外多出了nums[i−1],nums[i],nums[i+1] 这一个等差数列,因此有:t_{i+1} = t_i + 1。原创 2022-10-25 17:06:32 · 94 阅读 · 0 评论 -
Leecode19.删除链表的倒数第N个节点-双指针详细思路及解题
双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。输入:head = [1,2,3,4,5], n = 2。fast和slow同时移动,直到fast指向末尾,如题。输入:head = [1,2], n = 1。输入:head = [1], n = 1。思路是这样的,但要注意一些细节。输出:[1,2,3,5]原创 2022-10-25 17:04:48 · 59 阅读 · 0 评论 -
Leecode64.最小路径和-动态规划详细思路及题解
给定一个包含非负整数的*m* x *n*网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。**说明:**每次只能向下或者向右移动一步。原创 2022-10-25 16:58:13 · 87 阅读 · 0 评论 -
Leecode27. 移除元素-双指针详细算法思路
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。原创 2022-10-22 21:53:08 · 93 阅读 · 0 评论 -
Leecode474.一和零 动态规划之01背包详细算法思路
最多有 5 个 0 和 3 个 1 的最大子集是 {“10”,“0001”,“1”,“0”} ,因此答案是 4。示例 2: 输入:strs = [“10”, “0”, “1”], m = 1, n = 1 输出:2 解释:最大的子集是 {“0”, “1”} ,所以答案是 2。输入:strs = [“10”, “0001”, “111001”, “1”, “0”], m = 5, n = 3 输出:4。以输入:[“10”,“0001”,“111001”,“1”,“0”],m = 3,n = 3为例。原创 2022-10-20 20:49:50 · 77 阅读 · 0 评论 -
leecode416.分割等和子集-动态规划详细题解及算法思路
动态规划之01背包问题原创 2022-10-20 16:46:29 · 245 阅读 · 0 评论 -
Leecode1049.最后一块石头的重量-动态规划详细题解及算法思路
有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x原创 2022-10-20 16:43:48 · 465 阅读 · 0 评论 -
DFS深度优先搜索算法详解
【代码】DFS深度优先搜索算法详解。原创 2022-10-19 21:31:55 · 274 阅读 · 1 评论 -
Leecode1014.最佳观光组合 详细题解及算法思路
题目:一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,那么得分取决与 values[i]+i与values[j]-j的和,解释:i = 0, j = 2, values[i] + values[j] + i - j = 8 + 5 + 0 - 2 = 11。确定dp数组的定义:该位置的values[i]+i的值。输入:values = [8,1,5,2,6]输入:values = [1,2]找出dp数组的递推公式。原创 2022-10-18 20:23:03 · 94 阅读 · 0 评论 -
Leecode1567.乘积为正数的最长子数组长度详细题解及算法思路
判断的情况比较复杂,可以跳出往常思维,使用两个dp数组,分别记录前i-1乘积为正数,前i-1成绩为负数的情况,可以发现,nums[i]可以大于0,也可以小于0,也可以等于0, 那么需要判断的情况就比较复杂,解释:乘积为正数的最长子数组是 [-1,-2] 或者 [-2,-3]。解释:最长乘积为正数的子数组为 [1,-2,-3] ,乘积为 6。,那么这样就需要优化dp数组了,如果不了解,可以参考--------输入:nums = [0,1,-2,-3,-4]输入:nums = [-1,-2,-3,0,1]原创 2022-10-18 19:37:02 · 170 阅读 · 0 评论