[283] Move Zeroes
2016-07-20 19:47
183 查看
1. 题目描述
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].
Note:
You must do this in-place without making a copy of the array.
Minimize the total number of operations.
给定一个数组,将数组中所有的0移动到数组尾部。
2. 解题思路
题目与[27] Remove Element和 [26] Remove Duplicates from Sorted Array相似,都涉及到了对数组中一些元素进行移动的问题,答题的思路就是,将满足的放到前面,不满足的直接覆盖或者交换到后面。本题就是采用了交换的方式,首先找到第一个0记录位置i,再找到第一个非0记录位置j,将i与j交换,交换后i向后移动一个位置,j继续向后查找非0元素,重复交换的过程直至j走到数组的最后。3. Code
public class Solution { public void moveZeroes(int[] nums) { for(int i = 0, j = 1; j < nums.length; ++j) { // 找到第一个0 if(nums[i] == 0) { // 找到第一个非0 if(nums[j] != 0) { // 交换 int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; ++i; } } else { // 如果当前不是0,ij后移 ++i; } } } }
相关文章推荐
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#比较二个数组并找出相同或不同元素的方法
- C#动态调整数组大小的方法
- 详解Lua中的数组概念知识
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- C#交错数组用法实例
- Linux Shell 数组建立及使用技巧
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法
- C#不重复输出一个数组中所有元素的方法
- C#实现将数组内元素打乱顺序的方法
- C#中用foreach语句遍历数组及将数组作为参数的用法
- 详解C#编程中一维数组与多维数组的使用
- Ruby简明教程之数组和Hash介绍
- 深入解析C#中的交错数组与隐式类型的数组
- C语言查找数组里数字重复次数的方法