查找两个总和为特定值的索引

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;
			
		
	

以上是关于查找两个总和为特定值的索引的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查找 MAX 值的总和

如何根据火花数据框中的值的累积总和为每一行分配一个类别?

尝试使用反应在表中查找检查值的总和

如何找到特定多维数组值的总和? [复制]

从区间中查找特定元素的总和(需要模拟)

查找最大索引 j 的有效算法,使得从索引 i 到 j 的总和小于 k