刷题之Leetcode283题(超级详细)

283.移动零

283. 移动零icon-default.png?t=N7T8https://leetcode.cn/problems/move-zeroes/

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]
输出: [0]

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

思路

做这道题目之前,大家可以做一做27.移除元素icon-default.png?t=N7T8https://leetcode.cn/link/?target=https%3A%2F%2Fprogrammercarl.com%2F0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html

这道题目,使用暴力的解法,可以两层for循环,模拟数组删除元素(也就是向前覆盖)的过程。

双指针法在数组移除元素中,可以达到O(n)的时间复杂度,刷题之Leetcode27题(超级详细)-CSDN博客里已经详细讲解了,那么本题和移除元素其实是一个套路。

相当于对整个数组移除元素0,然后slowIndex之后都是移除元素0的冗余元素,把这些元素都赋值为0就可以了

代码如下:

public void moveZeroes(int[] nums) {
        int slow = 0;
        for (int fast = 0; fast < nums.length; fast++) {
            if (nums[fast] != 0) {
                nums[slow++] = nums[fast];
            }
        }
        // 后面的元素全变成 0
        for (int j = slow; j < nums.length; j++) {
            nums[j] = 0;
        }
    }

相关推荐

  1. leetcodeMySQL】

    2024-04-07 13:46:02       74 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-07 13:46:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-07 13:46:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-07 13:46:02       87 阅读
  4. Python语言-面向对象

    2024-04-07 13:46:02       96 阅读

热门阅读

  1. MySQL中的sql优化

    2024-04-07 13:46:02       45 阅读
  2. nginx配置多个服务

    2024-04-07 13:46:02       190 阅读
  3. MySQL 行锁和表锁是什么?区别,作用等学习总结

    2024-04-07 13:46:02       46 阅读
  4. TouchableOpacity和TouchableWithoutFeedback区别

    2024-04-07 13:46:02       36 阅读
  5. 口语 4.7

    2024-04-07 13:46:02       30 阅读
  6. 贪心算法

    2024-04-07 13:46:02       27 阅读
  7. pytorch中用tensorboard

    2024-04-07 13:46:02       34 阅读