中文描述
给你一个int数组,该数组有可能包含0,如果数组中含有0,请把0放在数组的后面,并且保证处理后非零元素的相对顺序不发生改变。例如:[0,2,0,4,3,0],处理后为[2,4,3,0,0,0]。注意:不能通过copy数组实现,并且尽可能少的操作。
说明
因为需要保证非零元素的相对顺序,因此不能通过元素互换,只能通过元素移动来实现,又因为0元素需要排在数组末尾,因此需要记录末尾0元素的存放位置。
java代码
public class Solution {
public void moveZeroes(int[] nums) {
if(nums != null){
/**记录非零元素的开始位置*/
int start = 0;
/**记录0元素可以存储的位置*/
int end = nums.length-1;
while(start < end){
if(nums[start] == 0){
int temp = nums[start];
/**移动元素*/
for(int i=start;i<end;i++){
nums[i] = nums[i+1];
}
nums[end] = temp;
end--;
}else{
start++;
}
}
}
}
}
备注
先临时记录自己的方法,刷完easy题之后再去看别人的方法,如果有更好的方法,会做补充,如果你有的话请留言,谢谢啦