leetBook 力扣数组类算法入门学习笔记(一)
移动0
给定一个数组nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。
标签:数组,双指针
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/all-about-array/x9rh8e/
来源:力扣(LeetCode)
void moveZeroes(int* nums, int numsSize){
int i,n=0;
for( i =0;i<numsSize;i++)//遍历数组1次
{
if(nums[i]==0)
{
n++;//记0的个数
//如果nums[i]等于0,指针右移
}
else
{
nums[i-n]=nums[i];
//当nums[i]不等于0时,将nums[i]的值向前移动n
}
}
for( i = 1;i<=n;i++)
{
nums[numsSize-i] =0; //将数组后n个数赋值为0
}
}