File tree 3 files changed +126
-0
lines changed
3 files changed +126
-0
lines changed Original file line number Diff line number Diff line change @@ -190,6 +190,49 @@ func getMaxMatrix(matrix [][]int) []int {
190
190
}
191
191
```
192
192
193
+ ``` swift
194
+ class Solution {
195
+ func getMaxMatrix (_ matrix : [[Int ]]) -> [Int ] {
196
+ let m = matrix.count , n = matrix[0 ].count
197
+ var s = Array (repeating : Array (repeating : 0 , count : n), count : m + 1 )
198
+
199
+ for i in 0 ..< m {
200
+ for j in 0 ..< n {
201
+ s[i + 1 ][j] = s[i][j] + matrix[i][j]
202
+ }
203
+ }
204
+
205
+ var mx = matrix[0 ][0 ]
206
+ var ans = [0 , 0 , 0 , 0 ]
207
+
208
+ for i1 in 0 ..< m {
209
+ for i2 in i1..< m {
210
+ var nums = [Int ](repeating : 0 , count : n)
211
+ for j in 0 ..< n {
212
+ nums[j] = s[i2 + 1 ][j] - s[i1][j]
213
+ }
214
+
215
+ var start = 0
216
+ var f = nums[0 ]
217
+ for j in 1 ..< n {
218
+ if f > 0 {
219
+ f += nums[j]
220
+ } else {
221
+ f = nums[j]
222
+ start = j
223
+ }
224
+ if f > mx {
225
+ mx = f
226
+ ans = [i1, start, i2, j]
227
+ }
228
+ }
229
+ }
230
+ }
231
+ return ans
232
+ }
233
+ }
234
+ ```
235
+
193
236
<!-- tabs: end -->
194
237
195
238
<!-- end -->
Original file line number Diff line number Diff line change @@ -195,6 +195,49 @@ func getMaxMatrix(matrix [][]int) []int {
195
195
}
196
196
```
197
197
198
+ ``` swift
199
+ class Solution {
200
+ func getMaxMatrix (_ matrix : [[Int ]]) -> [Int ] {
201
+ let m = matrix.count , n = matrix[0 ].count
202
+ var s = Array (repeating : Array (repeating : 0 , count : n), count : m + 1 )
203
+
204
+ for i in 0 ..< m {
205
+ for j in 0 ..< n {
206
+ s[i + 1 ][j] = s[i][j] + matrix[i][j]
207
+ }
208
+ }
209
+
210
+ var mx = matrix[0 ][0 ]
211
+ var ans = [0 , 0 , 0 , 0 ]
212
+
213
+ for i1 in 0 ..< m {
214
+ for i2 in i1..< m {
215
+ var nums = [Int ](repeating : 0 , count : n)
216
+ for j in 0 ..< n {
217
+ nums[j] = s[i2 + 1 ][j] - s[i1][j]
218
+ }
219
+
220
+ var start = 0
221
+ var f = nums[0 ]
222
+ for j in 1 ..< n {
223
+ if f > 0 {
224
+ f += nums[j]
225
+ } else {
226
+ f = nums[j]
227
+ start = j
228
+ }
229
+ if f > mx {
230
+ mx = f
231
+ ans = [i1, start, i2, j]
232
+ }
233
+ }
234
+ }
235
+ }
236
+ return ans
237
+ }
238
+ }
239
+ ```
240
+
198
241
<!-- tabs: end -->
199
242
200
243
<!-- end -->
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ func getMaxMatrix( _ matrix: [ [ Int ] ] ) -> [ Int ] {
3
+ let m = matrix. count, n = matrix [ 0 ] . count
4
+ var s = Array ( repeating: Array ( repeating: 0 , count: n) , count: m + 1 )
5
+
6
+ for i in 0 ..< m {
7
+ for j in 0 ..< n {
8
+ s [ i + 1 ] [ j] = s [ i] [ j] + matrix[ i] [ j]
9
+ }
10
+ }
11
+
12
+ var mx = matrix [ 0 ] [ 0 ]
13
+ var ans = [ 0 , 0 , 0 , 0 ]
14
+
15
+ for i1 in 0 ..< m {
16
+ for i2 in i1..< m {
17
+ var nums = [ Int] ( repeating: 0 , count: n)
18
+ for j in 0 ..< n {
19
+ nums [ j] = s [ i2 + 1 ] [ j] - s[ i1] [ j]
20
+ }
21
+
22
+ var start = 0
23
+ var f = nums [ 0 ]
24
+ for j in 1 ..< n {
25
+ if f > 0 {
26
+ f += nums [ j]
27
+ } else {
28
+ f = nums [ j]
29
+ start = j
30
+ }
31
+ if f > mx {
32
+ mx = f
33
+ ans = [ i1, start, i2, j]
34
+ }
35
+ }
36
+ }
37
+ }
38
+ return ans
39
+ }
40
+ }
You can’t perform that action at this time.
0 commit comments