標籤:calling inter www time imm with making swap iter
Given an array nums
, write a function to move all 0
‘s to the end of it while maintaining the relative order of the non-zero elements.
For example, given nums = [0, 1, 0, 3, 12]
, after calling your function, nums
should be [1, 3, 12, 0, 0]
.
Note:
- You must do this in-place without making a copy of the array.
- Minimize the total number of operations.
題目標籤:Array, Two Pointers
題目給了我們一個nums array, 讓我們把所有的0 都移動到最後面,保留其他數位排序。
利用two pointers p1 和 p2, 基本思想是讓p2停留在0的數字上,讓p1找到不是0的數字,對換p1 p2的值。
遍曆nums array,當遇到0的話,p1++;當遇到不是0的數字,對換p1 和 p2的值,p1++ p2++。
Java Solution:
Runtime beats 74.14%
完成日期:04/27/2017
關鍵詞:Array, Two Pointers
關鍵點:找到不是0的數字,與0置換
1 public class Solution 2 { 3 public void moveZeroes(int[] nums) 4 { 5 int p1 = 0; // iterate each number 6 int p2 = 0; // stop at 0 7 8 while(p1 < nums.length) 9 {10 if(nums[p1] != 0) // find the non-zero number11 {12 if(p1 != p2) // swap non-zero number with zero number 13 { // if p1 = p2, no need to swap14 int temp = nums[p1];15 nums[p1] = nums[p2];16 nums[p2] = temp;17 }18 19 p2++;20 }21 22 p1++;23 }24 25 }26 }
參考資料:N/A
LeetCode 演算法題目列表 - LeetCode Algorithms Questions List
LeetCode 283. Move Zeroes (移動零)