關注我帶你看更多技術知識和面試
還是蠻簡單的 思路如果會了;
思路如下:
将其中一個數組中的非零元素擷取到 并依次次放在數組中 ,, 剩下的空位指派為 0 就好了
詳細的話: 定義兩個下标 (相當于快慢下标),然後慢下标對應的值為 等于非零的值(通過快下标擷取到的), 差的補0;
public class Day4_demo6 {
public static void main(String[] args) {
int[] nums={0,1,0,3,12};
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}
int fast = 0,slow=0; //定義兩個下标
while(fast<nums.length){
for(int i=0;i<nums.length;i++){
if(nums[fast]!=0){
nums[slow]=nums[fast];
slow++;
fast++;
}else{
fast++;
}
}
}
for(int i=slow;i<nums.length;i++){
nums[i]=0;
}
System.out.println("");
System.out.println("移動後如下" );
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}
}
}
複制