File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed
Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ # -*- coding: utf-8 -*-
2+
3+ class Solution :
4+ """
5+ @param nums: A list of integers
6+ @return: An integer indicate the value of maximum difference between two
7+ Subarrays
8+ """
9+ def maxDiffSubArrays (self , nums ):
10+ # write your code here
11+ '''
12+ 记录从0到i的最大值和从n - 1到i的最小值,计算最大差。
13+ 因为比较大的部分可能出现在前半段,也有可能出现在后半段,
14+ 所以反转数组再计算一遍。
15+ '''
16+ ret = self ._maxDiffSubArrays (nums )
17+ nums .reverse ()
18+ return max (ret , self ._maxDiffSubArrays (nums ))
19+
20+ def _maxDiffSubArrays (self , nums ):
21+ left , right = [0 ] * len (nums ), [0 ] * len (nums )
22+ _sum = 0
23+ max_sum , min_sum = - 2147483648 , 2147483647
24+ for i in xrange (len (nums )):
25+ _sum += nums [i ]
26+ max_sum = max (_sum , max_sum )
27+ if _sum < 0 :
28+ _sum = 0
29+ left [i ] = max_sum
30+ _sum = 0
31+ for i in xrange (len (nums ) - 1 , - 1 , - 1 ):
32+ _sum += nums [i ]
33+ min_sum = min (_sum , min_sum )
34+ if _sum > 0 :
35+ _sum = 0
36+ right [i ] = min_sum
37+ ret = 0
38+ for i in xrange (1 , len (nums )):
39+ ret = max (ret , abs (left [i - 1 ] - right [i ]))
40+ return ret
You can’t perform that action at this time.
0 commit comments