当前位置: 首页 > article >正文

算法训练第24天|122.买卖股票的最佳时机II|55. 跳跃游戏|45.跳跃游戏II|1005.K次取反后最大化的数组和

LeetCode 122.买卖股票的最佳时机II

题目链接:122.买卖股票的最佳时机II

题目讲解:代码随想录

func maxProfit(prices []int) int {
    var sum int
    for i := 1; i < len(prices); i++{
        if prices[i] - prices[i - 1] > 0{
            sum += prices[i] - prices[i - 1]
        }
    }
    return sum
}

LeetCode 55. 跳跃游戏

题目链接:55. 跳跃游戏

题目讲解:代码随想录

func canJump(nums []int) bool {
    cover := 0
    n := len(nums) - 1
    for i := 0; i <= cover; i++{
        cover = max(i + nums[i], cover)
        if cover >= n{ 
            return true
        }
    }
    return false
}


func max(a, b int) int{
    if a > b{
        return a
    }
    return b
}

LeetCode 45.跳跃游戏II

题目链接:45.跳跃游戏II

题目讲解:代码随想录

func jump(nums []int) int {
    n := len(nums)
    if n == 1{
        return 0
    }

    cur, next := 0, 0
    step := 0
    for i := 0; i < n; i++{
        next = max(nums[i] + i, next)   // 记录下一跳的覆盖范围
        if i == cur {                   // 如果遍历到 当前覆盖范围最后的位置
            if cur != n - 1{            // 并且当前覆盖范围 并没有全覆盖
                step++                  // 说明需要再增加一跳
                cur = next              // 更新当前的覆盖范围
                if cur >= n - 1{        // 当前的覆盖范围 已经 全覆盖了
                    return step
                }
            }else{
                return step             // 当前已经全覆盖了
            }
        }
        
    }
    return step
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}

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

题目链接:1005.K次取反后最大化的数组和

题目讲解:代码随想录

func largestSumAfterKNegations(nums []int, k int) int {
    sort.Slice(nums, func(i, j int) bool{ // 绝对值 从大到小排列,但并未真正修改过数组中的值
        return math.Abs(float64(nums[i])) > math.Abs(float64(nums[j]))
    })

    for i := 0; i < len(nums); i++{
        if k > 0 && nums[i] < 0{ // 把数组中负数 变成 正数
            nums[i] = -nums[i]
            k--
        }
    }

    if k % 2 == 1{
        nums[len(nums)-1] = -nums[len(nums)-1] // 把最小的正数 变成 负数
    }

    result := 0
    for i := 0; i < len(nums); i++{
        result += nums[i]
    }

    return result
}

 


http://www.kler.cn/a/281580.html

相关文章:

  • 网络自动化:利用Python和Ansible实现网络配置管理
  • Neo4J下载安装
  • gptk是什么意思?Mac电脑如何在crossover里安装gptk2.0测试版?借助GPTK玩《原神》《黑神话悟空》游戏
  • 【AI】自动驾驶的分级
  • edge跟谷歌浏览器配置浏览器可跨域
  • 构建Spring Boot应用的多环境配置策略
  • Spring 源码解读:手动实现IoC容器的基本概念与职责
  • 使用maven搭建微服务框架
  • C语言典型例题54
  • 单HTML文件集成vue3+ElementPlus的使用
  • 医疗数字化转型数据中台架构方案(一)
  • Springsecurity中的Eureka报错:Cannot execute request on any known server
  • PyTorch深度学习实战(27)—— PyTorch分布式训练
  • node-forge 实现rsa 16进制解密
  • 【高性能、高并发、高可用】
  • react面试题七
  • 开源轻量级进程监控工具monit的使用以及monit进程监控工具常用的监控配置案例示例大全
  • 金9银10跳槽季,最新自动化测试面试题合集
  • LLVM ERROR: Symbol not found: __svml_cosf8_ha问题解决
  • 7岁男童受白内障困扰,成都爱尔专家施行飞秒激光白内障手术助其恢复视力