移动零

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

示例:

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

说明:

  • 必须在原数组上操作,不能拷贝额外的数组。
  • 尽量减少操作次数。

思路

思路很简单,使用使用两个索引lastIndexcurIndexcurIndex从后向前遍历直到其元素为0,然后根据lastIndexcurIndex之间的差值,将元素前移。

class Solution {
    public void moveZeroes(int[] nums) {
        int currIndex = nums.length - 1;
        int lastIndex = nums.length - 1;
        
        while (currIndex >= 0) {
            if (nums[currIndex] == 0) {
                int count = lastIndex - currIndex;
                for (int i = 0; i < count; i++) {
                    nums[currIndex + i] = nums[currIndex + i + 1];
                }
                nums[lastIndex] = 0;
                lastIndex--;
            }
            currIndex--;
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定一个数组 nums, 编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序。 例如 注意事项: ...
    一个有想法的人阅读 8,547评论 1 0
  • 描述 给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序 注意事项 1.必须在原...
    6默默Welsh阅读 1,706评论 0 0
  • 给定一个数组 nums,编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序。 例如, 定义 num...
    WindMajor阅读 6,876评论 0 1
  • 给定一个数组 nums, 编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序。 例如, 定义 nu...
    拉面小鱼丸阅读 1,459评论 0 0
  • 孩子, 我希望你至始至终都是一个理想主义者。 你可以是农民, 是工程师, 是演员, 是流浪汉, 但你必须是一个理想...
    灵犀瑾阅读 3,294评论 0 0

友情链接更多精彩内容