首页 > 编程语言 >代码随想录算法训练营第30天 | 贪心算法 2: 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II、1005.K次取反后最大化的数组和

代码随想录算法训练营第30天 | 贪心算法 2: 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II、1005.K次取反后最大化的数组和

时间:2024-07-19 11:56:38浏览次数:16  
标签:nums int 随想录 II 算法 https 跳跃

代码随想录算法训练营第30天 | 贪心算法 2: 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II、1005.K次取反后最大化的数组和

122.买卖股票的最佳时机II
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/
代码随想录
https://programmercarl.com/0122.买卖股票的最佳时机II.html#其他语言版本
55.跳跃游戏
https://leetcode.cn/problems/jump-game/description/
代码随想录
https://programmercarl.com/0055.跳跃游戏.html#算法公开课
45.跳跃游戏 II
https://leetcode.cn/problems/jump-game-ii/description/
代码随想录
https://programmercarl.com/0045.跳跃游戏II.html#算法公开课
1005.K次取反后最大化的数组和
https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/description/
代码随想录
https://programmercarl.com/1005.K次取反后最大化的数组和.html#其他语言版本

122.买卖股票的最佳时机 II/=-079

题解思路

  • 贪心思路:拆分成每一天买卖赚的钱;只取正的不取负的;

题解代码

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        diff = []
        res = 0
        for i in range(1,len(prices)):
            res+=max(prices[i]-prices[i-1],0)
        return res

55. 跳跃游戏

题解思路

  • 贪心思路
    • 考虑每一个节点的影响范围即可
      -注意是影响范围 所以不需要大于等于n 而是大于等于n-1步(即影响范围大于等于n-1步)
class Solution:
    def canJump(self, nums: List[int]) -> bool:
        if len(nums)<=1:
            return True
        range_ = 0
        for i in range(len(nums)):
            if range_>=i:
                range_ = max(range_,i+nums[i])
        if range_>=len(nums)-1:
            return True
        else:
            return False

45.跳跃游戏 II

题解思路

  • 贪心思路:增加下一步的影响范围
    • 走一步算一步的影响范围
    • 步数计算到影响范围最远的地方再走

题解代码:

class Solution:
    def jump(self, nums: List[int]) -> int:
        if len(nums)<=1: ##考虑不需要走的情况
            return 0
        curr_range,next_range= 0,0
        res = 0
        for i in range(len(nums)):
            next_range = max(i+nums[i],next_range)
            if i == curr_range:
                res = res+1
                curr_range = next_range
                if next_range>=len(nums)-1:##下一步就能走到
                    break
        return res

1005.K次取反后最大化的数组和

题解思路

  • 让绝对值大的负数变为正数;
  • 如果非要有变为负数的,选取绝对值最小的值作为变小值;

题解代码

class Solution:
    def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
        nums.sort(key=lambda x: abs(x), reverse=True)

        for i in range(len(nums)):
            if k>0 and nums[i]<0:
                nums[i] = -nums[i]
                k -=1
        
        if k%2==1:
            nums[-1] = -nums[-1]
        
        return sum(nums)

标签:nums,int,随想录,II,算法,https,跳跃
From: https://www.cnblogs.com/P201821440041/p/18310557

相关文章

  • 代码随想录算法训练营第29天 | 贪心算法1:455.分发饼干、376.摆动序列、53.最大子序和
    代码随想录算法训练营第29天|贪心算法1:455.分发饼干、376.摆动序列、53.最大子序和贪心算法基础理论https://programmercarl.com/贪心算法理论基础.html455.分发饼干https://leetcode.cn/problems/assign-cookies/description/代码随想录https://programmercarl.com/0455......
  • 算法篇 滑动窗口 leetCode 水果成篮
    水果成蓝1.题目描述2.图形分析2.1原理解释2.2怎么想出使用滑动窗口2.3图形分析3.代码演示1.题目描述2.图形分析2.1原理解释2.2怎么想出使用滑动窗口2.3图形分析3.代码演示......
  • 【算法设计与分析】期末考试复习 - 基础知识(基础知识超详细)
    文章目录前言引言问题问题描述实例目标数学表达步骤示例伪代码解释1.问题的复杂度冒泡排序笔记选择排序笔记插入排序笔记归并排序笔记快速排序笔记一些问题哪个排序算法效率最高?是否可以找到更好的排序算法?排序问题计算难度如何?其他排序算法的复杂度问题计算复杂度估......
  • 计算机毕业设计Python+Tensorflow小说推荐系统 K-means聚类推荐算法 深度学习 Kears
    2、基于物品协同过滤推荐算法2.1、基于⽤户的协同过滤算法(UserCF)该算法利⽤⽤户之间的相似性来推荐⽤户感兴趣的信息,个⼈通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的⽬的进⽽帮助别⼈筛选信息,回应不⼀定局限于特别感兴趣的,特别不感兴趣信息的纪录也相......
  • 【笔记】辛普森算法
    核心思想是将被积区间分为若干小段,每段套用二次函数的积分公式进行计算。具体而言,对于一个二次函数\(f(x)\),有:\[\int_{l}^{r}f(x)\mathrm{d}x=\frac{(r-l)\left(f(l)+f(r)+4f\left(\frac{l+r}{2}\right)\right)}{6}\]1普通辛普森直接分成若干段来计算。2自适应辛普森......
  • Vue2中Diff算法解析
    Vue2中Diff算法解析import{compileToFunction}from'./compiler/index.js';import{patch,createElm}from'./vdom/patch';//1.创建第一个虚拟节点letvm1=newVue({data:{name:'hs'}});letrender1=compileToFunction('<div>{{nam......
  • [深入理解Java虚拟机]Hotspot垃圾回收算法
    HotSpot的算法细节实现3.2、3.3节从理论原理上介绍了常见的对象存活判定算法和垃圾收集算法,Java虚拟机实现这些算法时,必须对算法的执行效率有严格的考量,才能保证虚拟机高效运行。本章设置这部分内容主要是为了稍后介绍各款垃圾收集器时做前置知识铺垫,如果读者对这部分内容感到枯......
  • 代码随想录day 29 买卖股票的最佳时机II | 跳跃游戏 | 跳跃游戏II | K次取反后最大化
    买卖股票的最佳时机II买卖股票的最佳时机II解题思路利用贪心算法,只要股票卖了后一天能获利,就买了,所以只要遍历一下整个数组,根据这个算法就能得到最终获利的数目知识点贪心心得歪打正着的一题跳跃游戏跳跃游戏解题思路利用贪心算法,只需要有一次跳转到数组之外说明就能跳......
  • VUE diff 算法:为了直观展示,画了一张图来直观展示
      上图直观展示了Vue的Diff算法流程:3种方式比较根节点:图中左侧的"OldVNode"和右侧的"NewVNode"表示旧的和新的虚拟DOM根节点。箭头表示比较过程,如果根节点不同,直接替换整个节点。比较子节点:当根节点相同时,递归比较子节点。左侧"OldChild1"和"O......
  • 算法竞赛复健记录
    高三学了一年文化课感觉已经不会算法竞赛了,开个博客记录一下复健历程。CF1662F题意:有\(n\le200000\)个点,每个点有能量\(p_i\),消息能从\(i\)传到\(j\)当且仅当\(|i-j|\le\min(p_i,p_j)\),求消息从\(a\)点传到\(b\)点至少需要经过几个点。考虑把点按\(p_i\)......