重排问题(非零元素排序前后相对位置不变)
2013-05-14 20:47
351 查看
给定含有n个元素的整型数组a,其中包括0元素和非0元素,对数组进行排序,要求:
1、排序后所有0元素在前,所有非零元素在后,且非零元素排序前后相对位置不变
2、不能使用额外存储空间
例子如下
输入 0、3、0、2、1、0、0
输出 0、0、0、0、3、2、1
关注题目要求:非零元素排序前后相对位置不变, 只要求的是非零元素而已
是不是想起了之前的一道题目,不改变正负数之间相对顺序重新排列数组.时间O(N),空间O(1)
直接copy网上代码:
P.S. 找了一实习后,貌似没有动力写算法了,堕落了....
毕
1、排序后所有0元素在前,所有非零元素在后,且非零元素排序前后相对位置不变
2、不能使用额外存储空间
例子如下
输入 0、3、0、2、1、0、0
输出 0、0、0、0、3、2、1
关注题目要求:非零元素排序前后相对位置不变, 只要求的是非零元素而已
是不是想起了之前的一道题目,不改变正负数之间相对顺序重新排列数组.时间O(N),空间O(1)
直接copy网上代码:
void Arrange(int *arr , int n) { int i , k = n-1; for(i = n-1 ; i >=0 ; --i) { if(arr[i] != 0) { if(arr[k] == 0) { arr[k] = arr[i]; arr[i] = 0; } --k; } } }
P.S. 找了一实习后,貌似没有动力写算法了,堕落了....
毕
相关文章推荐
- 20100127_1 设一维数组V中存有N个整数,试写一个算法,将其中的非零元素移到数组的前面来,连续存放,相对位置不变。
- 这是一个我面试某公司的算法题目:对一个字符数组进行排序,根据给定的字符,大于它的,放在数组的左边,小于它的,放在数组的右边,且数组中的元素之间的相对位置要保持不变。
- 插入排序的一个应用-调整负数在前,正数在后,原来相对位置不变
- 删除顺序表中所有值为x的元素(保持删除后元素相对位置不变)
- 对数组排序,要求相对位置不变
- 数组排序后保证正数之间和负数之间的相对位置不变 负数在前 正数在后
- 笔试题 相对位置不变的正负数排序
- 将数组里面零元素置后,其它元素相对位置保持不变
- 【大家来一起讨论吧】百度面试题,假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数件和正数间元素相对位置不变。时空复杂度要求:o(n),o(1)
- 调整数组使得奇数元素位于偶数元素之前(相对位置不变)
- 笔试题 相对位置不变的正负数排序
- 如何让两个元素的相对位置不变,设置css
- 给定一个数组nums,写一个函数将所有的值移动0到最后,同时保持非零元素的相对顺序不变
- 关于最外层为相对布局时,通过动态设置布局内控件位置问题
- 相对定位实际上被看做普通流定位模型的一部分,因为元素的位置相对与它在普通流中的位置
- js从table的当前位置获取当前行的元素和td中的前后元素
- jQuery获得页面元素的绝对/相对位置
- 把数组中基数位的数移到数组后半部_并保持相对位置不变
- 荷兰国旗问题(三元素数组排序问题)
- js兼容问题,鼠标相对于事件源的位置,offsetX,layerX