(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)
相关文章推荐
- (java)哈希表 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- 在数组中找出和为目标值的两个整数,并返回他们的下标
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- LeetCode 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- python练习题---给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- 算法3:找出一个整数数组里面两个查值最大的两个下标a[j]-a[i]最大并且i<j
- (python)给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的两个整数。
- 每日一题:给定一个整数组和一个目标值,找出数组中和为目标值的两个数
- Java数组中找出两个相加等于某个值的数据下标
- 给定一个整数数组,找出两个下标,要求后面下标所指的数减去前面下标所指的数之差最大
- Java面试题 - 使用二分法计算任意整数在任意整数数组中的下标,不存在则返回-1
- Leetcode:给定一个排序整数数组,找出给定目标值的起始和结束位置。 算法的运行时复杂度必须是O(log n)。 如果数组中没有找到目标,返回[- 1,1]。
- java每日一题:给定一个整数数组arr和整数target,返回两个索引值,使得这两个索引值对应的整数的和等于target。(arr中有且仅有一组)
- 给定一个整数数组,返回数组中两个元素的和为target的索引
- 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)
- 将表达式作为返回值返回,简化程序:找出两个整数中最小值
- 实训汇编语言设计——找出两个数组中相同的整数