- 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>& 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 < 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>& 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 < 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>& 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 < 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 < 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
};刷题微信群:

京公网安备 11010502036488号