查找两个总和为特定值的索引
Posted 猪八戒1.0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找两个总和为特定值的索引相关的知识,希望对你有一定的参考价值。
https://www.lanqiao.cn/problems/252/learning/
题目描述
给定一个数组,找到两个总和为特定值的索引。
例如给定数组 [1, 2, 3, -2, 5, 7],给定总和 7,则返回索引 [1, 4]。
若有多组符合情况则输出索引对中小索引最小的一组。
输入描述
第一行为给定数组的长度,不超过 100。
第二行为数组元素,元素大小不超过 100(可能为负数)。
第三行为特定值。
输出描述
输出一行,为两个索引值,升序输出。
输入输出样例
示例
输入
6
1 2 3 -2 5 7
7
输出
1 4
暴力
public class Main
static int N=120;
static int a[]=new int[N];
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
for(int i=0;i<n;i++)
a[i]=sc.nextInt();
int target=sc.nextInt();
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(a[i]+a[j]==target)
System.out.print(i+" "+j);
return ;
哈希
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main
static int N=110;
static int a[]=new int[N];
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
HashMap<Integer, Integer> Map = new HashMap<>();
for(int i=0;i<n;i++)
a[i]=sc.nextInt();
Map.put(a[i],i);
int target=sc.nextInt();
for(int i=0;i<n;i++)
int A=a[i];
if(Map.containsKey(target-a[i]))
System.out.println(i+" "+Map.get(target-a[i]));
break;
以上是关于查找两个总和为特定值的索引的主要内容,如果未能解决你的问题,请参考以下文章