原题题目
代码实现(首刷自解) 一遍遍历 但为什么效率极低
int maxProfit ( int * prices, int pricesSize) {
int i, min = INT_MAX, max = - 1 , profit = - 1 ;
for ( i= 0 ; i< pricesSize; i++ )
{
if ( prices[ i] < min)
{
min = prices[ i] ;
max = prices[ i] ;
}
else
{
if ( prices[ i] > max)
{
max = prices[ i] ;
if ( max - min > profit)
profit = max - min;
}
}
}
return profit;
}
代码实现(二刷C++ 整理股票博客)
class Solution {
public :
int maxProfit ( vector< int > & prices) {
int size = prices. size ( ) , minbuy = prices[ 0 ] , maxsold = 0 ;
for ( const auto & num: prices)
{
maxsold = max ( maxsold, num- minbuy) ;
minbuy = min ( minbuy, num) ;
}
return maxsold;
}
} ;
代码实现(三刷自解 DAY 137 整理TOP 精选面试题)
class Solution {
public :
int maxProfit ( vector< int > & prices) {
int maxbuy = - prices[ 0 ] , maxsell = 0 ;
for ( int i= 1 ; i< prices. size ( ) ; ++ i)
{
maxsell = max ( maxsell, maxbuy+ prices[ i] ) ;
maxbuy = max ( maxbuy, - prices[ i] ) ;
}
return maxsell;
}
} ;
代码实现(四刷自解 DAY 222 C++)
class Solution {
public :
int maxProfit ( vector< int > & prices) {
int prebuy = - prices[ 0 ] , profit = 0 ;
for ( int i = 1 ; i < prices. size ( ) ; ++ i)
{
profit = max ( profit, prices[ i] + prebuy) ;
prebuy = max ( prebuy, - prices[ i] ) ;
}
return profit;
}
} ;
代码实现(五刷自解 DAY 243 C++)
class Solution {
public :
int maxProfit ( vector< int > & prices) {
int prebuy = - prices[ 0 ] , presold = 0 , cold_sold = 0 , nowbuy = 0 , nowsold = 0 ;
int size = prices. size ( ) ;
for ( int i = 1 ; i < size; ++ i)
{
cold_sold = presold;
nowsold = prebuy + nums[ i] ;
nowbuy = max ( cold_sold - nums[ i] , nowbuy) ;
presold = max ( prices[ i] , presold) ;
}
return max ( presold, nowsold) ;
}
} ;
代码实现(六刷自解 DAY 269 C++)
class Solution {
public :
int maxProfit ( vector< int > & prices) {
int buy = - prices[ 0 ] , sold = 0 ;
int size = prices. size ( ) ;
for ( int i = 1 ; i < size; ++ i) {
sold = max ( buy + prices[ i] , sold) ;
buy = max ( buy, - prices[ i] ) ;
}
return sold;
}
} ;
代码实现(七刷自解 DAY 2 Golang)
func max ( x, y int ) int {
if x >= y {
return x
} else {
return y
}
}
func maxProfit ( prices [ ] int ) int {
prebuy, presold := - prices[ 0 ] , 0
for i := 1 ; i < len ( prices) ; i++ {
presold = max ( presold, prebuy + prices[ i] )
prebuy = max ( prebuy, - prices[ i] )
}
return presold
}