代码随想录 Day 33 | 【第八章 贪心算法 part 02】122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II、1005.K次取反后最大化的数组和

【Claude Code · VibeCoding】13|实战演示:水果消消乐 VibeCoding 用「水果消消乐」走一遍 VibeCoding:提示、生成、试玩、改需求、再生成。 阅读详情

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

本题解法很巧妙, 本题大家可以先自己思考一下然后再看题解,会有惊喜!

1. 解题思路

        用当天减去前一天的价格就得到当天的利润,计算出每天的利润后,选取利润为正数的天数作为买卖股票的最佳时机,然后将这几天的利润相加得到最大利润。

2. 代码实现

(1)定义result变量将每天的利润累加在一起,初始化为0;

(2)遍历price数组,从下标为1开始,因为需要有前一天才可以计算利润。如果利润是负数的话,result不加,如果利润是正数,result加上当天利润。

(3)最后返回result。

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

二、55. 跳跃游戏

本题如果没接触过,很难想到,所以不要自己憋时间太久,读题思考一会,没思路立刻看题解

1. 解题思路

        无需去思考到底跳几步,而只需要看最大覆盖范围是否可以将数组完全覆盖,如果可以则返回True,反之False。

2. 代码实现

(1)定义变量cover为覆盖的下标,初始化为0;

(2)如果数组的长度等于1,说明只有一个元素,那么一定可以覆盖,因为起始位置在终止位置;

(3)for循环遍历,i 只能在覆盖范围内移动,所以 i 一定小于等于cover:将cover更新为 i 加上nums[i],也就是遍历当前范围内的元素,并让所遍历的元素位置 i 加上其最大移动步数,就可以更新最大覆盖范围。如果cover等于数组的最后一位,那么说明可以覆盖整个数组,返回True。

class Solution:
    def canJump(self, nums: List[int]) -> bool:
        cover = 0
        if len(nums) == 1:
            return True
        for i in range(len(nums)):
            if i <= cover:
                cover = max(i+nums[i], cover)
                if cover >= len(nums)-1:
                    return True
        return False

三、45.跳跃游戏II

本题同样不容易想出来。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。

1. 解题思路

用最少的步数尽可能增加覆盖范围,一旦覆盖范围覆盖至终点,就将步数进行输出。

2. 代码实现

(1)当传入的数组长度等于1时,当前起点就是终点,无需挪动,所以挪动0步,直接返回0。

(2)定义cur变量记录当前覆盖范围,初始化为0。当当前覆盖范围还没到终点时,需要启动下一步的覆盖范围,所以定义next变量记录下一步的覆盖范围,初始化为0。定义变量result用于记录具体跳几步。

(3)for循环遍历数组:由于只需要下一步记录最远的覆盖距离,所以next只更新最远的覆盖距离,用 i 加上nums[ i ]。

        如果 i 走到了当前覆盖范围的最大位置,也就是cur:

        1)判断如果当前位置不是终点,那么result需要再向前一步进入下一个覆盖范围,并且将next赋给cur。如果当前覆盖距离覆盖到终点,那么break,当前result就是结果。

        2)如果当前位置是终点,直接break。

class Solution:
    def jump(self, nums: List[int]) -> int:
        if len(nums) == 1:
            return 0
        result = 0
        cur = 0
        next = 0
        for i in range(len(nums)):
            next = max(i + nums[i], next)
            if i == cur:
                result += 1
                cur = next
                if cur >= len(nums)-1:
                    break
        return result

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

本题简单一些,估计大家不用想着贪心 ,用自己直觉也会有思路。

1. 解题思路

本题蕴含了两个贪心:1)排序后的数组中,优先对最大的负数进行取反,可以使数组和最大化;2)如果数组全为正数,而k未使用完,那么在排序后对最小的正数进行取反。

2. 代码实现

(1)首先对数组进行按照绝对值从大到小排序。

(2)for循环遍历数组:如果遍历的元素小于0且k>0,那么对其乘以(-1),并且k减1。此时在k充足的情况下,数组中元素全为正数。

(3)第二次贪心:k可能还没消耗,当剩下的k是奇数的时候,直接对末尾元素乘以1;如果k是偶数,则末尾元素正负保持不变。

在Python中,A.sort(key=lambda x: abs(x), reverse=True) 这行代码的作用是对列表 A 进行排序。排序的依据是列表中每个元素的绝对值,并且是按照从大到小的顺序进行排序(因为 reverse=True)。

这里有几个关键点需要解释:

  1. A.sort():这是列表(List)的一个方法,用于就地(in-place)对列表进行排序,即直接修改原列表而不是返回一个新的排序后的列表。

  2. key=lambda x: abs(x):key 参数用于指定一个函数,这个函数会被用于从每个列表元素中提取一个用于比较的关键字(key)。在这个例子中,lambda x: abs(x) 是一个匿名函数,它接受一个参数 x 并返回 x 的绝对值。这意味着排序将基于元素的绝对值进行。

  3. reverse=True:这个参数指定排序的顺序。默认情况下,sort() 方法会按照从小到大的顺序排序(reverse=False)。当设置为 True 时,排序顺序会变为从大到小。

class Solution:
    def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:

        # 首先对nums按照绝对值由大到小进行排序
        nums.sort(key = lambda x:abs(x), reverse = True)

        # 遍历数组nums
        for i in range(len(nums)):
            if nums[i] < 0 and k > 0:
                nums[i] *= (-1)
                k -= 1

        # 如果k还有剩下的且是奇数,此时数组已全是正数,并且数组末尾是最小正数,k可以用多次
        # 那么对数组末尾元素进行取反即可
        if k % 2 == 1: 
            nums[len(nums)-1] *= (-1)

        # 对元素进行求和
        result = sum(nums)
        return result

 

多层感知机 Multilayer Perceptron | MLP 本文主要简单介绍了多层感知机的基本概念,优缺点,应用场景,建模时的注意事项,评价指标,实现方法,python示例和模型的参数等。 阅读详情

相关推荐

【天线与电波传播】电波传播部分 第7章 电波传播的基础知识3

菲涅尔区与菲涅尔带的基本知识

Chen59_2328的博客 1601

【贪心算法专题】贪心算法入门:从“鼠目寸光”到两道经典例题(柠檬水找零 &将数组和减半的最少操作次数)

贪心策略是一种解决问题的策略:从局部最优推向全局最优。具体执行时可以拆成三步:把解决问题的过程分为若干步;解决每一步的时候,都选择当前看起来"最优"的解法;"希望"最终能得到全局最优解。这里的关键词是"希望"。贪心不像动态规划那样有明确的状态转移保证,它只是做了一个看起来很合理的选择,至于这个选择最终能不能通向全局最优,是需要单独证明的。

2501_93351213的博客 392

量化策略分享 | MA超进化:LLT低延迟趋势线

移动平均线(MA)是我们技术分析中常用的一种趋势跟踪指标,但在使用的时候你是否也会有这样的烦恼:交易信号延迟太久,或者交易信号太频繁了!延迟性和平滑性问题似乎是不可兼得的“鱼和熊掌”。 针对这个问题,广发证券基于通信领域的滤波器原理,在《短线择时策略研究之三:低延迟趋势线与交易性择时》中创造性构建了:LLT低延迟趋势线(Low-lag Trendline)。 LLT低延迟趋势线是一种二阶滤波器,阶数相对适宜,相比MA、EMA等均线指标能够降低延迟,同时增强在低频部分的输出信号。 当然,..

量化交易研究 5309

【Unity知识速递】第7期 Unity 6.6 深度解析:WebGPU 正式版与 WebAssembly64,Web 游戏的内存革命

如何启用 Wasm64?需要注意的是,Wasm64 需要浏览器支持 Memory64 提案,目前主流浏览器的最新版本都已支持。一句话总结: Unity 6.6 用 WebGPU 转正、Wasm64 16GB 内存和渐进式加载三连击,将 Web 游戏的体验天花板又往上推了一大截——Web 平台不再是"妥协版",正在成为真正的一等公民。Unity 6.6 新增了 WebAssembly64(Wasm64) 构建选项,这可能是本次更新中对 Web 游戏开发者影响最大的一项升级。

crystal_WJT的博客 425

从农田到城市:如何利用NDVI和缨帽变换提升遥感图像分类精度?

本文深入探讨了如何利用NDVI(归一化差值植被指数)和缨帽变换(Tasseled Cap Transformation)两大关键技术,有效提升从农田到城市等复杂场景的遥感图像分类精度。文章通过剖析地物光谱特征,对比了原始波段与衍生特征的优劣,并提供了在ENVI、ArcGIS及Python环境中的具体操作指南与实战策略,旨在帮助从业者构建更鲁棒的特征工程流程,从而解决地物混淆、边界模糊等常见分类难题。

redis7keeper的博客 867

MIKE水动力笔记5_建立水动力模型

前文已经讲了如何制作网格文件(.mdf文件),这一博文就讲如何建立水动力模型。

晏长街的博客 3万+

设计模式(unity游戏研发版)

当你使用图形用户界面类时通常会遇到一个问题。比如,你创建了自定义按钮类并允许客户端在按钮中注入自定义代码,这样当用户按下按钮时就会触发这些代码。观察者模式允许任何实现了订阅者接口的对象订阅发布者对象的事件通知。你可在按钮中添加订阅机制,允许客户端通过自定义订阅类注入自定义代码。在Unity中,这就像UnityEvent在Inspector中绑定多个回调。

m0_63330263的博客 98

IgH EtherCAT 从入门到精通:第 2 章 环境搭建与编译安装

环境搭建与编译安装指南 本章详细介绍了搭建IgH EtherCAT Master开发环境的完整流程。内容包括: 硬件要求:支持多种Intel和Realtek网卡的原生驱动,以及通用网卡的generic驱动选项 软件依赖:列出Linux系统下所需的工具链和开发包 源码获取:通过Git克隆官方仓库并切换稳定版本的方法 配置选项:详细解析bootstrap脚本和configure的核心参数,包括路径设置、功能开关和实时框架选项 编译流程:从生成构建系统到最终编译安装的完整步骤 通过本章指导,读者可以完成一个可运行

从事嵌入式linux android驱动开发,拥有全栈能力 479

我给 DeepSeek 大肥鱼做了一款马里奥式闯关游戏

当全网都在把大肥鱼做成直播虚拟主播的时候,我决定给她做一款横版闯关游戏。

2301_79028807的博客 897

专栏二十:如何选择你的单细胞亚群的分辨率--ROGUE

ROGUE这是继chooseR后第二个计算单细胞亚群分辨率的内容,其实关于代码的运行很简单,网上已经有不少教程,重复这些就没意思了,这里主要是结合探讨一下这个算法。

m0_58549466的博客 981

unity6000.0.3版本URP下ScriptableRendererFeature如何实现一张自定义贴图效果?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 585

Claude Fable 5.2 登顶:65 分、单发做游戏,和一份 $26.54 一单的账单

Anthropic 发布 Claude Fable 5.2:AA 智能指数 65 分登顶历史第一,但性能 #71、成本 #73、冗余度 #72——最强能力、最贵成本、最慢速度的矛盾体。同底层 Mythos 5.2 无护栏反而更强。文章拆解:65 分构成、官方实战验收、基准提升真伪、一条提示词一晚做出街机游戏的完整流水线(自写机器人跑完 12 关自检)、$26.54 账单与 98% 缓存折扣下的真实成本重估。

johnsong2009的博客 221

在SAP系统中创建物料 860000000000000082(物料描述为“8680月球广寒宫坦克车”)时,系统报出了一个错误

摘要:SAP系统创建物料"8680月球广寒宫坦克车"时出现"C+020"错误,提示评估区域C916未在物料分类账中设置为生产性。解决方案需进入"会计-控制-产品成本控制-实际成本核算"路径,将评估区域C916手动设置为生产性状态。该操作需由具备权限的系统管理员或FICO顾问执行,建议操作前进行数据备份或在测试环境验证。完成设置后即可重新创建物料。

金牌架构师 391

Unity 数据存储指南:本地存储、个性化设置、缓存与 Resources/StreamingAssets 的区别

在 Unity 开发中,“数据存到哪里”、“缓存能不能清”、“打包后资源有什么区别” 是新手最容易混淆、老手也经常踩坑的问题。Unity 本地存储机制(包括 Unity 放在 C 盘的内容);Unity 个性化设置(编辑器首选项 Editor Preferences);Unity 缓存的打开、关闭与清理;打包后 Resources 与 StreamingAssets 的区别;其他可自定义存储的内容汇总。为方便理解,本文配有一个可直接运行的演示工程,所有代码见文末"配套工程说明"。

zhchyun 208

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Claude Code做Unity项目移植(三): 使用SKILL进行自动化Git提交

本文介绍基于ClaudeCodeSkill的Unity自动化Git提交助手——unity-git-commit,通过四大模块实现提交前的智能检查与安全修复:1)校验Git仓库状态;2)验证Unity项目文件(如排除Library/Temp,确保.meta文件完整);3)依据可配置的C#命名规范自动识别并安全修复命名问题(避免序列化、反射等高危场景误改);4)生成精准提交注释,但强制人工确认。全程仅本地commit,不自动推送或破坏性操作,保障安全。核心思想为“机械化工作交AI,关键决策留人工”,显著提升提交

Aman1984的博客 643

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

HarmonyOS 游戏与图形渲染入门:Canvas、渲染管线与掉帧排查

本文详解鸿蒙图形渲染选型与优化,指出多数“游戏感”需求仅需Canvas+requestAnimationFrame即可实现。通过deltaTime保证跨设备流畅性,优先使用animateTo声明式动画,避免逐帧绘制开销。强调性能优化应从主线程长任务、过度绘制、对象分配入手,结合Profiler排查掉帧。XComponent适用于高负载场景,但需权衡开发成本。最后提醒引擎迁移三要点:性能模型差异、打包流程匹配、版本兼容。核心结论:先用简单方案验证,再决定是否上引擎。

信息安全领域优质创作者|操作系统领域专家 409

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Windows远程桌面实现之二十:实现 moonlight 游戏串流协议之(一)

本文介绍在xdisp_virt中集成Moonlight游戏串流协议的实现过程。基于开源项目Sunshine逆向的GameStream协议,作者从零研究并自研实现Moonlight服务端网络通信部分,涵盖mDNS设备发现、nvhttp/nvhttps加密通信、nvrtsp协议交互及三类UDP数据通道(视频、音频、控制)。重点解决多客户端并发问题,采用串行处理机制确保连接一致性。通过自定义证书验证与密钥管理,完成配对与安全通信,最终实现低延迟、高性能的游戏串流体验,显著优于WebRTC浏览器方案。

fanxiushu的专栏 167

二进制木马免杀-游戏嵌套与图标替换

二进制木马免杀-游戏嵌套与图标替换

2503_94637398的博客 236

Unity UGUI布局组件(LayoutGroup、ContentSizeFitter、LayoutElement)详解

UGUI 自动布局是一套的 C# 排版系统,和 Transform 原生锚点完全隔离;整套布局;最终输出只有对 RectTransform 的sizeDelta的赋值。

m0_63330263的博客 263

mark 黑塞《玻璃球游戏》

【最近在读黑塞的《玻璃球游戏》-“ai预言“ - 优快云 App】

2502_94306440的博客 192

Cocos Creator3.8.8 + Xcode27.2 编译运行失败

Cocos Creator3.8构建IOS工程后,使用最新的Xcode27.2版本进行真机调试,遇到C++标准库冲突,如is_floating_point、is_arithmetic和is_signed失败,以及webp对齐失败等问题。

HYNN12的博客 395

(开源)游戏攻略分享系统实战指南 基于 Java + SpringBoot + uni-app + Vue + MySQL

这是一个基于 Java + SpringBoot + uni-app + Vue + MySQL 构建的完整游戏攻略分享系统,功能持续优化中...游戏攻略管理 游戏分类管理 旅游资讯管理 用户管理 管理员管理

小小码农身兼魔法师职位!除你武器~ 325

给 AI 一台贴图工厂:TexGen 程序化贴图引擎与 MCP 架构实践

但它很快就撞墙——一张贴图往往是多层叠加的:底色 + 噪波 + 砖缝 + 暗角 + 高光。所以 TexGen 的核心抽象是图层栈 + JSON 指令表codeTgSpec├── 几何: shape(8 种) + center / size / radius / rotation / cornerRadius├── 绘制: fill(7 种) + color / edgeColor / 渐变 + pattern + warp└── 合成: blend(11 种) + opacity / blur。

邹杭特的博客 372

itch.io 用开源模拟器 Ruffle 恢复 Flash 游戏支持

itch.io 创始人宣布平台已用开源 Flash 模拟器 Ruffle 重新实现 Flash 游戏支持,现有 2,581 款 Flash 游戏,开发者无需改动现有项目。

老孙正经胡说 109

老题新解|NOIP 2008 普及组 T3:传球游戏

传球游戏是 NOIP 2008 普及组 T3,核心是「环形边界用取模处理」的二维 DP。本文给出状态定义 + 转移推导 + C++14 代码 + 易错点清单,代码可直接提交主流评测平台。

ZLOJ 338

游戏支付通道安全吗?靠谱吗?

资质之外,商家还可以查看通道方的清算背景和合作机构,多方信息交叉验证,判断更准确,正规的通道方经得起多方核实,信息越透明,合作越放心,这是选择安全通道的基本功课,交叉验证后的判断更可靠,正规通道的信息透明,查证过程本身就是信心的来源,合作更踏实,每一步都有依据,核实越细,信心越足。安全配合要落到实处,商家如实上报异常情况,通道方及时处理反馈,双方信息互通,风险才能及时化解,安全不是单方面的承诺,而是双方协作的结果,配合越紧密,保障越到位,双方信息互通,安全网越牢固,风险越小,信息互通有无,风险共同化解。

jingyun_2026的博客 84
上一篇: 代码随想录 Day 32 |【第八章 贪心算法 part 01】理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和
下一篇: 代码随想录 Day 34 | 【第八章 贪心算法 part 03】134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列
Accept17
博客等级 码龄4年 479粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值