文档章节

买卖股票的最佳时机-LeetCode

事儿爹
 事儿爹
发布于 05/20 16:48
字数 478
阅读 12
收藏 0

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

如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。

注意你不能在买入股票前卖出股票。

示例 1:

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。

示例 2:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

思路:

        1.后一天比前一天小,肯定不能计算

        2.因为只计算最大利润,找到最小的,始终用后面 比它大的 - 最小的就可以了,最大利润如果后面有更大的,就直接覆盖了

public static void main(String[] args){
    int [] a = {3,1,3,3,7,4};
    System.out.println(maxProfit(a));
}

public static int maxProfit(int[] prices) {
    if (prices == null || prices.length < 1) {
        return 0;
    }
    int max = 0;//最大利润
    int min = prices[0];//将第一个假设为最小值
    for(int i = 0; i <prices.length ; i++){
       int a = prices[i];
       //如果当前值小于最小值
        if (a < min)
            //将当前值设置为最小值
            min = a;
        else{
            //如果当前值大于等于最小值

            //如果 当前值 - 最小值 > 最大利润
            if(max < a - min)
                //将最大利润 设置为 当前值 - 最小值
                max = a - min;
        }
    }
    return max;
}

© 著作权归作者所有

下一篇: 接雨水-LeetCode
事儿爹

事儿爹

粉丝 2
博文 37
码字总数 25019
作品 0
朝阳
程序员
私信 提问
leetcode题解-122买卖股票的最佳时期

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

守望先生
03/15
0
0
LeetCode基础算法-动态规划

LeetCode基础算法-动态规划 LeetCode 动态规划 动态规划的核心步骤: 查看大问题的最优解能否使用小问题的最优解lai来解决。 如果能解决,那么总结出大问题的最优解和小问题最优解之间的关系...

24K男
2018/09/11
0
0
LeetCode基础算法-数组

LeetCode基础算法-数组 算法 LeetCode 数组相关 1. 从排序数组中删除重复项 描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 ...

24K男
2018/09/06
0
0
只能买卖两次股票的情况下,如何最大化收益

原题见: https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/ 给定一个股票价格(按日期排序)的列表,在最多可以买卖两次的情况下,如何最大化收益; 比如:1, 2, 1, 3,...

BlueWoods
2016/08/17
50
0
122. 买卖股票的最佳时机 II

题目 假设有一个数组,它的第 i 个元素是一个给定的股票在第 i 天的价格。 设计一个算法来找到最大的利润。你可以完成尽可能多的交易(多次买卖股票)。然而,你不能同时参与多个交易(你必须...

第四单元
2018/04/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式场景下如何保证消息队列实现最终一致性

考虑一个分布式场景中一个常见的场景:服务A执行某个数据库操作成功后,会发送一条消息到消息队列,现在希望只有数据库操作执行成功才发送这条消息。下面是一些常见的作法: 1. 先执行数据库...

中关村的老男孩
4分钟前
0
0
招银网络面试题、考点、知识点总结(Java岗)

java基础 全是基础不用多说肯定考的多,尤其是招银 OOP特性/java语言特性:封装、继承、多态 多态具体的表现:多态应用举例、如何调用父类方法(super)、重写和重载(重写父类方法的规则、构...

戎码益深
9分钟前
0
0
Mybatis深入源码分析之SQLSession一级缓存原理分析

源码分析图

须臾之余
13分钟前
0
0
成年人社交中的10个潜规则

前阵子我建议大家有空的时候,一定要去看《红楼梦》这本书。 原因就是从这本书,可以学习到很多很多人情世故,人情世故在学校里,老师几乎都不会教,所以我们只能靠自己去学。 只有自己去学了...

ZhangLG
15分钟前
0
0
在PyCharm中使用Pylint

简介 pylint是一个用于检查python代码中的错误,尝试强制执行编码标准的工具。它还可以查找某些类型错误,可以建议如何重构特定块的建议,并可以向您提供有关代码复杂性的详细信息。 官网:w...

哼_哼
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部