找一个数组中绝对值和最小的三个元素
题目
找一个数组中绝对值和最小的三个元素
解析
暴力的方法是O(n^3),肯定还存在其他更加优的方法
- 将数组升序排序
- 固定一个数字,然后从两端开始找,如果sum<0 则left++ 否则right— 同时记录最小的minSum
注意,两端向中间找的时候如果遇到当前固定的数字需要跳过
代码
1 | public static void minAbsThreeNumber(int[] a) |
测试1
2
3
4
5
6public static void main(String[] args) {
int a[]={-9,9,0,-2,3};
int b[]={-99,66,0,2,3};
minAbsThreeNumber(b);
}
输出结果为
min abs sum:5=(0)+(3)+(2)
它的最终复杂度是O(n^2),还是有所提升的
参考
http://blog.csdn.net/deutschester/article/details/5981503
本作品采用[知识共享署名-非商业性使用-相同方式共享 2.5]中国大陆许可协议进行许可,我的博客欢迎复制共享,但在同时,希望保留我的署名权kubiCode,并且,不得用于商业用途。如您有任何疑问或者授权方面的协商,请给我留言。