- 1、题目描述:
图片说明

- 2、题目链接:

https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec?tpId=117&&tqId=34928&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking
-3、 设计思想:

图片说明
图片说明
-4、视频讲解链接B站视频讲解

-5、代码:
c++版本:

 class Solution {
public:
    /**
     * 
     * @param prices int整型vector 
     * @return int整型
     */
    int maxProfit(vector<int>&amp; prices) {
        // write code here
        if(prices.size() == 0) return 0;
        int dp[prices.size()][2];
        dp[0][0] = 0;
        dp[0][1] =  prices[0];
        for(int i = 1;i &lt; prices.size();i ++){
            dp[i][0] = max(dp[i-1][0],prices[i] - dp[i-1][1]);
            dp[i][1] = min(dp[i-1][1],prices[i]);
        }
        return dp[prices.size()-1][0];

    }
};
class Solution {
public:
    /**
     * 
     * @param prices int整型vector 
     * @return int整型
     */
    int maxProfit(vector<int>&amp; prices) {
        // write code here
        if(prices.size() == 0) return 0;
        int dp[2];
        dp[0] = 0;
        dp[1] = prices[0];
        for(int i = 1;i &lt; prices.size();i ++){
            dp[0] = max(dp[0],prices[i] - dp[1]);
            dp[1] = min(dp[1],prices[i]);
        }
        return dp[0];

    }
};
class Solution {
public:
    /**
     * 
     * @param prices int整型vector 
     * @return int整型
     */
    int maxProfit(vector<int>&amp; prices) {
        // write code here
        if(prices.size() == 0)return 0; //如果给定数组的长度为0,可以直接返回结果0
        int min_input = prices[0];//初始化买入价格为第一个元素
        int max_output = 0;//定义一个最大的利润
        for(int i = 1;i &lt; prices.size();i ++){
            min_input = min(min_input,prices[i]);//保存最小的买入价格
            max_output = max(max_output,prices[i]-min_input);//每遍历一个位置,就需要求出当前位置卖出的价钱
        }
        return max_output;

    }
};


Java版本:

import java.util.*;
public class Solution {
    /**
     * 
     * @param prices int整型一维数组 
     * @return int整型
     */
    public int maxProfit (int[] prices) {
        // write code here
        if(prices.length == 0) return 0;//如果给定数组的长度为0,可以直接返回结果0
        int min_input = prices[0];//初始化买入价格为第一个元素
        int max_output = 0;//定义一个最大的利润
        for(int i = 1;i &lt; prices.length;i ++){
            min_input = Math.min(min_input,prices[i]);//保存最小的买入价格
            max_output = Math.max(max_output,prices[i] - min_input);//每遍历一个位置,就需要求出当前位置卖出的价钱
        }
        return max_output;

    }
}

Python版本:

#
# 
# @param prices int整型一维数组 
# @return int整型
#
class Solution:
    def maxProfit(self , prices ):
        # write code here
        if len(prices) == 0:#如果给定数组的长度为0,可以直接返回结果0
            return 0
        min_input = prices[0] #初始化买入价格为第一个元素
        max_output = 0#定义一个最大的利润
        for i in range(1,len(prices)):
            min_input = min(min_input,prices[i])#保存最小的买入价格
            max_output = max(max_output,prices[i] - min_input)#每遍历一个位置,就需要求出当前位置卖出的价钱
        return max_output

JavaScript代码:

/**
  * 
  * @param prices int整型一维数组 
  * @return int整型
  */
function maxProfit( prices ) {
    // write code here
    if(prices.length == 0) return 0;//如果给定数组的长度为0,可以直接返回结果0
    let min_input = prices[0];//初始化买入价格为第一个元素
    let max_output = 0;//定义一个最大的利润
    for(let i = 1;i < prices.length;i ++){
        min_input = Math.min(min_input,prices[i]);//保存最小的买入价格
        max_output = Math.max(max_output,prices[i] - min_input);//每遍历一个位置,就需要求出当前位置卖出的价钱
    }
    return max_output;
}
module.exports = {
    maxProfit : maxProfit
};

刷题微信群:
图片说明