1. 程式人生 > >LeetCode 將陣列中的零移動到最後,保持原陣列其它元素順序不變

LeetCode 將陣列中的零移動到最後,保持原陣列其它元素順序不變

給定一個數組 nums, 編寫一個函式將所有 0 移動到它的末尾,同時保持非零元素的相對順序。

例如, 定義 nums = [0, 1, 0, 3, 12],呼叫函式之後, nums 應為 [1, 3, 12, 0, 0]

用兩個標記分別統計總共的元素個數和遍歷到非零的元素個數,統計元素個數的下標每次都加一,如果非零則統計非零元素的下標加一,遍歷時統計遍歷到非零元素將該元素賦值給非統計零元素下標位置所對應的值,第一遍便利結束後將總遍歷元素減去非零元素部分賦值為0

     var slow: Int = 0
		var fast: Int = 0
		for (i in mArray.indices) {
			if (mArray[i] != 0) {
				mArray[slow] = mArray[i]
				slow++
			}
			fast++
		}
		for (i in slow..(fast-1)) {
			mArray[i] = 0
		}