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