自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 Leecode88.合并两个有序数组(不使用额外数组)双指针算法详解及优化

合并两个有序数组(不使用额外数组)双指针,看不懂找我

2022-11-03 12:28:33 251 1

原创 Leecode738.单调递增的数字-贪心算法详细思路及扩展

利用贪心算法解决单调递增的数字

2022-10-28 16:59:10 153

原创 Leecode135.分发糖果-贪心算法思路详解及最优扩展

贪心算法教会你巧解分发糖果

2022-10-28 16:22:00 209

原创 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 116

原创 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 65

原创 Leecode64.最小路径和-动态规划详细思路及题解

给定一个包含非负整数的*m* x *n*网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。**说明:**每次只能向下或者向右移动一步。

2022-10-25 16:58:13 111

原创 Leecode27. 移除元素-双指针详细算法思路

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。

2022-10-22 21:53:08 111

原创 Leecode518.零钱兑换Ⅱ动态规划之完全背包详细算法思路

输入: amount = 5, coins = [1, 2, 5] 输出: 4 解释: 有四种方式可以凑成总金额: 5=5 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1。dp[j] (考虑coins[i]的组合总和) 就是所有的dp[j - coins[i]](不考虑coins[i])相加。下标非0的dp[j]初始化为0,这样累计加dp[j - coins[i]]的时候才不会影响真正的dp[j]背包容量的每一个值,都是经过 1 和 5 的计算,包含了{1, 5} 和 {5, 1}两种情况。

2022-10-20 20:59:13 174

原创 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 83

原创 leecode416.分割等和子集-动态规划详细题解及算法思路

动态规划之01背包问题

2022-10-20 16:46:29 268

原创 Leecode1049.最后一块石头的重量-动态规划详细题解及算法思路

有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x

2022-10-20 16:43:48 501

原创 DFS深度优先搜索算法详解

【代码】DFS深度优先搜索算法详解。

2022-10-19 21:31:55 317 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 104

原创 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 183

原创 Leecode152.乘积最大子数组详细题解及算法思路

利用转变的动态数组解答Leecode152.乘积最大子数组详细题解及算法思路

2022-10-17 21:21:10 204

原创 Leecode121.买卖股票的最佳时机详细题解及算法思路

利用贪心巧解Leecode121.买卖股票的最佳时机,提供详细题解及算法思路

2022-10-17 21:09:50 79

原创 Leecode63.不同路径Ⅱ-详细题解及算法思路

利用动态规划三大步骤解Leecode63.不同路径Ⅱ

2022-10-17 20:53:58 260

原创 Leecode 918环形子数组最大和-详细题解及算法思路

Leecode 918环形子数组最大和-详细题解及算法思路

2022-10-16 20:32:58 316

原创 Leecode 53.最大子数组和详细题解及算法思路

Leecode 53.最大子数组和解题思路及算法详

2022-10-16 15:41:16 62

原创 Leecode 213.打家劫舍Ⅱ详细题解及算法思路

Leecode213.打家劫舍Ⅱ,利用动态规划三大步骤

2022-10-16 13:12:09 86

原创 Leecode 740.删除数并获取得点数详细题解及算法思路

熟练掌握动态规划三大步骤应对Leecode

2022-10-16 11:41:53 75

原创 Leecode198.打家劫舍详细题解及算法思路

用动态规划三大步骤轻松应对

2022-10-16 11:36:41 76

原创 动态规划算法详解及案例讲解

动态规划三大步骤应对Leecode

2022-10-16 11:08:53 132

原创 Leecode 42.接雨水详细解题思路及算法思路

Leecode 42.接雨水详细解题及算法思路

2022-10-15 19:58:26 73

原创 # Leecode11.盛最多水的容器详细题解及算法思路

​ 说明:你不能倾斜容器。示例1:输入:height = [1,1]输出:1。

2022-10-15 19:55:28 103

原创 a剑指 Offer II 019. 最多删除一个字符得到回文a详解分析

运用双指针算法思维

2022-10-10 21:51:19 83

原创 PAT乙级1001(解题思路)

对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?执行一次,计数器加一次,到1为止,输出结果,这道题就完事了。

2022-09-19 14:53:26 42

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除