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

网站模板 古典长春网站设计网站建设网站制作880元

网站模板 古典,长春网站设计网站建设网站制作880元,网站登录界面模板,网站建设基地系列文章目录 力扣热题 100:哈希专题三道题详细解析(JAVA) 力扣热题 100:双指针专题四道题详细解析(JAVA) 力扣热题 100:滑动窗口专题两道题详细解析(JAVA) 力扣热题 100:子串专题三道题详细解析(JAVA) 力…

系列文章目录

力扣热题 100:哈希专题三道题详细解析(JAVA)
力扣热题 100:双指针专题四道题详细解析(JAVA)
力扣热题 100:滑动窗口专题两道题详细解析(JAVA)
力扣热题 100:子串专题三道题详细解析(JAVA)
力扣热题 100:普通数组专题五道题详细解析(JAVA)
力扣热题 100:矩阵专题四道题详细解析(JAVA)
力扣热题 100:链表专题经典题解析(前7道)
力扣热题 100:链表专题经典题解析(后7道)
力扣热题 100:二叉树专题经典题解析(前8道)
力扣热题 100:二叉树专题进阶题解析(后7道)
力扣热题 100:图论专题经典题解析
力扣热题 100:回溯专题经典题解析
力扣热题 100:二分查找专题经典题解析
力扣热题 100:栈专题经典题解析
力扣热题 100:堆专题经典题解析
力扣热题 100:贪心算法专题经典题解析
力扣热题 100:动态规划专题经典题解析
力扣热题 100:多维动态规划专题经典题解析
力扣热题 100:技巧专题经典题解析

文章目录

      • 系列文章目录
    • 一、买卖股票的最佳时机(题目 121)
      • 1. 题目描述
      • 2. 示例
      • 3. 解题思路
      • 4. 代码实现(Java)
      • 5. 复杂度分析
    • 二、跳跃游戏(题目 55)
      • 1. 题目描述
      • 2. 示例
      • 3. 解题思路
      • 4. 代码实现(Java)
      • 5. 复杂度分析
    • 三、跳跃游戏 II(题目 45)
      • 1. 题目描述
      • 2. 示例
      • 3. 解题思路
      • 4. 代码实现(Java)
      • 5. 复杂度分析
    • 四、划分字母区间(题目 763)
      • 1. 题目描述
      • 2. 示例
      • 3. 解题思路
      • 4. 代码实现(Java)
      • 5. 复杂度分析

在力扣(LeetCode)平台上,贪心算法相关的题目是算法面试和练习中的重要部分。今天,我们就来详细解析贪心算法专题中的几道经典题目,帮助大家更好地理解解题思路和技巧。

一、买卖股票的最佳时机(题目 121)

1. 题目描述

给定一个数组 prices,其中 prices[i] 表示第 i 天的股票价格。你可以尽可能多地进行交易(多次买卖股票),但每次交易只能买卖一次股票。求最大利润。

2. 示例

示例 1:

输入:prices = [7, 1, 5, 3, 6, 4]

输出:5

解释:在第 2 天(价格为 1)买入,在第 3 天(价格为 5)卖出,利润为 4。然后在第 4 天(价格为 3)买入,在第 5 天(价格为 6)卖出,利润为 3。总利润为 4 + 3 = 7。

3. 解题思路

这道题主要考察贪心算法的应用。我们可以遍历数组,记录当前最低价格,并计算每天卖出的利润,累加所有正利润即可得到最大利润。

4. 代码实现(Java)

public class Solution {public int maxProfit(int[] prices) {int minPrice = Integer.MAX_VALUE;int maxProfit = 0;for (int price : prices) {if (price < minPrice) {minPrice = price;} else if (price - minPrice > 0) {maxProfit += price - minPrice;minPrice = price; // 重新设置买入点}}return maxProfit;}
}

5. 复杂度分析

  • 时间复杂度 :O(n),其中 n 是数组的长度。我们只需要遍历数组一次。
  • 空间复杂度 :O(1),我们只使用了常数级别的额外空间。

二、跳跃游戏(题目 55)

1. 题目描述

给定一个非负整数数组 nums,你最初位于数组的第一个位置。数组中的每个元素表示在该位置可以跳跃的最大步数。判断你是否能够到达最后一个位置。

2. 示例

示例 1:

输入:nums = [2, 3, 1, 1, 4]

输出:true

示例 2:

输入:nums = [3, 2, 1, 0, 4]

输出:false

3. 解题思路

这道题主要考察贪心算法的应用。我们可以维护一个变量 maxReach,表示当前能到达的最远位置。遍历数组,如果当前位置超过了 maxReach,则无法到达终点。否则,更新 maxReach 为当前能到达的最远位置。

4. 代码实现(Java)

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

5. 复杂度分析

  • 时间复杂度 :O(n),其中 n 是数组的长度。我们只需要遍历数组一次。
  • 空间复杂度 :O(1),我们只使用了常数级别的额外空间。

三、跳跃游戏 II(题目 45)

1. 题目描述

给定一个非负整数数组 nums,你最初位于数组的第一个位置。数组中的每个元素表示在该位置可以跳跃的最大步数。求到达最后一个位置的最小跳跃次数。

2. 示例

示例 1:

输入:nums = [2, 3, 1, 1, 4]

输出:2

解释:先跳 1 步到第 2 个位置,再跳 3 步到终点。

3. 解题思路

这道题主要考察贪心算法的应用。我们可以维护三个变量:end 表示当前能到达的最远位置,farthest 表示下一步能到达的最远位置,jumps 表示跳跃次数。遍历数组,更新 farthest,当到达 end 时,增加跳跃次数,并更新 endfarthest

4. 代码实现(Java)

public class Solution {public int jump(int[] nums) {if (nums.length == 1) {return 0;}int jumps = 0;int end = 0;int farthest = 0;for (int i = 0; i < nums.length - 1; i++) {farthest = Math.max(farthest, i + nums[i]);if (i == end) {jumps++;end = farthest;if (end >= nums.length - 1) {break;}}}return jumps;}
}

5. 复杂度分析

  • 时间复杂度 :O(n),其中 n 是数组的长度。我们只需要遍历数组一次。
  • 空间复杂度 :O(1),我们只使用了常数级别的额外空间。

四、划分字母区间(题目 763)

1. 题目描述

给定一个字符串 s,将字符串划分成若干个连续的区间,每个区间内的字符都是唯一的。返回这些区间的长度列表。

2. 示例

示例 1:

输入:s = "ababcbacadefegdehijhklij"

输出:[9, 7, 8]

解释:划分结果为 “ababcbaca”、“defegde”、“hijhklij”。

3. 解题思路

这道题主要考察贪心算法的应用。我们可以先统计每个字符最后出现的位置,然后遍历字符串,维护当前区间的最远结束位置。当到达当前区间的最远结束位置时,记录区间长度,并开始新的区间。

4. 代码实现(Java)

import java.util.ArrayList;
import java.util.List;public class Solution {public List<Integer> partitionLabels(String s) {int[] last = new int[26];for (int i = 0; i < s.length(); i++) {last[s.charAt(i) - 'a'] = i;}List<Integer> result = new ArrayList<>();int start = 0, end = 0;for (int i = 0; i < s.length(); i++) {end = Math.max(end, last[s.charAt(i) - 'a']);if (i == end) {result.add(end - start + 1);start = i + 1;}}return result;}
}

5. 复杂度分析

  • 时间复杂度 :O(n),其中 n 是字符串的长度。我们只需要遍历字符串两次。
  • 空间复杂度 :O(1),我们只使用了常数级别的额外空间(不包括结果列表)。

以上就是力扣热题 100 中与贪心算法相关的经典题目的详细解析,希望对大家有所帮助。在实际刷题过程中,建议大家多动手实践,理解解题思路的本质,这样才能更好地应对各种算法问题。在这里插入图片描述


文章转载自:

http://CvwKGXgm.qdyqp.cn
http://36jzOBE8.qdyqp.cn
http://to5wDi3m.qdyqp.cn
http://rsRDFdHB.qdyqp.cn
http://VbKYuulV.qdyqp.cn
http://nxo05BCQ.qdyqp.cn
http://hYYu50X6.qdyqp.cn
http://CRkmgNfT.qdyqp.cn
http://vSGx6B7x.qdyqp.cn
http://EsMFFjpU.qdyqp.cn
http://7nXqXBZB.qdyqp.cn
http://mxw6K3RL.qdyqp.cn
http://a8CYhkqC.qdyqp.cn
http://w2YLuUkE.qdyqp.cn
http://8TYfd46C.qdyqp.cn
http://5hEvhnIF.qdyqp.cn
http://xYUCcU42.qdyqp.cn
http://WQpjdlzV.qdyqp.cn
http://x2MspwUk.qdyqp.cn
http://Bq9QZXRL.qdyqp.cn
http://0DNyXOqk.qdyqp.cn
http://4TdKkPma.qdyqp.cn
http://LcVe3jax.qdyqp.cn
http://LxO36zvk.qdyqp.cn
http://rsFUTSKV.qdyqp.cn
http://lQfH6dQV.qdyqp.cn
http://tjms4Fk2.qdyqp.cn
http://ymvxfiyN.qdyqp.cn
http://6LcWpRqf.qdyqp.cn
http://G5RtS6eK.qdyqp.cn
http://www.dtcms.com/wzjs/642927.html

相关文章:

  • 游戏网站外链建设域名备案必须要有服务器吗
  • 网站开发技术入股协议东营seo网站推广费用
  • 网站设计工程师是it行业吗不懂代码如何做网站
  • 网站开发实用技术答案php网站转移
  • 南阳网(网站).桂林企业网站建设
  • 网站开发开发需求文档优化网站排名费用
  • 深圳模板网站建设案例做网站流量
  • 北屯网站建设微商客源人脉app下载
  • 莆田外贸网站建设有哪些机电设备网站模板
  • 站长统计芭乐官方网站下载wordpress 中文名注册
  • 网站建设 找vx cp5173前端培训机构推荐
  • 昆山做网站找哪家好wordpress装修套餐网站源码
  • 公司企业网站建设目的东莞常平建设局网站
  • 东源县住房和城乡建设部网站盘锦网站变建设
  • 网站建设主要推广方式wordpress信息收集表单制作
  • 邯郸网站建设服务dw中网站建设的基本流程
  • 做网站背景图片要多大图片转链接生成器网站
  • 抖音做我女朋友好不好网站企业网站建设方案包含
  • 国外网站如何备案微信相册怎么制作
  • 有自己网站好处网站关键词优化公司哪家好
  • 重庆做网站外包公司品牌网站建设 蝌蚪6小
  • 个人网站制作模板地方网站 域名选择
  • 网站建设公司的经营范围阿里云与wordpress
  • 发外链的网站排名专业网站建设找哪家好
  • 做网站还有前景么国内最新十大新闻
  • 甘肃seo网站兰州seo推广
  • 天津制作企业网站的企业融资方式
  • 做棋牌开发的网站地方电商门户网站如何建设方案
  • 怎么建设购物网站巩义在线
  • 解答网站内容优化策略连锁销售官网