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

买卖股票的最好时机(一)

https://www.nowcoder.com/practice/351b87e53d0d44928f4de9b6217d36bb

import java.util.Scanner;

// 贪心算法
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        int n = in.nextInt();
        int[] nums = new int[n];
        for(int i = 0; i < n;i++){
            nums[i] = in.nextInt();
        }
        System.out.println(run(n,nums));
    }
     public static int run(int n,int[] nums){
        if(n == 1||n == 0){
            return 0;
        }

        int minPrice = nums[0];
        int maxMoney = 0;

        for(int i = 1;i < n;i++){
            if(nums[i] < minPrice){
                minPrice = nums[i];
            }
         maxMoney = Math.max(maxMoney , nums[i] - minPrice);
        }
        return maxMoney;
 }
}



/** // 动态规划的二维数组解题
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        int n = in.nextInt();
        int[] nums = new int[n];
        for(int i = 0; i < n;i++){
            nums[i] = in.nextInt();
        }
        System.out.println(run(n,nums));
    }

    public static int run(int n,int[] nums){
        if(n == 1||n == 0){
            return 0;
        }

        int[][] dp = new int[n][2];
        dp[0][0] = -nums[0];
        dp[0][1] = 0;

        for(int i = 1;i < n;i++){
            dp[i][0] = Math.max(dp[i-1][0] , -nums[i]);
            dp[i][1] = Math.max(dp[i-1][0] + nums[i] , dp[i-1][1]);
        }

        return dp[n-1][1];
    }
}*/

全部评论

相关推荐

04-03 12:09
東京大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务