左边的数都小于等 于它,右边的数都大于等于它
题目
一个 int 数组,里面数据无任何限制,要求求出所有这样的数 a[i],其左边的数都小于等 于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现
解析
想其他的都是泪(递归、分治)
最妙的方法就是将原数组排序得到b,如果b[i]=a[i],则a[i]就是满足该条件的数
这样正好满足只使用了一个额外数组^_^
最终的复杂度为O(nlogn)
代码
1 | /** |
参考
July 微软面试题 第81题
本作品采用[知识共享署名-非商业性使用-相同方式共享 2.5]中国大陆许可协议进行许可,我的博客欢迎复制共享,但在同时,希望保留我的署名权