给你一个下标从 0 开始的数组 nums ,数组大小为 n ,且由 非负 整数组成。 你需要对数组执行 n - 1 步操作,其中第 i 步操作(从 0 开始计数)要求对 nums 中第 i 个元素执行下述指令: 如果 nums[i] == nums[i + 1] ,则 nums[i] 的值变成原来的 2 倍,nums[i + 1] 的值变成 0 。否则,跳过这步操作。 在执行完 全部 操作后,将所有 0 移动 到数组的 末尾 。 例如,数组 [1,0,2,0,0,1] 将所有 0 移动到末尾后变为 [1,2,1,0,0,0] 。 返回结果数组。 注意 操作应当 依次有序 执行,而不是一次性全部执行。 示例 1: 输入:nums = [1,2,2,1,1,0] 输出:[1,4,2,0,0,0] 解释:执行以下操作: - i = 0: nums[0] 和 nums[1] 不相等,跳过这步操作。 - i = 1: nums[1] 和 nums[2] 相等,nums[1] 的值变成原来的 2 倍,nums[2] 的值变成 0 。数组变成 [1,4,0,1,1,0] 。 - i = 2: nums[2] 和 nums[3] 不相等,所以跳过这步操作。 - i = 3: nums[3] 和 nums[4] 相等,nums[3] 的值变成原来的 2 倍,nums[4] 的值变成 0 。数组变成 [1,4,0,2,0,0] 。 - i = 4: nums[4] 和 nums[5] 相等,nums[4] 的值变成原来的 2 倍,nums[5] 的值变成 0 。数组变成 [1,4,0,2,0,0] 。 执行完所有操作后,将 0 全部移动到数组末尾,得到结果数组 [1,4,2,0,0,0] 。
时间: 2024-03-05 12:54:16 浏览: 91
js代码-给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
好的,这是一道数组操作题目。我们可以先遍历整个数组,找到相邻的相同数字,然后进行相应的操作。具体来说,如果相邻的两个数相等,那么第一个数乘以2,第二个数清零;如果不相等,直接跳过。接下来,我们可以再遍历一遍数组,把所有的0移动到末尾即可。代码如下:
```python
def moveZeroes(nums):
n = len(nums)
for i in range(n-1):
if nums[i] == nums[i+1]:
nums[i] *= 2
nums[i+1] = 0
j = 0
for i in range(n):
if nums[i] != 0:
nums[j] = nums[i]
j += 1
while j < n:
nums[j] = 0
j += 1
return nums
```
这样就可以得到正确的结果了。
阅读全文