File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -19,4 +19,15 @@ public int maxSubArray(int[] nums) {
1919
2020 return result ;
2121 }
22+
23+ public int maxSubArray1 (int [] nums ) {
24+ int result = nums [0 ];
25+ int sum = nums [0 ];
26+ for (int num : nums ) {
27+ sum = Math .max (num , sum + num );
28+ result = Math .max (result , sum );
29+ }
30+
31+ return result ;
32+ }
2233}
Original file line number Diff line number Diff line change @@ -759,6 +759,23 @@ class Solution {
759759 }
760760}
761761```
762+ #### 代码优化
763+ 上述代码中,为了表示sum这个值是否对result有增益,所以做了条件判断。但是从另一个角度看,条件判断的过程就是判断当前元素加上sum值后是否有增益,如果没有,那么sum就需要重新初始化。所以只要比较当前元素和sum的大小,取大的就可以了。
764+ ``` java
765+ class Solution {
766+ public int maxSubArray (int [] nums ) {
767+ int result = nums[0 ];
768+ int sum = 0 ;
769+ for (int num: nums) {
770+ sum = Math . max(num, sum + num);
771+ result = Math . max(result, sum);
772+ }
773+
774+ return result;
775+ }
776+ }
777+ ```
778+ 时间和空间都没有明显优化,但是代码变的干净且更加易于理解了。
762779### 解法二
763780#### 思路
764781
You can’t perform that action at this time.
0 commit comments