菜鳥寫代碼--複寫0,其餘元素平移--03

題目:
給你一個長度固定的整數數組 arr,請你將該數組中出現的每個零都複寫一遍,並將其餘的元素向右平移。
注意:請不要在超過該數組長度的位置寫入元素。
要求:請對輸入的數組 就地 進行上述修改,不要從函數返回任何東西。
示例 1:
輸入:[1,0,2,3,0,4,5,0]
輸出:null
解釋:調用函數後,輸入的數組將被修改爲:[1,0,0,2,3,0,0,4]
示例 2
輸入:[1,2,3]
輸出:null
解釋:調用函數後,輸入的數組將被修改爲:[1,2,3]
提示:

1 <= arr.length <= 10000
0 <= arr[i] <= 9
分析:
數組不能平移元素,但是題目不一樣,題目是插入一個元素,把後面的元素往後擠,後面的元素是不是就類似於平移了,那這樣擠得結果是最後一個元素被倒數第二個元素代替,倒數第二個元素被倒數第三個元素代替,循環下去。
(1)首先得遍歷數組找0
(2)如果找到0了,是不是我們應該遍歷0後面得元素,從後往前遍歷
(3)arr[y]應該大於x+1,要不然和0撞上了,我們是不是應該跳過a[x+1],那麼在插入0之後讓x++是不是就可以了
(4)主函數裏直接調用方法,不要加輸出,輸出一個方法,就是輸出方法的返回值,這個方法的返回值是void,就沒有返回值。
代碼如下:

public class pingyi {
	public static void main(String[] args) {
		int arr[]= {1,0,2,3,0,4,5,0};
		getMove(arr);
	}
public static void getMove(int arr[]) {
	for(int x=0;x<arr.length;x++) {
		if(arr[x]==0) {
			for(int y=arr.length-1;y>x;y--) {		
				arr[y]=arr[y-1];				
			}
			arr[x+1]=0;
			x++;
		}
		
	}
	for (int x=0;x<arr.length;x++) {
	System.out.print(arr[x]);
     }
   }
}

在這裏插入圖片描述

發佈了24 篇原創文章 · 獲贊 4 · 訪問量 1754
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章