
题目分析
-
这个题目要求是找到整数数组中和为目标值的两个整数下标
-
因此对应的最简单的方法就是直接暴力递归,从头开始找出所有的和,判断是否和目的值相同
int[] arr = new int[2]; for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length;j++){ if(nums[i]+nums[j]==target){ arr[0]=i; arr[1]=j; return arr; } } } return arr;
-
-
暴力解法事件效率太低我们因此就会考虑如何优化这个暴力循环
暴力解法的优化 一般是如何减少遍历情况,即如何剪枝,排除点不需要遍历的情况
亦或者是牺牲空间换时间-
我们可以引入map集合,map集合查找元素很快是O(1)的时间复杂度
-
map集合一个我们很容易忽视的点就是当我们判断是否成立的时候,我们并不一定两个元素都需要找,只需要找另一个元素减去这个元素即可
Map<Integer,Integer> map = new HashMap<>(); for(int i=0;i<nums.length;i++){ if(map.containsKey(target-nums[i])){ return new int[]{map.get(target-nums[i]),i}; } map.put(nums[i],i); } throw new IllegalArgumentException("No two sum solution");
-
177

被折叠的 条评论
为什么被折叠?



