当前位置:网站首页>LeetCode Hot Questions (12. The Best Time to Buy and Sell Stocks)
LeetCode Hot Questions (12. The Best Time to Buy and Sell Stocks)
2022-08-11 03:12:00 【Know the current affairs person-HJJ】
12.买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格.
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票.设计一个算法来计算你所能获取的最大利润.
返回你可以从这笔交易中获取的最大利润.如果你不能获取任何利润,返回 0 .
示例 1:
输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 .
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票.
示例 2:
输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0.
提示:
1 <= prices.length <= 105
0 <= prices[i] <= 104
package com.leetcode;
/** * @Author Handsome * @Date 2022/8/10 17:48 * @Version 1.0 */
public class 买卖股票的最佳时机 {
public static void main(String[] args) {
System.out.println(maxProfit1(new int[]{
7, 1, 5, 3, 6, 4}));
System.out.println(maxProfit2(new int[]{
7, 1, 5, 3, 6, 4}));
// 输入 [7,1,5,3,6,4]
// 输出 5
}
/** * 暴力法: * 复杂度分析 * 时间复杂度:O(n^2).循环运行 n(n−1)/2 次. * 空间复杂度:O(1).只使用了常数个变量. */
public static int maxProfit1(int[] prices) {
int maxprofit = 0;
for (int i = 0; i < prices.length - 1; i++) {
for (int j = i + 1; j < prices.length; j++) {
int profit = prices[j] - prices[i];
if (profit > maxprofit) {
maxprofit = profit;
}
}
}
return maxprofit;
}
/** * 一次遍历: * 复杂度分析 * 时间复杂度:O(n),只需要遍历一次. * 空间复杂度:O(1),只使用了常数个变量. */
public static int maxProfit2(int prices[]) {
int minprice = Integer.MAX_VALUE;
int maxprofit = 0;
for (int i = 0; i < prices.length; i++) {
if (prices[i] < minprice) {
minprice = prices[i];
} else if (prices[i] - minprice > maxprofit) {
maxprofit = prices[i] - minprice;
}
}
return maxprofit;
}
}
我的学习论坛
HandsomeForum:用Java编写的学习论坛,打造我们自己的圈子!(http://huangjunjie.vip:66)
边栏推荐
- A practice arrangement about map GIS (below) GIS practice of Redis
- JS-DOM element object
- Idea (优选)cherry-pick操作
- 否定语义转化层
- 带你系统学习MySQL索引
- Typescript study notes | Byte Youth Training Notes
- Salesforce disbands the Chinese team, which CRM product is more suitable for the Chinese
- A surviving spouse of the opposite sex within large turn paragraph, what for
- 深度学习-第二次
- Detailed explanation of new features of ES advanced function syntax
猜你喜欢
随机推荐
DOM-DOM树,一个DOM树有三种类型的节点
ES6 advanced string processing new features
The most unlucky and the luckiest
this question in js
Official release丨VS Code 1.70
【idea 报错】 无效的目标发行版:17 的解决参考
多商户商城系统功能拆解26讲-平台端分销设置
rac备库双节点查询到的表最后更新时间不一致
ifconfig与ip命令的比较
【LeetCode】Day112-repetitive DNA sequence
CSAPP Data Lab
Add support for Textbundle
Detailed explanation of new features of ES advanced function syntax
flink The object probably contains or references non serializable fields.
Environment configuration of ESP32 (arduino arduino2.0 VScode platform which is easy to use?)
The negative semantic transformation layer
leetcode:358. K 距离间隔重排字符串
MySQL的主从复制+读写分离+分库分表,看这一篇文章就够了
对加密世界的经济误解:现金是储蓄?稀缺性创造价值?
Salesforce解散中国团队,什么样的CRM产品更适合中国人









