求数组中两数之和等于给定的值
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求数组中两数之和等于给定的值相关的知识,希望对你有一定的参考价值。
一、题目
给定一个整数数组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、输出结果
以上是关于求数组中两数之和等于给定的值的主要内容,如果未能解决你的问题,请参考以下文章