Skip to content

Commit cbeafe9

Browse files
authored
feat: improve SortArray2D() to support variable-length rows and prevent panics (#1481)
1 parent 133cffd commit cbeafe9

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

util/util.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,21 @@ func Array2DEquals(a [][]string, b [][]string) bool {
8282

8383
// SortArray2D Sorts the two-dimensional string array.
8484
func SortArray2D(arr [][]string) {
85-
if len(arr) != 0 {
86-
sort.Slice(arr, func(i, j int) bool {
87-
elementLen := len(arr[0])
88-
for k := 0; k < elementLen; k++ {
89-
if arr[i][k] < arr[j][k] {
90-
return true
91-
} else if arr[i][k] > arr[j][k] {
92-
return false
93-
}
94-
}
95-
return true
96-
})
85+
if len(arr) == 0 {
86+
return
9787
}
88+
sort.Slice(arr, func(i, j int) bool {
89+
minArrLen := len(arr[i])
90+
if len(arr[j]) < minArrLen {
91+
minArrLen = len(arr[j])
92+
}
93+
for k := 0; k < minArrLen; k++ {
94+
if arr[i][k] != arr[j][k] {
95+
return arr[i][k] < arr[j][k]
96+
}
97+
}
98+
return len(arr[i]) < len(arr[j])
99+
})
98100
}
99101

100102
// SortedArray2DEquals determines whether two 2-dimensional string arrays are identical.

0 commit comments

Comments
 (0)