欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

求数组中两数之和等于给定的值

程序员文章站 2024-02-17 10:06:10
...

一、题目

给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标(假设每种输入智慧对应一个答案,但是数组中同一个元素在答案里不能重复出现),你可以按任意顺序返回答案。

示例1
输入:nums=[2,7,11,15] ,target=9
输出:[0,1]
解析:因为nums[0] + nums[1] == 9,因此返回[0,1]

示例2
输入:nums=[3,2,4] ,target=6
输出:[1,2]
解析:因为nums[1] + nums[2] == 6,因此返回[1,2]

二、题目代码解析

1、代码

package com.xz.leetcode.day1;

import java.util.HashMap;
import java.util.Map;

/**
 * @author: xz
 * @create: 2021-06-11 22:43
 */
public class Demo {
    public static void main(String[] args) {
        int[] nums= {2,7,11,15,8};
        int target=15;
        int[] arr=twoSum(nums,target);
        System.out.println("数组下标分别为["+arr[0]+","+arr[1]+"]");
    }

    public static int[] twoSum(int[] nums,int target){
        Map<Integer,Integer> map =new HashMap();
        //初始化第一个元素值和第一个元素值的位置
        map.put(nums[0],0);
        //遍历nums数组
        for(int i=1;i<nums.length;i++){
            //nums[i]和matchedNum的索引即为所求
            int matchedNum=target-nums[i];
            //如果map存储过matchedNum的映射,则返回索引和索引对应的值
            if(map.containsKey(matchedNum)){
                int index1=i;//索引赋值给index1
                int index2=map.get(matchedNum);//索引的值赋值给index2
                return new int[]{index1,index2};//放到一个新的数组中返回
            }else{//否则,map没有存储过matchedNum的映射,继续存储到map集合中
                map.put(nums[i],i);
            }
        }
        return null;
    }

}

2、输出结果

求数组中两数之和等于给定的值

相关标签: java算法

上一篇: 层自动适应高度

下一篇: