zoukankan      html  css  js  c++  java
  • Moving Zeros

    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:

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

    Find the first 0, exchange it with the first non-zero number from its right part. 

    Runtime: 36ms.

     1 class Solution {
     2 public:
     3     void moveZeroes(vector<int>& nums) {
     4         int n = nums.size();
     5         if(n <= 1) return;
     6         
     7         int left = 0, right = 0;
     8         while(right < n){
     9             while(nums[left] != 0) 
    10                 left++; //find the first number equals to 0
    11             right = left + 1;
    12             while(nums[right] == 0) //find the first number doesn't equal to 0
    13                 right++;
    14                 
    15             if(right >= n) return;
    16             
    17             swap(nums[left], nums[right]);
    18             left++;
    19             right++;
    20         }
    21         return;
    22     }
    23 };
  • 相关阅读:
    获取网站IP地址(Linux,C)
    linux_c_udp_example
    linux_c_tcp_example
    golang-sort
    docker_jenkins
    依赖抽象,而不要依赖具体实现
    网络杂记
    游戏开发中遇到的问题
    随手杂记
    go多态
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4834095.html
Copyright © 2011-2022 走看看