摘要:
135、分发糖果 基本思想: 贪心算法 具体实现: 确定一个维度再去确定另一个维度 A确定右边评分大于左边评分(从前向后遍历),和自己的左边孩子比 局部最优:只要右边评分比左边大,右边的孩子就多一个糖果 全局最优:相邻的孩子中,评分高的右孩子获得比左孩子更多的糖果 如果ratings[i] > ra 阅读全文
摘要:
134、加油站 基本思想: 贪心算法 具体实现: 首先如果总油量减去总消耗大于等于零那么一定可以跑完一圈,说明 各个站点的加油站 剩油量rest[i]相加一定是大于等于零的。 每个加油站的剩余量rest[i]为gas[i] - cost[i] i从0开始累加rest[i],和记为curSum,一旦c 阅读全文
摘要:
1005.K次取反后最大化的数组和 基本思想: 贪心算法 具体实现: 局部最优:让绝对值大的负数变为正数 整体最优:整个数组和达到最大 局部最优:让绝对值小的正数变为负数 整体最优:整个数组和达到最大 1.将数组按照绝对值大小从大到小排序 2.遍历数组,遇到负数将其变为正数,同时k-- 3.k还大于 阅读全文
摘要:
122、买卖股票的最佳时机II 基本思想: 贪心算法 具体实现: 局部最优:收集每天的正利润 全局最优:求得最大利润 代码: class Solution { public int maxProfit(int[] prices) { int result = 0; for (int i = 1; i 阅读全文
摘要:
53、最大子序和 基本思想: 贪心算法 具体实现: 1.遍历nums,用count累积子序和 2.count加上nums[i]以后,count变为负数的话 从nums[i+1]开始从0累积count 3.result记录最大子序和 代码: class Solution { public int ma 阅读全文
摘要:
376、摆动序列 基本思想: 贪心算法 具体实现: preDiff存放上一次的差值 curDiff存放当前的差值 只要一正一负,执行count + + 但是preDiff初始化为0,不管怎样比都不会出现一正一负, 所以比较条件为 if ((curDiff > 0 && preDiff <= 0) | 阅读全文
摘要:
455、分发饼干 基本思想: 贪心算法 具体实现: A 优先考虑胃口,先喂饱大胃口 大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子,那么就应该优先满足胃口大的。 1.先将饼干数组和小孩数组排序 2.从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩 B 优先考虑饼干,小饼干先喂 阅读全文
摘要:
51.N皇后 基本思想: 回溯算法 基本思想: 代码随想录抄的 n皇后就是普通组合问题 递归深度就是row控制棋盘的⾏,也就是二维矩阵的高 每⼀层⾥for循环的col控制棋盘的列,⼀⾏⼀列,确定了放置皇后的位置 1.递归参数:二维数组result,棋盘大小n,记录遍历到第几层的row 2.递归终止条 阅读全文
摘要:
131、分割回文串 基本思想: 回溯算法 具体实现: 1.递归终止条件 在代码中,startIndex充当分割线,递归参数需要传入startIndex,表示下一轮递归遍历的起始位置。 2.单层搜索的逻辑 在for (int i = startIndex; i < s.length(); i++)循环 阅读全文
摘要:
17、电话号码的字母组合 基本思路: 回溯 具体实现: 1、字母和数字的映射 2、 (1)递归参数 num记录遍历输入数字到哪一位 (2)递归终止条件 num==输入的数字个数(digits.length) (3)单层遍历逻辑 不是求一个集合中的组合,而是求不同集合中的组合 代码: class So 阅读全文