题解 | #两数之和#

两数之和

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

方法1:遍历数组,暴力破解
解题思路:用两个for循环遍历数组,当numbers[i] + numbers[j] == target时,输出数的下标。如果不存在就返回空数组
注意:返回的下标是从1开始的
    public int[] twoSum (int[] numbers, int target) {
        // write code here
        int[] res = new int[2];
        if (numbers.length <= 0) {
            return res;
        }
        for (int i = 0; i < numbers.length; i++) {
            for (int j = i + 1; j < numbers.length; j++) {
                if (numbers[i] + numbers[j] == target && i != j) {
                    res[0] = i + 1;
                    res[1] = j + 1;
                }
            }
        }
        return res;
    }

方法2:HashMap
解题思路:利用HashMap存储数在numbers[]数组中的值和下标,然后通过for循环遍历数组,当前数为numbers[i],如果target - numbers[i]等于在HashMap中的key值,那么说明数组中存在两个和为target的数,返回值在数组中的下标。
如果不存在就返回空数组
注意:返回的下标从1开始。
    public int[] twoSum (int[] numbers, int target) {
        // write code here
        int[] res = new int[2];
        HashMap<Integer,Integer> hash = new HashMap<Integer, Integer>();
        for (int i = 0; i < numbers.length; i++) {
            if (hash.containsKey(target - numbers[i])) {
                res[0] = hash.get(target - numbers[i]) + 1;
                res[1] = i + 1;
            } else {
                hash.put(numbers[i] , i);
            }
        }

        return res;
    }

#牛客网博客##牛客网在线编程#
全部评论

相关推荐

不愿透露姓名的神秘牛友
09-09 14:10
大三,在字节实习两周,被同学举报,辅导员要求回学校怎么办?
我的代码出BUG了:方案1:找领导说明情况然后请个假,回去一天找辅导员报道,见完面直接溜 。方案2:给辅导员卖惨,卖惨内容为家里没钱有贷款+没钱吃饭+心理抑郁+不想活了+社会险恶(同学举报)+想一si了之,例如:.....。长线规划:你这个同学的行为太恶心了,一定暗中收集你这个同学的错误事迹。比如举报课程设计不是他自己做的、比如以后他要是考公,你去考场门口拉横幅说他***,就说你是他好朋友,拉横幅只是为了开玩笑
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
09-12 11:00
门头沟学院 Java
b溃了,早知道不拉扯了
在迎接offer的废...:手中握着有一两个offer才敢拉扯,没保底就别了吧。
我的秋招日记
点赞 评论 收藏
分享
头像 会员标识
08-13 17:27
门头沟学院 Java
等闲_:还是那句话,这样只能海投,没有太多需要改的,因为大部分简历都是这样的,唯一可以把蓝桥杯三等奖放到最后
点赞 评论 收藏
分享
在投简历的柠檬精很想...:可以明确说,问的东西几乎是简历上的东西。你写的确实有点模糊。面试可能会问你一些常用的通信的问题,差分信号走线之类的,单片机最小系统啥的,模电,数电,基本电源,buck,boost,ldo之类的吧。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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