本文主要是介绍【算法】无序数组的两数之和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
在一个无序数组中找到两个数,两个数之和为给定的一个数,返回两个数在数组中的下标。
原理
遍历数组,遍历到一个数字的时候,记录下这个数及其下标,遍历时判断给定数减去这个数为key在map中是否存在,存在则返回两个下标,否则将数和下标放入map即可。
代码
public static void main(String[] args) {int[] indexArray = getIndexArray(10, new int[]{2, 7, 5, 3, 1, 6});System.out.println(Arrays.toString(indexArray));}private static int[] getIndexArray(int num, int[] arr) {Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < arr.length; i++) {if (null != map.get(num - arr[i])) {return new int[]{map.get(num - arr[i]), i};}map.put(arr[i], i);}return null;}
这篇关于【算法】无序数组的两数之和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!