求数组中两数之和等于给定的值
程序员文章站
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、输出结果
上一篇: 层自动适应高度
推荐阅读
-
求数组中两数之和等于给定的值
-
快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值
-
个有序的整形数组,给定一个数,在数组中找出两个数的和等于这个数,并打印其下标
-
一个整形数组,给定一个数,在数组中找出两个数的和等于这个数
-
go语言实现--找出一个数组中的两个数,这两个数之和等于一个给定的值
-
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的 任意个数之和 等于 target,并打印出所有结果的索引。
-
快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值
-
Jsの数组练习-求一组数中的最大值和最小值,以及所在位置
-
在数组中寻找两个数之和等于目标数
-
一个数组nums,其中任意两个值等于给定值target,返回这两个值在nums里的位置