@@ -12,40 +12,40 @@ class Solution {
1212 mx = max(mx, x)
1313 }
1414 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 ) }
1717 var size = 0
1818 var ans: Long = 0
1919 for (i in nums.indices) {
2020 val x = nums[i]
2121 val tz = Integer .numberOfTrailingZeros(x)
22- lowbitPos [tz].add(i)
22+ lowBitPos [tz].add(i)
2323 for (j in 0 .. < size) {
24- intervals[j]!! [0 ] = gcd(intervals[j]!! [0 ], x)
24+ intervals[j][0 ] = gcd(intervals[j][0 ], x)
2525 }
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
2929 size++
3030 var idx = 1
3131 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 ]
3636 idx++
3737 } else {
38- intervals[idx - 1 ]!! [2 ] = intervals[j]!! [2 ]
38+ intervals[idx - 1 ][2 ] = intervals[j][2 ]
3939 }
4040 }
4141 size = idx
4242 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 ]
4646 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
4949 if (minL < r) {
5050 ans = max(ans, g.toLong() * 2 * (i - minL))
5151 }
0 commit comments