博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode之旅】 数组 - 121. 买卖股票的最佳时机
阅读量:2057 次
发布时间:2019-04-28

本文共 851 字,大约阅读时间需要 2 分钟。

给定一个数组,它的第 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。

解答:

/** * 思路:设置一个索引值,遍历数组中的数依次去减去这个索引值对应的数 * 如果相减结果小于0,说明后面的数小于改索引值对应的数, * 那么将索引值移动到该数对应的索引值继续判断 * * 如果相减结果大于0,说明后面的数大于索引值对应的数, * 那么索引值的位置不变,继续让下一个值与索引值对应的数相减 * 当相减结果大于0时,比较profit(盈利值)和差值,谁大取谁 * * @param prices * @return */public int maxProfit(int[] prices) {    //计算盈利值    int profit = 0;    int index = 0;    for (int i = 1; i < prices.length; i++) {        int temp = prices[i] - prices[index];        if (temp < 0){            index = i;        }else{            //差值和profit谁大取谁            profit = profit > temp ? profit : temp;        }    }    return profit;}

 

转载地址:http://otslf.baihongyu.com/

你可能感兴趣的文章
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
Leetcode C++ 剑指 Offer 09. 用两个栈实现队列
查看>>
Leetcode C++《每日一题》20200707 112. 路径总和
查看>>
云原生 第十一章 应用健康
查看>>
Leetcode C++ 《第202场周赛》
查看>>