zoukankan      html  css  js  c++  java
  • 283. 移动零

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
    示例:
    输入: [0,1,0,3,12]
    输出: [1,3,12,0,0]
    说明:
     必须在原数组上操作,不能拷贝额外的数组。
     尽量减少操作次数。
    思路:
    暴力法:直接运用vector容器的swap函数,从后往前,发现一个0就再来一个循环一直交换到最后
     1 void moveZeroes(vector<int>& nums) 
     2     {
     3         int len = nums.size();
     4     
    3 for(int i = nums.size()-1; i >= 0; i--) 6 { 7 if(nums[i] == 0) 8 { 9 for(int j = i; j < nums.size()-1; j++) 10 { 11 swap(nums[j], nums[j+1]); 12 } 13 } 14 } 15 }

    双指针: 指针j 始终指向第一个不为0的数组元素, 指针i 一直往前索引,然后交换,一次遍历即可,很快。

     1 void moveZeroes(vector<int>& nums) 
     2 {
     3     int i,j;
     4     for(i=0,j=0;i<nums.size();i++)
     5     {
     6         if(nums[i]!=0)
     7         {
     8             swap(nums[i],nums[j]);
     9             j++;
    10         }
    11     }
    12 }
     
  • 相关阅读:
    hdu2588-GCD-(欧拉函数+分解因子)
    欧拉定理及其扩展定理公式
    hdu2973-YAPTCHA-(欧拉筛+威尔逊定理+前缀和)
    hdu5391-Zball in Tina Town-威尔逊定理(假证明)
    deleted
    deleted
    deleted
    deleted
    deleted
    deleted
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/12858637.html
Copyright © 2011-2022 走看看