M62

来源:互联网 发布:生命游戏c语言代码 编辑:程序博客网 时间:2024/05/22 13:15

 62、微软三道面试题
yeardoublehua
1. 给一个有N个整数的数组S..和另一个整数X,判断S里有没有2个数的和为X,
请设计成O(n*log2(n))的算法。
上面来自July的博客,用Java编码:

package beauty;import java.util.Arrays;public class M62 {public Object findSum(int[] data, int n, int x) {//将返回值定义为Object 可以返回不同类型的值//谁让Object是一切对象的根源呢,其实返回的都是object而已啊Arrays.sort(data);int l=0;int r=n-1;while(l<=r){if(data[r]+data[l] == x)return l+":"+data[l]+"--"+r+":"+data[r]+"\r\n";else if(data[r]+data[l] >x){r--;}else{l++;}}return 0;}public static void main(String[] args){//只要找出一对就停下了,这里Arrays的sort的复杂度还真不好琢磨M62 m62 = new M62();int[] data = {3, -4, 7,4, 8, 12, -5, 0, 9};int n=9;int x =12;System.out.println(m62.findSum(data, n, x));for(int i=0;i<n;i++)System.out.print(data[i]+"\t");}}


 

原创粉丝点击