您的位置:首页 > 编程语言 > Java开发

(java)数组中找出和为目标值的那两个整数,并返回他们的数组下标

2020-06-06 06:22 351 查看

(java)数组中找出和为目标值的那两个整数,并返回他们的下标

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

算法思想

这种解法不利用排序而是使用哈希表来解决问题。利用迭代将元素插入到

map
的时候,检查表中是否已经存在与当前元素对应的目标元素。如果存在,我们将它立即输出;不存在的时候,再将其插入表中 。

代码

import javax.lang.model.type.NullType;
import java.util.Arrays;
import java.util.Scanner;
import java.util.HashMap;

public class Find_2_Nums {

public static void Find_Num(int[] arr, int key) {
int count = 0;                                     //计数器
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < arr.length; i++) {
int num = key - arr[i];
if (map.containsKey(num)) {	                   //包含目标值
System.out.println(map.get(num)+"   "+i);  //立即输出
count++;
}
map.put(arr[i], i);                            //加入到表中
}
if(count==0){
System.out.println("-1  -1");
}
}

public  static void main(String[] args) {
Scanner input = new Scanner(System.in);            //读入相关元素
System.out.println("Input the Sum:");
int key = input.nextInt();
System.out.println("Input the length of the array:");
int length = input.nextInt();
int arr[] = new int[length];
System.out.println("Input the elements of the array:");
for(int i = 0;i<length;i++)
arr[i] = input.nextInt();
Find_Num(arr, key);
}
}

时间复杂度

遍历包含n个元素的表一次,所以为:O(n)

空间复杂度

所需的额外空间取决于哈希表中存储的元素数量,该表最多需要存储n个元素。所以为:O(n)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐