牛客---两数之和

本文解析了如何使用Java实现牛客网上的两数之和问题,通过HashMap数据结构快速查找目标值的补数。介绍了题目的背景,提供了一个简单的解决方案,并展示了如何利用哈希表优化查找效率。适合学习算法和数据结构的初学者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.链接

牛客—两数之和

2.题目描述

给出一个整数数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数,
你给出的函数twoSum 需要返回这两个数字的下标(index1,index2)组成的数组,需要满足 index1 小于index2.。注意:下标是从1开始的
保证给出的数组中只存在唯一解。

例如:
给出的数组为 [20, 70, 110, 150] , 目标值为90

返回一个数组 [1,2] ,因为 numbers _1+numbers _2=20+70=90numbers
1

+numbers
2

=20+70=90

你能想到 的做法吗?

数据范围:
1\leq len(numbers) \leq 10001≤len(numbers)≤1000
1\leq numbers_i , target \leq 10^91≤numbers
i

,target≤10
9

示例1
输入:
[3,2,4],6
复制
返回值:
[2,3]
复制
说明:
因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又因为 下标2 < 下标3 ,所以输出[2,3]

3.题解

 
/**
 * User:yang
 * https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f?tpId=117
 *
 */
import java.util.*;


public class Solution {
    /**
     *
     * @param numbers int整型一维数组
     * @param target int整型
     * @return int整型一维数组
     */
    
    
        public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> m = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (m.get(target - nums[i]) != null) {
                return new int[]{m.get(target - nums[i])+1, i+1};
            }
            m.put(nums[i], i);//当
        }
        return new int[]{0, 0};
    }
    
    
    
//     public int[] twoSum (int[] numbers, int target) {
//         int[] array=new int[2];
//         for (int i = 0; i < numbers.length-1; i++) {
//             for (int j = i+1; j < numbers.length; j++) {
//                 if ((numbers[i]+numbers[j])==target){
//                     array[0]=i+1;
//                     array[1]=j+1;
//                 }
//             }
//         }
//         return array;
//     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值