博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
283. Move Zeroes - Easy
阅读量:6802 次
发布时间:2019-06-26

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

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.

Example:

Input: [0,1,0,3,12]Output: [1,3,12,0,0]

Note:

  1. You must do this in-place without making a copy of the array.
  2. Minimize the total number of operations.

 

用two pointer

fast pointer p1找非零元素,slow pointer p2用来赋值。当p1指向元素为0时, p1右移;当p1指向元素非0时,把当前元素赋给p2指向的元素,同时移动p1, p2。最后再把p2之后的元素全部赋0即可。

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

class Solution {    public void moveZeroes(int[] nums) {        int p1 = 0, p2 = 0;        while(p1 < nums.length) {            if(nums[p1] != 0)                nums[p2++] = nums[p1++];            else                p1++;        }        while(p2 < nums.length)            nums[p2++] = 0;    }}

 

转载于:https://www.cnblogs.com/fatttcat/p/10053595.html

你可能感兴趣的文章
浅谈NAT的原理、缺陷及其解决之道
查看>>
【linux基础】22、iptables基础
查看>>
华为 ACL 问题
查看>>
RHEL设置主机名
查看>>
Java原始的压缩和解压
查看>>
ORACLE系统表和视图说明
查看>>
你在为谁工作
查看>>
5、MySQL多表查询
查看>>
GZIPInputstream解决乱码问题
查看>>
阿里云不能启动docker
查看>>
lguest 源码分析之guest os启动的过程
查看>>
安装LVS
查看>>
C++入门篇05
查看>>
amoeba搭建及读写分离测试
查看>>
linux系统结构
查看>>
谷歌从Android市场中剔除恶意短信***
查看>>
RH124 第三单元 在图形环境中获取帮助
查看>>
Cisco组网之VACL
查看>>
Android第二十三期 - 256k的ListView下拉刷新和滚动加载数据
查看>>
技术团队的打造
查看>>