移动零

题意

给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序

注意事项:

  1. 必须在原数组上操作
  2. 最小化操作数

样例

给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].

思路

设两个指针,先都指向数组头元素,一个依次向后找不为零的数,然后与另一个指向的数进行交换,直到找到最后一个元素为止。

代码实现

public class Solution {
    /**
     * @param nums an integer array
     * @return nothing, do this in-place
     */
    public void moveZeroes(int[] nums) {
        int left = 0;
        int right = 0;
        while (right < nums.length) {
            if (nums[right] != 0) {
                int temp = nums[right];
                nums[right] = nums[left];
                nums[left] = temp;
                left++;
            }
            right++;
        }
    }
}

原题地址

LintCode:移动零

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 寻找旋转排序数组中的最小值

    一份执着✘
  • 恢复旋转排序数组

    一份执着✘
  • LeetCode 80 Remove Duplicates from Sorted Array II

    和 LeetCode 26 Remove Duplicates from Sorted Array 这道题比较类似。 定义变量 k,表示待修改的元素位置,默认为...

    一份执着✘
  • 旋转排序的数组

    ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

    羽翰尘
  • 【leetcode刷题】20T39-颜色分类

    https://leetcode-cn.com/problems/sort-color

    木又AI帮
  • LeetCode 75. 颜色分类(双指针)

    给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

    Michael阿明
  • 1.比较排序之冒泡排序

      冒泡排序可以说是在排序算法中最为入门级别的算法之一了。因为其简单易于理解,常在课堂中作为排序的入门算法。   冒泡排序见名生意,其排序过程如同水里的泡一般由...

    用户1148394
  • LeetCode 215. 数组中的第K个最大元素(快速排序)

    在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

    Michael阿明
  • 哈希表:解决了两数之和,那么能解决三数之和么?

    给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三...

    代码随想录
  • Find Peak Element

    Tyan

扫码关注云+社区

领取腾讯云代金券