题解 | #两数之和#

两数之和

http://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

import java.util.*;


public class Solution {
    /**
     *
     * @param numbers int整型一维数组
     * @param target int整型
     * @return int整型一维数组
     */
    //定义一个实体类存放数值和该值的下标
    class Pair{
        private int val;
        private int index;
        public Pair(int val,int index){
            this.val = val;
            this.index = index;
        }
    }
    public int[] twoSum (int[] numbers, int target) {
        // write code here
        //定义一个pair对象数组
        Pair[] num = new Pair[numbers.length];
        for(int i = 0;i<num.length;i++){
            Pair pair = new Pair(numbers[i],i);
            num[i] = pair;
        }
        //按照数值排序
        Arrays.sort(num,new Comparator<Pair>(){
            public int compare(Pair x,Pair y){
                return x.val-y.val;
            }
        });
        //双指针遍历
        int i = 0,j = num.length-1;
        while(i<j){
            if(num[i].val + num[j].val == target){
                if(num[i].index<num[j].index){
                    return new int[]{num[i].index+1,num[j].index+1};
                }else{
                    return new int[]{num[j].index+1,num[i].index+1};
                }
                
            }else if(num[i].val + num[j].val < target){
                i++;
            }else{
                j--;
            }
        }
        return new int[]{0,0};
        
    }
}
全部评论

相关推荐

07-22 11:12
门头沟学院 Java
不是,我就随手投的怎么还真发面试啊
皮格吉:大厂特别快的——来自已经被共享中
点赞 评论 收藏
分享
07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务