首页 > 其他分享 >代码随想录day28 || 122 买卖最佳时机2,55 跳跃游戏,45 跳跃游戏2,1005 k次取反最大数组和

代码随想录day28 || 122 买卖最佳时机2,55 跳跃游戏,45 跳跃游戏2,1005 k次取反最大数组和

时间:2024-08-13 11:41:36浏览次数:8  
标签:return 游戏 nums int 随想录 start func 跳跃

122 买卖股票最佳时机2


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
}

55 跳跃游戏

func canJump(nums []int) bool {
	// 思路,从跳跃起点开始找对应区间的覆盖范围,加上区间内最大的覆盖范围,如果大于等于列表长度,返回true
	if len(nums) == 1 {
		return true
	}

	cover := nums[0]
	for i := 0 ; i <= cover; i++ {
		if i + nums[i] > cover {
			cover = i + nums[i]
		}
		if cover >= len(nums) - 1 {
			return true
		}
	}

	return false
}

45 跳跃游戏2

func jump(nums []int) int {
	// 思考,贪心的思路应该是每次在可以条约的范围内找到最大的跳跃距离
	if len(nums) == 1 {
		return 0
	}

	var start, count int
	for start + nums[start] < len(nums) - 1 {
		start = next(nums, start)
		count++
	}

	return count + 1
}

func next(nums []int, start int) int { // 传入数组区间,返回最远的下一个距离
	var maxdis int = start + nums[start]
	var max int = start
	for i:=start; i <= start + nums[start] && i < len(nums); i++ {
		//fmt.Println(i, max, maxdis)
		if i + nums[i] > maxdis {
			maxdis = i + nums[i]
			max = i
		}
	}
	//fmt.Println("=========")
	return max
}

1005 k取反后最大和

func largestSumAfterKNegations(nums []int, k int) int {
	// 思路,每次找最小值取反,然后最后加总

	for i:=0; i<k; i++{
		nums = nagationMin(nums)
	}

	var sum int
	for _, v := range nums{
		sum += v
	}
	return sum
}

func nagationMin (nums []int) []int {
	var min int = math.MaxInt
	var index int
	for idx, v := range nums {
		if v < min {
			min = v
			index = idx
		}
	}

	nums[index] *= -1
	return nums
}

标签:return,游戏,nums,int,随想录,start,func,跳跃
From: https://www.cnblogs.com/zhougongjin55/p/18356541

相关文章

  • 游戏安全入门-扫雷分析&远程线程注入
    前言无论学习什么,首先,我们应该有个目标,那么入门windows游戏安全,脑海中浮现出来的一个游戏--扫雷,一款家喻户晓的游戏,虽然已经被大家分析的不能再透了,但是我觉得自己去分析一下还是极好的,把它作为一个小目标再好不过了。我们编写一个妙妙小工具,工具要求实现以下功能:时间暂停、修......
  • 夏日狂欢,游戏新体验,植物大战僵尸杂交版 v2.3.5
    ......
  • 代码随想录Day12
    二叉树遍历分为前序、中序、后续、层序四种其中前中后序属于深度优先搜索,层序属于广度优先搜索前序遍历顺序:根节点->左子树->右子树中序遍历顺序:左子树->根节点->右子树后序遍历顺序:左子树->右子树->根节点不难发现,前中后其实就是根节点在遍历中的位置至于层序遍历,顾名......
  • 复苏的魔女遭遇VGCore.dll缺失危机:如何快速修复游戏启动难题?
    复苏的魔女遭遇VGCore.dll缺失危机时,确实会导致游戏无法正常启动。以下是一些快速修复此问题的步骤和建议:一、确认问题首先,确保错误信息确实是由于VGCore.dll文件缺失引起的。通常,游戏在尝试启动时会在屏幕上显示一条错误消息,明确指出缺少的DLL文件名。二、下载并替换缺失......
  • 「代码随想录算法训练营」第三十五天 | 动态规划 part8
    121.买卖股票的最佳时机题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/文章讲解:https://programmercarl.com/0121.买卖股票的最佳时机.html题目难度:简单视频讲解:https://www.bilibili.com/video/BV1Xe4y1u77q题目状态:有一半的思路思路一:贪心对......
  • 简简单单,扫雷小游戏(极简版)
    目录前言一、扫雷要求二、准备工作1.建立文件2.游戏思路三、扫雷游戏代码步骤1:建立主函数步骤2:创建数组并初始化步骤3:打印数组步骤4:布置雷步骤5:排查雷步骤6:补全头文件四、完整代码 后言:前言用VS2022写的扫雷小游戏,超详细,一步一步帮你理透.一、......
  • 代码随想录day27 || 455 分饼干,376 摆动序列,53 最大子序列和
    分饼干funcfindContentChildren(g[]int,s[]int)int{ //第一思路,双指针暴力解法 varcountint varused2=make([]bool,len(s)) g=quicksort(g) s=quicksort(s) for_,child:=rangeg{ foridx,cookie:=ranges{ if!used2[idx]&&cookie>=......
  • 34.x86游戏实战-XXX过检测代码分析
    免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!本次游戏没法给内容参考于:微尘网络安全工具下载:链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3提取码:6tw3复制这段内容后打开百度网盘手机App,操作更方便哦上一个内容:33.x86游戏实战-喊话C......
  • 记一次TCP请求游戏服接口偶发超时问题处理:Linux内核网络参数调优
    记一次TCP请求游戏服接口偶发超时问题处理:Linux内核网络参数调优原创 国文 三七互娱技术团队  2024年07月08日18:00 广东 听全文01问题现象A云主机公网访问B云游戏服的一个接口出现偶发超时的问题。02问题原因经抓包定位到B云游戏服接口未响应请求报文导致,具体......
  • 战争游戏
    当我们考虑树的直径时,我们不应该孤立地考察这条链,而应考虑这条链在整棵树中的地位也就是说,如果树的直径不超过2*r1,进攻方选择树的直径的中点即可覆盖整棵树的节点尝试证明你感受到的结论,而不是逃避它;相信OI是美的在经过树的直径判定后,进攻方选择任意一个节点都不可能覆盖树的......