leetcode 2460.对数组执行操作 2023.05.06每日一题

2460. 对数组执行操作 - 力扣(Leetcode)

思路

直接模拟

Code

第一版
时间复杂度:O(n)
空间复杂度:O(n)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
func applyOperations(nums []int) []int {
var res []int
res = make([]int, len(nums))
index := 0
// 第一次遍历 进行赋值操作
for i := 0; i < len(nums)-1; i++ {
if nums[i] == nums[i+1] {
nums[i] *= 2
nums[i+1] = 0
}
}
// 第二次遍历 将非0移动到前边
for i := 0; i < len(nums); i++ {
if nums[i] != 0 {
res[index] = nums[i]
index++
}
}
return res
}

第二版
时间复杂度:O(n)
空间复杂度:O(1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func applyOperations(nums []int) []int {
n := len(nums)
j := 0
for i := 0; i < n; i++ {
if i+1 < n && nums[i] == nums[i+1] {
nums[i] *= 2
nums[i + 1] = 0
}
if nums[i] != 0 {
nums[i], nums[j] = nums[j], nums[i]
j++
}
}
return nums
}


leetcode 2460.对数组执行操作 2023.05.06每日一题
https://leiqi.top/2023-06-05-869070f8049d.html
作者
Lei Qi
发布于
2023年6月5日
许可协议