python-leetcode-2460. 对数组执行操作

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

我们可以按照题目的描述逐步实现这个过程:

操作流程:

  1. 遍历数组 nums 的前 n-1 个元素,对每个 nums[i]nums[i+1] 进行判断:

    • 如果 nums[i] == nums[i+1],则:

      • nums[i] = nums[i] * 2

      • nums[i+1] = 0

  2. 完成所有操作后,将数组中的所有 0 移动到数组末尾,保持非零元素的相对顺序不变。


示例代码(Python):

def apply_operations(nums):
    n = len(nums)
    
    # 第一步:按题意进行操作
    for i in range(n - 1):
        if nums[i] == nums[i + 1]:
            nums[i] *= 2
            nums[i + 1] = 0
    
    # 第二步:将所有 0 移动到末尾
    result = [num for num in nums if num != 0]  # 保留非零元素
    zeros = [0] * (n - len(result))            # 添加相应个数的零
    return result + zeros

示例测试:

print(apply_operations([1,0,2,0,0,1]))  # 输出:[1, 2, 1, 0, 0, 0]
print(apply_operations([2,2,0,4,4,8]))  # 输出:[4, 4, 8, 0, 0, 0]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值