程序算法编程:移动零问题
2016-11-08 20:54
183 查看
给定一个数组,将里面的“0”元素移至数组的末尾,而其他元素相对位置不变问题。
例如:
输入{1,0,0,3,2,4}
输出{1,3,2,4,0,0}
方法1:
顺序取出数,如果是0,则与后面非零元素调换。
java代码如下:
public void moveZeroes(int[] nums) {
int k = 0;
for(int i = 0;i < nums.length;i++){ //顺序取数
if(nums[i] == 0){
k=i+1;
for(int j = k;j < nums.length;j++){ //与后最近非零元素调换
if(nums[j] != 0){
nums[i] = nums[j];
nums[j] = 0;
break;
}
}
}
}
}最坏情况下算法的时间复杂度应该是n*(n-1)/2为O(n^2).
例如:
输入{1,0,0,3,2,4}
输出{1,3,2,4,0,0}
方法1:
顺序取出数,如果是0,则与后面非零元素调换。
java代码如下:
public void moveZeroes(int[] nums) {
int k = 0;
for(int i = 0;i < nums.length;i++){ //顺序取数
if(nums[i] == 0){
k=i+1;
for(int j = k;j < nums.length;j++){ //与后最近非零元素调换
if(nums[j] != 0){
nums[i] = nums[j];
nums[j] = 0;
break;
}
}
}
}
}最坏情况下算法的时间复杂度应该是n*(n-1)/2为O(n^2).
相关文章推荐
- 从算法到程序(从应用问题编程实践全面体验算法理论)
- 移动火柴问题的程序解法及生成算法
- 在win2003server上使用移动硬盘时遇到的问题以及禁用“关闭事件跟踪程序”
- VC2005开发移动程序的小问题
- 当我们在程序中使用Packet32.h进行编程时,可能会遇到以下问题:
- 程序员编程艺术:第三章续、Top K算法问题的实现
- 分治法编程问题之最接近点对问题的算法分析
- 《windows应用高级编程-C#编程篇》书中程序的小问题及改进
- 小程序&小问题&小算法集合帖
- 解决Win32 SDK编程添加list control控件程序无法运行的问题
- (编程题目)约瑟夫问题(实用C++编出一个程序解决约瑟夫问题)--凌风
- 程序员编程艺术:第三章续、Top K算法问题的实现
- AIX 程序设计大赛-AIX正方形问题算法及Java程序实现
- Gossip数学问题算法的程序实现
- 还在为编写程序代码时的排版问题烦恼吗?当您看完这篇文章后,规范化的编程、漂亮的编程格式将跟您如影随形。
- 编程常见问题记录:明明有响应按钮的事件,但程序就是无法捕获到
- [ 算法]经典程序算法问题
- 移动设备AT编程常见问题及解决方案
- 读书笔记之编程之美 - 1.2 中国象棋将帅问题(更快的算法)
- 程序员编程艺术:第三章续、Top K算法问题的实现