本文主要是介绍算法训练第24天|122.买卖股票的最佳时机II|55. 跳跃游戏|45.跳跃游戏II|1005.K次取反后最大化的数组和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LeetCode 122.买卖股票的最佳时机II
题目链接:122.买卖股票的最佳时机II
题目讲解:代码随想录
func maxProfit(prices []int) int {var sum intfor 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 := 0n := len(nums) - 1for 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, 0step := 0for 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 := 0for i := 0; i < len(nums); i++{result += nums[i]}return result
}
这篇关于算法训练第24天|122.买卖股票的最佳时机II|55. 跳跃游戏|45.跳跃游戏II|1005.K次取反后最大化的数组和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!