JAVA刷Leecode-贪心算法

  • 算法思想
  • 区间问题-买卖股票的最佳时机 II(122.,easy)
    • 题目描述
    • 输入输出样例
      • 示例1
      • 示例 2:
    • 解题思路:
      • 题解
    • 解题思路:贪心算法
    • 题解
    • 资源学习

算法思想

采用贪心的策略,保证每次操作都是局部最优解,从而最终的结果是全局最优。贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具有无后效性,即某个状态以前的过程不会影响以后的状态,只和当前的状态相关。
包括分配问题(455,135)和区间问题(435);
练习:605,452,763,122,406。

区间问题-买卖股票的最佳时机 II(122.,easy)

题目描述

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

输入输出样例

示例1

输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。

示例 2:

输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。
因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。

解题思路:

遍历数组,递增继续,递减则停止并收取利润,即保证最大时间段获取最大利润

题解

//owner
class Solution {public int maxProfit(int[] prices) {int count = 0;int n = 0, number = 0;for(int i = 0; i < prices.length-1;i++){if(prices[i] <= prices[i+1] && count == 0){count = 1;n = prices[i];}else if(prices[i] <= prices[i+1] && count == 1){continue;}else if(prices[i] > prices[i+1] && count == 0 ){continue;}else{number += prices[i] - n;count = 0;}}if(count == 1)  number += prices[prices.length-1] - n;return number;}
}

解题思路:贪心算法

由于不限制交易次数,只要今天股价比昨天高,就交易。
保证每天的利润最大即可。
pn-p1=p2-p1+(p3-p2)+···+(pn-1 - pn-2) +(pn-pn-1)

题解

//贪心算法
class Solution {public int maxProfit(int[] prices) {int count = 0, number = 0;for(int i = 1; i < prices.length; i++){count = prices[i] - prices[i-1];if(count > 0){number += count;}}return number;}
}

资源学习

来自LeetCode 101:和你一起你轻松刷题(C++)(github.com/changgyhub/leetcode_101)和leetcode题库(https://leetcode-cn.com/problems/non-overlapping-intervals)

JAVA刷Leecode-贪心算法-区间问题-买卖股票的最佳时机 II相关推荐

  1. LeetCode初级算法 2:买卖股票的最佳时机 II

  2. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

  3. _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II

    _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...

  4. 代码随想录算法训练营第三十二天_第八章_贪心算法 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

    LeetCode 122.买卖股票的最佳时机II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票 ...

  5. _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机II

    _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机.122.买卖股票的最佳时机II 题目列表 121.买卖股票的最佳时机 122.买卖股票的最佳时机II 1 ...

  6. 力扣刷题day42|121买卖股票的最佳时机、122买卖股票的最佳时机II

    文章目录 121. 买卖股票的最佳时机 贪心思路 动态规划思路 动态规划五部曲 122. 买卖股票的最佳时机II 贪心思路 动态规划思路 动态规划五部曲 121. 买卖股票的最佳时机 力扣题目链接 给 ...

  7. 算法训练Day49 | Leetcode121. 买卖股票的最佳时机(只能买卖一次);LeetCode122. 买卖股票的最佳时机II(可以买卖多次)

    目录 Leetcode121. 买卖股票的最佳时机 方法一:暴力解法 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考与收获 方法二:贪心算法 1. 思路 2. 代码实现 3. 复杂度分析 方 ...

  8. LintCode领扣算法问题答案:150. 买卖股票的最佳时机 II

    150. 买卖股票的最佳时机 II 描述 给定一个数组 prices 表示一支股票每天的价格. 你可以完成任意次数的交易, 不过你不能同时参与多个交易 (也就是说, 如果你已经持有这支股票, 在再次购 ...

  9. 力扣 买卖股票的最佳时机II

    力扣 买卖股票的最佳时机II 题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注 ...

最新文章

  1. linux 用户权限详解,03_04_Linux用户及权限详解
  2. SAP UI5 manifest.json 和 i18n 多语言文本的解析逻辑
  3. js截屏 video_用原生JS和html5进行视频截图并保存到本地
  4. Process finished with exit code 139(interrupted by signal 11):SIGSEGV
  5. MooFest POJ - 1990
  6. English trip V1 - 20.Look at me 看着我 Teacher:Solo Key: 声调(英语默认就声调[rising]和降调[falling]两种)...
  7. java invoke 返回类型_java-控制器处理程序方法支持的返回类型
  8. 内存管理之内存映射——概述
  9. s3c2440汇编语言,S3C2440-裸机篇-03 | GPIO的使用(点亮LED、按键检测)
  10. Arduino 下使用ws2812b 16*16 led点阵屏显示汉字,规避FastLED的大坑
  11. oracle登陆不了账号被锁定,轻松解决数据库账号被锁定问题
  12. 期货换手多换空换(期货交易多换空换是什么意思)
  13. 告别黑暗 电脑黑屏故障排除实例一则
  14. 【JetPack+Retrofit+Rxjava】获取Bing每日一图并显示ViewModel+LiveData+DataBinding+MVVM 补充笔记
  15. 奇门仓储场景具体应用
  16. 基于ESP32-CAM的RSTP协议网络摄像头
  17. arm开发板通过网线连接笔记本电脑上外网
  18. 最新代雅阁噪音测试软件,全新雅阁噪音测试
  19. 接口技术课程设计 Lab8000实现交通灯控制系统
  20. CORS 完全手册之 CORS 详解

热门文章

  1. spring service层配置
  2. 使用axios的POST方法提交数据的编码格式选取
  3. .什么是深拷贝和浅拷贝以及他们的区别
  4. 【菜鸡新手 - 剑指offer 03】[2021/1/17一刷] 找出数组中重复的数字 -三种解法|| 物归原主,测试碰撞法 || hash表测试碰撞法 || 排序+遍历法 ||python
  5. 润迈德医疗通过上市聆讯:预计亏损将增加,霍云飞兄弟持股约33%
  6. 领域驱动设计架构概述与设计原则
  7. 使用poi读取Excel中的数据到数据库
  8. 销售人员如何通过CRM系统提升业绩
  9. c语言课程设计情侣,C/C++编程笔记:C语言制作情侣必备《爱情电子相册》,源码解析!...
  10. uni-app webrtc 实现H5音视频通讯