题目

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.

Example:

  1. Input: [0,1,0,3,12]
  2. Output: [1,3,12,0,0]

Note:

  1. You must do this in-place without making a copy of the array.
  2. Minimize the total number of operations.

题意

将数组中所有0放到最后,其余数按照原有顺序放到前面。

思路

见代码。


代码实现

Java

  1. class Solution {
  2. public void moveZeroes(int[] nums) {
  3. int p = 0, q = 0;
  4. while (q != nums.length) {
  5. if (nums[q] != 0) {
  6. int tmp = nums[p];
  7. nums[p++] = nums[q];
  8. nums[q] = tmp;
  9. }
  10. q++;
  11. }
  12. }
  13. }