Skip to content

Commit 0587d00

Browse files
committed
modified Diagonal Traverse II
1 parent ade1c8f commit 0587d00

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

Array/DiagonalTraverse2/solution.py

+15-6
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,22 @@
33

44
def findDiagonalOrder(nums: List[List[int]]) -> List[int]:
55
# make a index sum pair list [0][0] => 0, [0][1] => 1, [1][0] => 1...
6-
indexSumPairs = list()
6+
# indexSumPairs = list()
7+
# for i in range(len(nums)):
8+
# for j in range(len(nums[i])):
9+
# indexSumPairs.append((i+j, nums[i][j]))
10+
# # sort by index sum reversed (so it starts with "bottom" of nums array)
11+
# indexSumPairs.sort(key=lambda pair: pair[0], reverse=True)
12+
# return [v for _, v in reversed(indexSumPairs)]
13+
result = list()
14+
maxIndexSum = 0
715
for i in range(len(nums)):
8-
for j in range(len(nums[i])):
9-
indexSumPairs.append((i+j, nums[i][j]))
10-
# sort by index sum reversed (so it starts with "bottom" of nums array)
11-
indexSumPairs.sort(key=lambda pair: pair[0], reverse=True)
12-
return [v for _, v in reversed(indexSumPairs)]
16+
maxIndexSum = max(maxIndexSum, i+len(nums[i])-1)
17+
for sum in range(maxIndexSum+1):
18+
for i in range(sum+1):
19+
if sum-i < len(nums) and i < len(nums[sum-i]):
20+
result.append(nums[sum-i][i])
21+
return result
1322

1423

1524
# test driver:

0 commit comments

Comments
 (0)