最大乘積或和子序列

最大乘積子序列:

public int maxProduct(int[] nums) {
        if(nums==null||nums.length==0){
            return 0;
        }
        int n=nums.length;
        int max[]=new int[n];
        int min[]=new int[n];
        max[0]=nums[0];
        min[0]=nums[0];
        int ans=nums[0];
        for(int i=1;i<n;i++){
           max[i]=Integer.max(min[i-1]*nums[i],Integer.max(nums[i],max[i-1]*nums[i]));
           min[i]=Integer.min(min[i-1]*nums[i],Integer.min(nums[i],max[i-1]*nums[i]));
           if(ans<max[i]){
               ans=max[i];
           }
        }

        return ans;
    }

最大和子序列

public static int maxSum(int[] nums) {
        if(nums==null||nums.length==0){
            return 0;
        }
        int n=nums.length;
        int max[]=new int[n];
        max[0]=nums[0];
        
        int ans=nums[0];
        for(int i=1;i<n;i++){
           max[i]=Integer.max(nums[i],nums[i]+max[i-1]);
           if(ans<max[i]){
        	   ans=max[i];
           }
        }
        return ans;
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章