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

东北网站建设国网典型设计最新版

东北网站建设,国网典型设计最新版,友情链接交换网址大全,东莞手机网站价格表🔟 贪心 121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利…

🔟 贪心

121. 买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

题解:

  • 维护股价最小值, 维护利润最大值即可

  • class Solution {public int maxProfit(int[] prices) {int n = prices.length;int minTemp=prices[0],maxTemp;int profit=0;for(int i=1;i<n;i++){if(prices[i]<=minTemp){minTemp = prices[i];}else{maxTemp=prices[i];profit=Math.max(profit,maxTemp-minTemp);}}return profit;}
    }
    

55. 跳跃游戏

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

题解:

  • 我最初的想法是, 从索引0出发,尽可能多的走远, 如果走远不能到达/即碰到跳跃0步就break; 然后减少出发的步大小, 这个思路能过80的数据, 直到[1,2,2,0,3]:

    • 这样在nums[1]的时候就会直接跳到nums[3]处即跳跃0步不能往前走了, 然后break, 0处步大小–至为0, return false
    • 思路漏洞很明显, 只考虑了0处的步伐缩小, 没有考虑其他索引的最大值
  • 思路:维护在索引i的最大值, 遍历数组,查看maxReach能否到达该处索引, 如果能到达, 更新maxReach:

  • class Solution {public boolean canJump(int[] nums) {if(nums==null||nums.length==1){return true;}int n=nums.length;int maxReach = 0;for(int i=0;i<n;i++){if(i>maxReach) return false;maxReach = Math.max(maxReach,nums[i]+i);if(maxReach>=n-1) return true;}return false;}
    }
    

45. 跳跃游戏 II

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:0 <= j <= nums[i] i + j < n返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。

题解:

  • 如果要获取当前的下一步能够跳跃的最远的范围, 就要在当前范围内, 计算当前范围内索引值的跳跃值/也就是下一步的下一步跳得有多远,

  • 所以当到达当前最大跳跃值后(i=end), 那么当前的最远距离就是刚才计算的上一跳的范围内索引值的最远跳跃值

  • 所以只要保证n-1在最远跳跃范围内,即n-1<=furthest即可

  • class Solution {public int jump(int[] nums) {int n=nums.length;int step=0,end=0,furthest=0;for(int i=0;i<n-1;i++){furthest=Math.max(furthest,i+nums[i]);//只要i!=end,就说明目前仍在上一跳的范围内, 上一跳能够直接跳到这,要设置i<n-1而不是i<n;就是以防n-1刚好是end的边界值, 如此在此处step又要预先跳一步了if(i==end){step++;end=furthest;}}return step;}
    }
    

763. 划分字母区间

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串 "ababcc" 能够被分为 ["abab", "cc"],但类似 ["aba", "bcc"] 或 ["ab", "ab", "cc"] 的划分是非法的。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。

题解:

  • 用哈希表存储每个单词出现的最远的地方, 循环遍历每次维护一个最长字段大小,

  • 直至每次遍历的值的最远距离均小于当前最长字段/i==maxLength, 那么将当前的最长字段存入res, 更新计算mL

  • class Solution {public List<Integer> partitionLabels(String s) {Map<Character,Integer> map = new HashMap<>();int n = s.length();for(int i=0;i<n;i++){map.put(s.charAt(i),i);}List<Integer> res = new ArrayList<>();int mL=0,start=0;for(int i=0;i<n;i++){mL=Math.max(mL,map.get(s.charAt(i)));if(i==mL){res.add(i-start+1);start=i+1;}}return res;}
    }
    
http://www.dtcms.com/a/613568.html

相关文章:

  • 白酒网站设计广告设计与制作教程
  • 建设文明网站包括个人网站学生作业
  • 面对AI的思考,如何区分什么能力是人最根本的能力?
  • 当“能者”不再“多劳”:于倦怠深处,寻一方从容
  • 分布式系统测试包含子系统的系统测试,数据一致性测试,并发测试
  • less 工具 OpenHarmony PC适配实践
  • 人工智能之数据分析 numpy:第三章 Ndarray 对象和数组创建
  • Claude Code API Gateway 配置指南
  • 网站怎么做404 301深圳网站论坛建设
  • 网站后台m整套网站设计
  • claude code 食用指南
  • 专题1:双指针
  • 基于Vue的鲜花销售系统33n62(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
  • sdc 编写笔记
  • Rabbit MQ:概述
  • 建站之星管理中心注册海外公司
  • 【HarmonyOS】ArkWeb——从入门到入土
  • 微网站 微信网站优化服务是什么意思
  • VS Code 隐藏顶部标题栏中间的文字
  • 珠海网站哪家好如何给网站流量来源做标记通过在网址后边加问号?
  • Rust入门
  • Rust入门 之一
  • “伪”局域网
  • C语言编译软件Mac | 在Mac上选择最合适的C语言编译工具
  • 怎么样建设一个网上教学网站网页版微信二维码不能直接识别
  • Linux BPF 技术深度解析:从原理到实践
  • 高端网站报价wordpress如何添加背景音乐
  • C# 对多个任务进行符合管理
  • 在Eclipse IDE for Embedded C/C++ Developers软件中定义的宏,编译C源文件时编译器无法找到宏定义!
  • 从局域网到全网可用!PDFMathTranslate 翻译工具的进阶使用法