LeetCode.283. 移动零

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

示例:

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

说明:

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

分析:
最容易想到当遇到 0,把其后的数全部向前移动一位,也能发现,代价太大
继续考虑,既然要让 0 移动到最后,那我们可以把最后的位置给“腾出来”,
即设置一个常量 j,对非 0 元素计数,如果遇到非 0,该元素覆盖到 nums[j] 的位置,同时 j+1,一轮遍历完成后,再把 nums 中 j 之后的数用 0 覆盖

class Solution {
    public void moveZeroes(int[] nums) {
        int j = 0;
        for (int i : nums) {
            if (i != 0)
                nums[j++] = i;
        }
        for (int i = nums.length - 1; i >= j; i--)
            nums[i] = 0;
    }
}
全部评论

相关推荐

05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
鼠鼠没有找到暑期实习,简历太空了,感觉直接去秋招会完蛋,这个时间点找个日常实习混个简历,边实习边准备秋招有没有搞头啊
梦想是成为七海千秋:可以的完全可以的,找不到暑期就找日常,秋招之前还是有很多时间可以实习的,哪怕只实习了一个月都可以写在简历上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务