我的代码↓
class Solution:
def applyOperations(self, nums: List[int]) -> List[int]:
nums_len=len(nums)
zero_list=[]
# 第一次遍历,记录0元素的下标
for i in range(nums_len-1):
if nums[i]==0:
zero_list.append(i)
if nums[i]==nums[i+1]:
nums[i]*=2
nums[i+1]=0
else:
continue
# 第二次遍历,将0元素移动至末尾
for _ in zero_list:
nums.remove(0)
nums.append(0)
return nums
官方题解代码↓
class Solution:
def applyOperations(self, nums: List[int]) -> List[int]:
n = len(nums)
j = 0
for i in range(n):
if i + 1 < n and nums[i] == nums[i + 1]:
nums[i] *= 2
nums[i + 1] = 0
# 若当前元素为非零元素,则与j下标对应的零元素互换位置
if nums[i] != 0:
nums[i], nums[j] = nums[j], nums[i]
j += 1
return nums