1. 程式人生 > >LeetCode 53 最大求子序和

LeetCode 53 最大求子序和

我自己寫的就兩種暴力法。

暴力法1 時間複試雜O(n3)

	public static int maxSubArray(int[] nums) {
		int len = nums.length;
		if (len == 0) {
			return 0;
		}
		int max = Integer.MIN_VALUE;
		int sum;
		for (int i = 0; i < len; i++) {
			for (int j = i; j < len; j++) {
				sum = 0;
				for (int k = i; k <=j; k++) {
					sum += nums[k];
				}
				if (sum > max) {
					max = sum;
				}
			}
		}
		return max;
	}

改進的暴力法 時間複雜度O(n2)

	    public static int maxSubArray2(int[] nums) {
	    	int max = Integer.MIN_VALUE;
	        int sum;
	        for (int i = 0; i < nums.length; i++) {// 子序列左端點
	            sum = 0;
	            for (int j = i; j < nums.length; j++) {// 子序列右端點
	                sum += nums[j];// 這裡就相當於每次根據前一次的序列來計算新的序列
	                if (sum > max)
	                    max = sum;
	            }
	        }
	        return max;
	    }