随笔分类 -  算法

摘要:1、静态链表初始化 head指向-1代表当前为空链表,pool指向下一个可用空间(在数组下标为2的空间),2指向3,3指向4,最后的指向0表示没有下一个节点,以此链接起来。 2、实现代码 #include<stdio.h> #include<malloc.h> #define MAX_SIZE 20 阅读全文
posted @ 2024-09-13 13:37 颜欢兮 阅读(24) 评论(0) 推荐(0)
摘要:343. 整数拆分 题目链接:343. 整数拆分 - 力扣(LeetCode) 思路 动规五部曲,分析如下: 确定dp数组(dp table)以及下标的含义 dp[i]:分拆数字 i,可以得到的最大乘积为dp[i]。 确定递推公式 可以想 dp[i]最大乘积是怎么得到的呢? 其实可以从1遍历j,然后 阅读全文
posted @ 2023-03-13 13:29 颜欢兮 阅读(33) 评论(0) 推荐(0)
摘要:62.不同路径 题目链接:62. 不同路径 - 力扣(LeetCode) 思路 确定dp数组(dp table)以及下标的含义 dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。 确定递推公式 dp[i][j] = dp[i - 1][j] + dp[i][ 阅读全文
posted @ 2023-03-12 20:41 颜欢兮 阅读(19) 评论(0) 推荐(0)
摘要:动态规划理论基础 动态规划五步曲: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 509. 斐波那契数 题目链接:509. 斐波那契数 - 力扣(LeetCode) 思路 确定dp数组以及下标的含义 dp[i]的定义为:第i个数的斐 阅读全文
posted @ 2023-03-10 20:01 颜欢兮 阅读(24) 评论(0) 推荐(0)
摘要:738.单调递增的数字 题目链接:738. 单调递增的数字 - 力扣(LeetCode) 思路 将数字转换成字符数组形式,然后从后向前遍历,当遇到当前这个数大于后一个数的时候,这个数减一,他的后一个数赋为9,这也是贪心策略。 在代码实现上,可以设置一个start变量来记录需要变为 9 的起始位置。 阅读全文
posted @ 2023-03-09 22:40 颜欢兮 阅读(24) 评论(0) 推荐(0)
摘要:435. 无重叠区间 题目链接:435. 无重叠区间 - 力扣(LeetCode) 思路 这道题首先进行排序,使得相邻的区间紧挨在一起。按左边界或者右边界都可以。 其次定义一个变量result记录重叠的数目,当确定区间有重叠时,result++,同时取这两个区间右边界的最小的一个即可。 代码 按右边 阅读全文
posted @ 2023-03-08 19:29 颜欢兮 阅读(36) 评论(0) 推荐(0)
摘要:860.柠檬水找零 题目链接:860. 柠檬水找零 - 力扣(LeetCode) 思路 这道题有如下三种情况: 情况一:账单是5,直接收下。 情况二:账单是10,消耗一个5,增加一个10 情况三:账单是20,优先消耗一个10和一个5,如果不够,再消耗三个5 所以局部最优:遇到账单20,优先消耗美元1 阅读全文
posted @ 2023-03-07 19:12 颜欢兮 阅读(28) 评论(0) 推荐(0)
摘要:1005.K次取反后最大化的数组和 题目链接:1005. K 次取反后最大化的数组和 - 力扣(LeetCode) 思路 贪心思路,局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。 当数组中的负数全部取反后,K仍然大于0时,这时又是一个贪心:局部最优:只找数值最小 阅读全文
posted @ 2023-03-07 15:50 颜欢兮 阅读(12) 评论(0) 推荐(0)
摘要:把利润分解为每天为单位的维度,而不是从0天到第3天整体去考虑!122.买卖股票的最佳时机II 题目链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode) 思路 这道题使用贪心算法思路为:把利润分解为每天为单位的维度,而不是从0天到第3天整体去考虑! 将数据画成折现图 根据图中可以很明 阅读全文
posted @ 2023-03-04 14:44 颜欢兮 阅读(27) 评论(0) 推荐(0)
摘要:455.分发饼干 题目链接:455. 分发饼干 - 力扣(LeetCode) 思路 这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。 也可以换一个思路,小饼干先喂饱小胃口。 代码 1 class Solution { 2 // 思路1:优先考虑饼干,小 阅读全文
posted @ 2023-03-04 00:19 颜欢兮 阅读(25) 评论(0) 推荐(0)
摘要:491.递增子序列 题目链接:491. 递增子序列 - 力扣(LeetCode) 思路 这道题和 90.集合II 类似。不同的是这道题不能通过排序使相同元素聚集在一起,因此不能使用 used数组 或者 startIndex 的方法去重。 在这道题中,虽然我们不可以让相同元素聚集在一起,但是我们可以通 阅读全文
posted @ 2023-03-01 17:36 颜欢兮 阅读(19) 评论(0) 推荐(0)
摘要:93.复原IP地址 题目链接:93. 复原 IP 地址 - 力扣(LeetCode) 思路 复原ip地址,本质上还是切割问题,但是有了不少的条件: 只能切成4段。 每一段的长度如果大于1,那么就不能是0开头。如果长度为1,可以是0。 每一段的数字在0~255之间。 于是我们对之前切割回文的代码进行修 阅读全文
posted @ 2023-02-28 23:43 颜欢兮 阅读(21) 评论(0) 推荐(0)
摘要:39. 组合总和 题目链接:39. 组合总和 - 力扣(LeetCode) 思路 既然题目说可以数组中的数可以无限制重复被选取,那么说明在选取该元素的下一个分支也可以继续使用。 选取和剪枝过程如图: 注意:为什么取了2以后,剩余元素为5,3。因为如果剩余元素为2,5,3的话在后续操作中会出现重复值的 阅读全文
posted @ 2023-02-27 23:17 颜欢兮 阅读(29) 评论(0) 推荐(0)