1.题目
定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:
输入: nums = [0]
输出: [0]
提示:
1 <= nums.length <= 104
-231 <= nums[i] <= 231 - 1
进阶:你能尽量减少完成的操作次数吗?
2.思路
双指针
3.代码
object Solution {
def moveZeroes(nums: Array[Int]): Unit = {
var right = nums.length-1
var j = 0
for(x<- 0 to right){
if(nums(x)!=0){
var temp = nums(x)
nums(x) = nums(j) // num(j) 最终是j前面的元素(包括j都是非0元素),剩下的j后元素均为0,因为是不等于0的才进行j指针操作
nums(j) = temp
j=j+1
}
}
}
}
网友评论