题解 | #两数之和#

两数之和

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

import java.util.*;


public class Solution {
    /**
     * 
     * @param numbers int整型一维数组 
     * @param target int整型 
     * @return int整型一维数组
     */
    public int[] twoSum (int[] numbers, int target) {
        /**
         * [0,4,3,0],0输出了*/
        // write code here
      /*  Arrays.sort(numbers);
        System.out.println(Arrays.toString(numbers));*/
        int[] res=new int[2];
        //应该使用数组去存储。下标为数字,值为索引位置
        Map<Integer , List<Integer>> map = new HashMap();
        for (int i = 0; i < numbers.length; i++) {
                //重复数则只使用前面的.
            if (map.containsKey(numbers[i])){
                List<Integer> integers = map.get(numbers[i]);
                integers.add(i);
            }
            map.putIfAbsent(numbers[i],new ArrayList<>(Arrays.asList(i)));
        }

        for (int number : numbers) {
            int other = target - number;
            if (map.containsKey(other)){
                Integer integer = map.get(other).get(0);
                Integer integer1 = map.get(number).get(0);
                if (other== number){
                    if (map.get(number).size()>1){
                        integer1 = map.get(number).get(1);
                    }
                }
                if (integer!=null && integer1!=null && integer>integer1){
                    res[0]=integer1+1;
                    res[1]=integer+1;
                }else {
                    res[1]=integer1+1;
                    res[0]=integer+1;
                }
            }
        }

        return res;
    }
}

全部评论

相关推荐

05-04 17:20
武汉大学
已注销:技术栈删了,让ai把你的项目丰富化,干的活太少了,像是写了个demo,起码一个项目四点重要内容,内容用技术栈描述,取得了什么进展,简历大部分都留给项目,其他的压缩
如何写一份好简历
点赞 评论 收藏
分享
04-01 12:25
中南大学 Java
枯基Evan_:腾讯一面写过11次的题目没写出来
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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