leetCode (Maximum Subarray)
阿新 • • 發佈:2018-11-21
Title: Remove Element 53
Difficulty:Easy
原題leetcode地址:https://leetcode.com/problems/maximum-subarray/
1. 具體說明詳見程式碼中的註釋,時間&空間複雜度如下:
時間複雜度:O(n),一層while迴圈,遍歷的是陣列的長度。
空間複雜度:O(1),沒有申請額外的空間。
/** * 對於一個新的數,有兩種選擇: * 1、加入之前的一組 * 2、自己從頭開始起一個組 * 如果加入之前的組比自己從頭開始起的組大,那就加入之前的一組;否則自己從頭開始起一個組 * @param nums * @return */ public static int maxSubArray(int[] nums) { if (nums.length <= 0 || nums == null) { return 0; } int sum[] = new int[nums.length]; int max = nums[0]; sum[0] = max; for (int i = 1; i < nums.length; i++) { sum[i] = maxNums(nums[i], sum[i - 1] + nums[i]); max = maxNums(max, sum[i]); } return max; } /** * 兩個數判斷大小 * @param num1 * @param num2 * @return */ private static int maxNums(int num1, int num2) { if (num1 >= num2) { return num1; } else { return num2; } }