题目一:买卖股票的最佳时机||

力扣题目链接

题目描述:

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。

返回 你能获得的 最大 利润

思路分析:

获取每一天的课收获的利润,取正区间的利润相加,即为最大利润

解法:贪心

class Solution {public int maxProfit(int[] prices) {int res = 0;for (int i = 1; i < prices.length; i++) {res += Math.max(prices[i] - prices[i - 1], 0);}return res;}
}

题目二:跳跃游戏

力扣题目链接

题目描述:

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标

思路分析:

从下标0开始在每个元素可取的覆盖范围内取其它元素的最大覆盖范围,若最终能覆盖到最后一个下标,返回true,否则为false

解法:贪心

class Solution {public boolean canJump(int[] nums) {if (nums.length == 1) {return true;}//覆盖范围, 初始覆盖范围应该是0,因为下面的迭代是从下标0开始的int coverRange = 0;//在覆盖范围内更新最大的覆盖范围for (int i = 0; i <= coverRange; i++) {coverRange = Math.max(coverRange, i + nums[i]);if (coverRange >= nums.length - 1) {return true;}}return false;}
}

题目三:跳跃游戏||

力扣题目链接

题目描述:

给你一个非负整数数组 nums ,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

假设你总是可以到达数组的最后一个位置

思路分析:(代码随想录)

从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最小步数

解法一:

class Solution {public int jump(int[] nums) {int result = 0;// 当前覆盖的最远距离下标int end = 0;// 下一步覆盖的最远距离下标int temp = 0;for (int i = 0; i <= end && end < nums.length - 1; ++i) {temp = Math.max(temp, i + nums[i]);// 可达位置的改变次数就是跳跃次数if (i == end) {end = temp;result++;}}return result;}
}

解法二:

class Solution {public int jump(int[] nums) {if (nums == null || nums.length == 0 || nums.length == 1) {return 0;}//记录跳跃的次数int count=0;//当前的覆盖最大区域int curDistance = 0;//最大的覆盖区域int maxDistance = 0;for (int i = 0; i < nums.length; i++) {//在可覆盖区域内更新最大的覆盖区域maxDistance = Math.max(maxDistance,i+nums[i]);//说明当前一步,再跳一步就到达了末尾if (maxDistance>=nums.length-1){count++;break;}//走到当前覆盖的最大区域时,更新下一步可达的最大区域if (i==curDistance){curDistance = maxDistance;count++;}}return count;}
}

代码随想录训练营day32相关推荐

  1. 【代码随想录训练营】Day43-动态规划

    代码随想录训练营 Day43 今日任务 1049.最后一块石头的重量Ⅱ 494.目标和 474.一和零 语言:Java 1049. 最后一块石头的重量Ⅱ 链接:https://leetcode.cn/ ...

  2. 代码随想录训练营day8

    目录 题目一:反转字符串 解法一:数值交换 解法二:位运算 题目二:反转字符串|| 题目三:替换空格 解法一:双指针 解法二:使用额外空间 题目四:翻转字符串里的单词 解法一: 解法二:纯属娱乐 题目 ...

  3. 【代码随想录训练营】【Day14】第六章|二叉树|理论基础|递归遍历|迭代遍历|统一迭代

    理论基础 二叉树的定义形式有:节点指针和数组 在数组中,父节点的下标为i,那么其左孩子的下标即i*2+1,右孩子的下标即为i*2+2 二叉树的常见遍历形式有:前序遍历.后序遍历.中序遍历和层序遍历 前 ...

  4. 代码随想录训练营day56

    题目一:两个字符串的删除操作 力扣题目链接 题目描述: 给定两个单词 word1 和 word2 ,返回使得 word1 和  word2 相同所需的最小步数. 每步 可以删除任意一个字符串中的一个字 ...

  5. 代码随想录训练营day57

    题目一:回文子串 力扣题目链接 题目描述: 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目. 回文字符串 是正着读和倒过来读一样的字符串. 子字符串 是字符串中的由连续字符组成的一 ...

  6. 代码随想录训练营day53

    题目一:最长公共子序列 力扣题目链接 题目描述: 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度.如果不存在 公共子序列 ,返回 0 . 一个字符串的 子序列  ...

  7. 代码随想录训练营day55

    题目一:判断子序列 力扣题目链接 题目描述: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符 ...

  8. 代码随想录训练营day52

    题目一:最长上升子序列 力扣题目链接 题目描述: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度. 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序. ...

  9. 代码随想录训练营day48

    题目一:打家劫舍 力扣题目链接 题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上 ...

最新文章

  1. python精彩编程200例百度_Python趣味编程与精彩实例
  2. 【Spring注解系列02】@CompentScan与@CompentScans
  3. SAP实施顾问参与主数据搜集的四大好处
  4. 地址栏中的问号有什么作用
  5. Vrep之configuration space之间和pose之间距离的计算方法
  6. php 各种排序算法,PHP四种常见排序算法
  7. python和什么语言类似_python与其他语言的对比
  8. Linux 基本权限管理
  9. 计算机网络—停止等待协议(思维导图)
  10. Windows10操作系统搭建C语言开发环境
  11. xp html5 显卡,最新桌面显卡性能排行 2018年5月显卡天梯图最新完整版
  12. 4.2 metasploit 开发 exploit
  13. 计算机无法显示移动硬盘,谁知道移动硬盘在电脑显示不出来是怎么回事?
  14. 北理大编程作业:确定母亲节
  15. Icarus Verilog
  16. 数学在计算机科学上的应用文献,计算机科学技术在数学中应用浅析
  17. 这156套PS笔刷合集!两天时间给大家盘来了!
  18. 无法通过终端(远程桌面)服务启动MATLAB的解决办法
  19. 常见的浏览器内核有哪些?
  20. 【概率期望】【NOIP模拟】切题

热门文章

  1. Bandizip将大文件分卷压缩为多个小文件
  2. tradeblazer mysql_干货 | 用tradeblazer实现海龟交易法则(附代码)
  3. 在PC上使用微信读书
  4. 基于JAVA红河旅游信息服务系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  5. 积分系统对产品的重要性
  6. openEuler安装GNOME图形化桌面
  7. Bzoj1057 [ZJOI2007]棋盘制作
  8. Processing 入门教程(七)3D地球
  9. iwebshop中mysql_IWebShop/如何安装IWebShop
  10. 只会直接插入图片到PPT?图片这样处理,PPT的颜值瞬间提升几倍!