博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode之旅】 数组 - 283.移动零
阅读量:2056 次
发布时间:2019-04-28

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

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

示例:

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

说明:

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

解答:

/** * 方法一:一边移动,一边赋值 * 思路:给定一个索引index用于纪录移动后0的位置 * 首先从前面遍历,如果为0,整个数组前移 * @param nums */public static void moveZeroes1(int[] nums) {    int index = nums.length - 1;    for (int i = 0; i < index; i++) {        if (nums[i] == 0){            move(nums,i);            nums[index] = 0;            index--;            i--;        }    }}/** * 前移 * @param nums * @param index */public static void move(int[] nums,int index){    for (int i = index + 1; i < nums.length; i++) {        nums[i - 1] = nums[i];    }}/** * 方法二:先移动,再赋值 * @param nums */public static void moveZeroes2(int[] nums) {    int start = 0;    int index = 0;    int len = nums.length;    //先将不为0的全部移动到前面    while (index < len){        if (nums[index] != 0){            nums[start] = nums[index];            start++;        }        index++;    }    //然后将后面的值全部赋值为0    while (start < len){        nums[start] = 0;        start++;    }}

 

 

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

你可能感兴趣的文章
什么是ActiveRecord
查看>>
有道词典for mac在Mac OS X 10.9不能取词
查看>>
关于“团队建设”的反思
查看>>
利用jekyll在github中搭建博客
查看>>
Windows7中IIS简单安装与配置(详细图解)
查看>>
linux基本命令
查看>>
BlockQueue 生产消费 不需要判断阻塞唤醒条件
查看>>
ExecutorService 线程池 newFixedThreadPool newSingleThreadExecutor newCachedThreadPool
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
win10将IE11兼容ie10
查看>>
checkbox设置字体颜色
查看>>
第一篇 HelloWorld.java重新学起
查看>>
ORACLE表空间扩张
查看>>
orcal 循环执行sql
查看>>
web.xml配置监听器,加载数据库信息配置文件ServletContextListener
查看>>
结构型模式之桥接模式(Bridge)
查看>>
行为型模式之状态模式(State)
查看>>