@@ -12,40 +12,40 @@ class Solution {
12
12
mx = max(mx, x)
13
13
}
14
14
val width = 32 - Integer .numberOfLeadingZeros(mx)
15
- val lowbitPos : Array <MutableList <Int >> = Array <MutableList <Int >>(width) { i: Int -> ArrayList <Int >() }
16
- val intervals = Array <IntArray ? >(width + 1 ) { IntArray (3 ) }
15
+ val lowBitPos : Array <MutableList <Int >> = Array <MutableList <Int >>(width) { i: Int -> ArrayList <Int >() }
16
+ val intervals = Array <IntArray >(width + 1 ) { IntArray (3 ) }
17
17
var size = 0
18
18
var ans: Long = 0
19
19
for (i in nums.indices) {
20
20
val x = nums[i]
21
21
val tz = Integer .numberOfTrailingZeros(x)
22
- lowbitPos [tz].add(i)
22
+ lowBitPos [tz].add(i)
23
23
for (j in 0 .. < size) {
24
- intervals[j]!! [0 ] = gcd(intervals[j]!! [0 ], x)
24
+ intervals[j][0 ] = gcd(intervals[j][0 ], x)
25
25
}
26
- intervals[size]!! [0 ] = x
27
- intervals[size]!! [1 ] = i - 1
28
- intervals[size]!! [2 ] = i
26
+ intervals[size][0 ] = x
27
+ intervals[size][1 ] = i - 1
28
+ intervals[size][2 ] = i
29
29
size++
30
30
var idx = 1
31
31
for (j in 1 .. < size) {
32
- if (intervals[j]!! [0 ] != intervals[j - 1 ]!! [0 ]) {
33
- intervals[idx]!! [0 ] = intervals[j]!! [0 ]
34
- intervals[idx]!! [1 ] = intervals[j]!! [1 ]
35
- intervals[idx]!! [2 ] = intervals[j]!! [2 ]
32
+ if (intervals[j][0 ] != intervals[j - 1 ][0 ]) {
33
+ intervals[idx][0 ] = intervals[j][0 ]
34
+ intervals[idx][1 ] = intervals[j][1 ]
35
+ intervals[idx][2 ] = intervals[j][2 ]
36
36
idx++
37
37
} else {
38
- intervals[idx - 1 ]!! [2 ] = intervals[j]!! [2 ]
38
+ intervals[idx - 1 ][2 ] = intervals[j][2 ]
39
39
}
40
40
}
41
41
size = idx
42
42
for (j in 0 .. < size) {
43
- val g = intervals[j]!! [0 ]
44
- val l = intervals[j]!! [1 ]
45
- val r = intervals[j]!! [2 ]
43
+ val g = intervals[j][0 ]
44
+ val l = intervals[j][1 ]
45
+ val r = intervals[j][2 ]
46
46
ans = max(ans, g.toLong() * (i - l))
47
- val pos = lowbitPos [Integer .numberOfTrailingZeros(g)]
48
- val minL = if (pos.size > k) max(l, pos.get( pos.size - k - 1 ) !! ) else l
47
+ val pos = lowBitPos [Integer .numberOfTrailingZeros(g)]
48
+ val minL = if (pos.size > k) max(l, pos[ pos.size - k - 1 ] ) else l
49
49
if (minL < r) {
50
50
ans = max(ans, g.toLong() * 2 * (i - minL))
51
51
}
0 commit comments