3011. 判断一个数组是否可以变为有序

修改矩阵

解法一: 循环

go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
func canSortArray(nums []int) bool {
preBit := 0
preNum := 0
curNum := 0
for _, num := range nums {
if num < preNum {
return false
}
curBit := calcBitNum(num)
if curBit != preBit {
if num < curNum {
return false
}
preBit = curBit
preNum = curNum
}
curNum = max(curNum, num)
}
return true
}

func calcBitNum(num int) int {
count := 0
for num != 0 {
count++
num &= num - 1
}
return count
}
作者

wuhunyu

发布于

2024-07-13

更新于

2025-01-15

许可协议