zoukankan      html  css  js  c++  java
  • 删除数组中为0元素

    题目描述:

    给定一个一维数组,将其中为0的元素删除掉,非零元素的相对位置保持不变,最终目标数组保留在原数组中,并且目标数组长度之外的元素全部置为0。

    解题思路:

    (1)数组非零元素往前移动,时间复杂度O(n)。

    思路:先将非0的元素往前靠,最后再将剩下的位置重置为0。

     1 public void moveZeroes(int[] nums) {
     2         if(nums.length < 1)
     3             return ;
     4         int Index = 0;
     5         for (int i=0; i<nums.length; i++){
     6             if(0 != nums[i]){
     7                 nums[Index++] = nums[i];
     8             }
     9         }
    10         for(int i=Index; i<nums.length; i++){
    11             nums[i] = 0;
    12         }
    13  
    14     }

    利用两个指针,交换位置。时间复杂度O(n)。

    思路:可以用两个指针,第一个指针永远指向从左往右为0的元素,第二个指针为遍历指针,当遍历指针指向的值为非0的时候,将这个元素与第一个指针指向的元素交换。

     1 public void moveZeroes(int[] nums) {
     2         //first指针永远指向当前为0的元素
     3         int first = 0;
     4  
     5         for (int second = 0; second < nums.length; second++) {
     6             //为0的和非0的交换
     7             if (nums[second] != 0) {
     8                 int temp = nums[first];
     9                 nums[first] = nums[second];
    10                 nums[second] = temp;
    11                 first++;
    12             }
    13         }
    14     }
  • 相关阅读:
    原型模式
    Object.defineProperties()和Object.defineProperty()方法
    访问器属性:setter()函数和getter()函数
    2019.7.11刷题统计
    2019.7.10刷题统计
    2019.7.9刷题统计
    2019.7.8刷题统计
    2019.7.7刷题统计
    2019.7.6刷题统计
    2019.7.5刷题统计
  • 原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/11238506.html
Copyright © 2011-2022 走看看