美文网首页
leetcode#283 移动零

leetcode#283 移动零

作者: leeehao | 来源:发表于2020-07-15 23:53 被阅读0次

审题

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

题目解析

将所有大于 0 的数字移动到数组头部并保持原有顺序,注意本题不允许额外内存开销。

第一次

暴力解法,如果某个位置存在 0 值,那么持续向后查询,将查询到的第一个数字填充到此位置。

class Solution {
    public void moveZeroes(int[] nums) {
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 0) {
                for (int j = i + 1; j < nums.length; j++) {
                    if (nums[j] != 0) {
                       nums[i] = nums[j];
                       nums[j] = 0;
                       break;
                    }
                }
            }
        }
    }
}

第二次

仔细审题可以发现,正整数总是按顺序在前面,遇到正整数只需无脑填充到指定位置就可以了,并且在最后一个目标位置后填充 0

class Solution {
    public void moveZeroes(int[] nums) {
        int index = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                nums[index] = nums[i];
                index++;
            }
        }
        for (int i = index; i < nums.length; i++) {
            nums[i] = 0;
        }
    }
}

相关文章

  • leetcode#283 移动零

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

  • 【移动零】

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

  • 移动零

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

  • 移动零

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

  • 移动零

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

  • 移动零

    题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例:输...

  • 移动零

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/perf...

  • 移动零

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

  • 移动零

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

  • 移动零

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

网友评论

      本文标题:leetcode#283 移动零

      本文链接:https://www.haomeiwen.com/subject/gnbshktx.html