给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums =[0,1,0,3,12]
输出:[1,3,12,0,0]
解题: 时间复杂度为O(n), -空间复杂度为O(1)
注意:1.只有快指针不是0的时候,替换快慢指针指向的数据,然后慢指针++
2.快指针++
public class Move0 {
public void MoveZero(int arr[]){
int l=0,r=0,temp;
while (r<arr.length){
if (arr[r]!=0){
temp=arr[r];
arr[r]=arr[l];
arr[l]=temp;
l++;
}
r++;
}
}
//测试--------------------------------------------------
public static void main(String[] args) {
Move0 move0=new Move0();
int arr[]= new int[]{0,1,0,3,15};
move0.MoveZero(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}