题解 | 买卖股票的最好时机

买卖股票的最好时机

http://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec

分析

求买股票的最佳时期,应该注意的细节:

  • 卖出股票之前必须先买入
  • 卖出的价格>买入时候的价格(得考虑利润)
  • 给一个数组模拟股票,换句话说,就是查找数组中某两个元素差值的最大。
  • 如果无利可图,请return 0

解法一:暴力(常规大循环解决)

思路步骤:

  • 最显而易见的解法,当然可能并不是最优的解法

  • 声明变量ans=0存放最终答案

  • 两层for循环,分别找到数组中最大的差值,表示利润最大化

  • 比较并更新ans的值

  • 返回ans即为答案

Java代码参考:

import java.util.*;


public class Solution {
    /**
     * 
     * @param prices int整型一维数组 
     * @return int整型
     */
    //解法一:暴力大循环
    public int maxProfit (int[] prices) {
        // write code here
        int ans = 0;
        int len = prices.length;
        //爱的魔力for循环
        for(int i=0;i<len;i++){
            for(int j=i+1;j<len;j++){
                int tmp_ans = prices[j]-prices[i];
                //更新答案
                if(tmp_ans>ans){
    

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白专属-牛客题解 文章被收录于专栏

专注于牛客平台编程题题解,文字+图解。内容很细,小白友好系列

全部评论
解法二明显不对啊
1 回复 分享
发布于 2022-02-23 11:12
解法二的解释叫瞎几把解
3 回复 分享
发布于 2022-07-29 07:33
对于解法二:[2,8,1,5,2,6],这种最低点是1,但是并不是答案
2 回复 分享
发布于 2022-02-22 11:01
确实,题解2的解释确实是错的,但是答案确实是正确的。遍历数组,每次判断当前股价是否大于历史最小值,如果小于则当前股价为历史最小值,如果大于则判断股价差是否是历史最大值。写成中文略微有点拗口,还是看正确题解容易理解一些。
1 回复 分享
发布于 2023-02-22 15:41 江苏
解法2的解释是不对的,但是代码是对的
点赞 回复 分享
发布于 2022-03-16 00:57

相关推荐

有工作后先养猫:太好了,是超时空战警,我们有救了😋
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
11 7 评论
分享
牛客网
牛客企业服务