博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] Move Zeroes 移动零
阅读量:6756 次
发布时间:2019-06-26

本文共 738 字,大约阅读时间需要 2 分钟。

Move Zeroes

Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].

双指针压缩法

复杂度

时间 O(N) 空间 O(1)

思路

实际上就是将所有的非0数向前尽可能的压缩,最后把没压缩的那部分全置0就行了。比如103040,先压缩成134,剩余的3为全置为0。过程中需要一个指针记录压缩到的位置。

代码

public class Solution {    public void moveZeroes(int[] nums) {        int cnt = 0, pos = 0;        // 将非0数字都尽可能向前排        for(int i = 0; i < nums.length; i++){            if(nums[i] != 0){                nums[pos]= nums[i];                pos++;            }        }        // 将剩余的都置0        for(;pos

后续 Follow Up

Q:如果要把所有的0放在前面而不是后面呢?

A:同样的解题思路,但是是从后向前遍历,将非0数字压缩到后面。

转载地址:http://nyzeo.baihongyu.com/

你可能感兴趣的文章
Python 语言之 map/reduce
查看>>
Vue.js - Day4
查看>>
mysql之用户
查看>>
053(三十五)
查看>>
AddonSU Packages now available for LineageOS 15.1
查看>>
UVa 10970 - Big Chocolate
查看>>
SpringMVC上传图片总结(1)---常规方法进行图片上传,使用了MultipartFile、MultipartHttpServletRequest...
查看>>
小米:开源不仅要站在巨人的肩膀上,还要为巨人指方向
查看>>
百度启动高管退休计划,总裁张亚勤今年十月退休
查看>>
SpringBoot启动时的Banner设置
查看>>
xming + putty 搭建远程图形化ssh访问ubuntu 14.04
查看>>
【Sigma敏捷版系列文章】从运行流程和list-watch看kubernetes系统的设计理念
查看>>
两列布局——但只用右浮动
查看>>
GNOME 网页浏览器 Epiphany 将要进行 5 项改进
查看>>
今年CES最大亮点:智能语音助手正成为新趋势
查看>>
Windows Mysql Server重启, log-bin路径配置
查看>>
刘剑锋:友云采助力企业数字化采购的新发展
查看>>
Rainbond 5.0.4 发布,做最好用的云应用操作系统
查看>>
亚马逊宣布与西云数据达成合作,旨在进一步扩大中国业务
查看>>
java nio的基础--缓冲区
查看>>