欢迎光临
我们一直在努力

力扣刷题笔记——283.移动零

题目链接:283. 移动零 – 力扣(LeetCode)

  • 核心逻辑:设置两个指针变量 一个快一个慢,快的遍历整个数组,遇到非零数后将非0数与慢指针交换位置,遇到0跳过,fast循环一轮后将慢指针后面的数都置为0 这样0就被移动到数组最后,非零数 也按相对位置排序了
  • 代码实现 class Solution {
    public void moveZeroes(int[] nums) {
    int slow=0;
    for(int fast=0;fast<nums.length;fast++){
    if(nums[fast]!=0){
    nums[slow]=nums[fast];
    slow++;
    }
    }
    while(slow<nums.length){
    nums[slow]=0;
    slow++;
    }
    }
    }

  • 时间复杂度:O(n),n是数组元素个数;快慢指针都遍历了数组,原本应该是2n,但是常数忽略不计。 
  • 空间复杂度:O(1),没有开辟新容器存储,是在原来的数组上进行修改。
赞(0)
未经允许不得转载:171主机测评 » 力扣刷题笔记——283.移动零
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址