[Leetcode]Move Zeroes
2015-10-10 12:51
316 查看
Given an array
to the end of it while maintaining the relative order of the non-zero elements.
For example, given
be
Note:
You must do this in-place without making a copy of the array.
Minimize the total number of operations.
方法一:时间复杂度O(N^2)
方法二:时间复杂度O(N)
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,
numsshould
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.
方法一:时间复杂度O(N^2)
public class Solution { public void moveZeroes(int[] nums) { if (nums == null || nums.length == 1) { return; } int zeroCount = 0; int zeroSequenceLength = 0; for (int i = 0; i < nums.length - zeroCount; i++) { if (0 == nums[i]) { ++zeroSequenceLength; } else { if (zeroSequenceLength >= 1) { for (int j = i; j < nums.length - zeroCount; j++) { nums[j - zeroSequenceLength] = nums[j]; } zeroCount += zeroSequenceLength; i = i - zeroSequenceLength; zeroSequenceLength = 0; } } } for (int k = nums.length - 1; k > nums.length - 1 - zeroCount; k--) { nums[k] = 0; } } }
方法二:时间复杂度O(N)
public class Solution { public void moveZeroes(int[] nums) { int newIndex = 0; for (int i = 0; i < nums.length ; i++) { if (nums[i] != 0) { nums[newIndex++] = nums[i]; } } for (; newIndex < nums.length; newIndex++) { nums[newIndex] = 0; } } }
相关文章推荐
- Windows GDI GDI+ DC
- Ping pong(树状数组)
- 安卓开发环境的搭建和解决在Eclipse新建安卓5.1工程不能自动生成R文件的问题
- 警告:C4018 "<":有符号/无符号不匹配
- Python 2.6.6升级到Python 2.7.3
- 小王梦游记(一)
- Matlab_Marr小波尺度变换图
- Tracing mysqld Using DTrace
- Xamarin笔记
- opencv在qt中的配置
- opencv在qt中的配置
- LeetCode:Merge Two Sorted Lists
- mysql事务管理及spring声明式事务中主动异常抛出使数据库回滚
- Android - 应用程序的优先级和进程状态
- nginx 配置虚拟主机
- 使用jQuery AJAX读取二进制数据
- 10月17日 黑客马拉松 — 用MeteorJS开发全栈应用
- 使用jQuery AJAX读取二进制数据
- 使用jQuery AJAX读取二进制数据
- Fetching Android SDK component information