给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
题解
class Solution {
public void moveZeroes(int[] nums) {
int slow=0,fast=0;
for(;fast<nums.length;fast++){
if(nums[fast]!=0){
nums[slow]=nums[fast];
slow++;
}
}
for(int i=slow;i<nums.length;i++){
nums[i]=0;
}
}
}
题目并不难,但还是从中学到了新东西。
利用快慢指针,完成了两个for循环的工作,保证了在原数组内部进行元素移动赋值,并且保证了相对次序。
刚才做的求平方根,要求不是用库函数。可以利用二分查找,需要注意的是时间限制,将中间值mid*mid强转为long,省的溢出,再与num比较即可。