摘要: 题目 1567. 乘积为正数的最长子数组长度 解法 解法一 算是贪心吧? 遍历的方向从前往后也是一样的道理,只不过当时写代码的时候从后往前想的,就这么写了 class Solution { /** * @param Integer[] $nums * @return Integer */ funct 阅读全文
posted @ 2022-01-08 17:09 吴丹阳-V 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 题目 152. 乘积最大子数组 解法 每次取一个最小的,一个最大的 如果最小的乘积和当前的值乘完之后变成了正数反而变大了,那最大值就是它 class Solution { /** * @param Integer[] $nums * @return Integer */ function maxPr 阅读全文
posted @ 2022-01-08 17:08 吴丹阳-V 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 题目 53. 最大子数组和 解法 #dp 第一版写的时候,可以加一个 dp 数组,保存每个节点的最大值 dp 公式 $$ f_n= \begin{cases} max(nums[n]+f_{n-1}, nums[n]) & n>=1 \ nums[n], & n=0 \end{cases} $$ c 阅读全文
posted @ 2022-01-08 17:07 吴丹阳-V 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 题目 918. 环形子数组的最大和 解法 求两个值,一个是子数组最小值,一个是子数组最大值 环形数组如果没有跨最后一个那就是子数组最大值 如果跨了最后一个那就是 总数- 子数组最小值 为什么是 total-min ? 如果成环状,那么数组将被分成两段:头和尾 总数是不变的,如果其他部分加起来最大,那 阅读全文
posted @ 2022-01-08 17:07 吴丹阳-V 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 题目 45. 跳跃游戏 II 解法 遍历的同时记录 stepCnt 只有在第一个 max 遍历完之后,才可以增加 stepCnt class Solution { /** * @param Integer[] $nums * @return Boolean */ function jump($num 阅读全文
posted @ 2022-01-08 17:06 吴丹阳-V 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 题目 55. 跳跃游戏 解法 最终目标是求最大跳跃距离,如果最后发现可以跳到比最后一格要多,那么也就可以跳到最后一格 可以按照两种思想理解 贪心,每次求最大的跳跃距离 dp 公式: $f_n=\left { \begin{array}{lr} max(f_{n-1}, nums[n] + n), & 阅读全文
posted @ 2022-01-08 17:05 吴丹阳-V 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 题目 740. 删除并获得点数 解法 class Solution { /** * @param Integer[] $nums * @return Integer */ function deleteAndEarn($nums) { $sum = []; $max = 0; foreach ($n 阅读全文
posted @ 2022-01-08 17:04 吴丹阳-V 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 打家劫舍模板: function rob($nums) { $first = $nums[0]; $second = max($nums[1], $nums[0]); for ($i = 2; $i < count($nums); $i++) { $tmp = $second; $second = 阅读全文
posted @ 2022-01-08 17:03 吴丹阳-V 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 题目 213. 打家劫舍 II 解法 因为是首尾相连的 用原来的 198 题的方法有可能会多算一个 经过一番尝试之后,最终使用了两次遍历的方法 第一次,从0开始,不计算最后一个 第二次,从1开始,计算上最后一个 当然,ret 数组可以简化成两个变量,这里就不继续处理了 class Solution 阅读全文
posted @ 2022-01-08 17:02 吴丹阳-V 阅读(32) 评论(0) 推荐(0) 编辑