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

买卖股票的最好时机

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

相关推荐

嵌入式小辣鸡:包装好一点,校内的奖项可以不用写,校内项目经历最后两点写的太差了,详细讲一下内容,名字变一下。只需要写项目实现了什么,自己在其中做了什么就好,查看图片
点赞 评论 收藏
分享
评论
12
7
分享

创作者周榜

更多
牛客网
牛客企业服务