暴力破解法,运用数组两数之和相加,直到两数之和相加成目标值为止。但时间复杂度为O(1)
class Solution { public int[] twoSum(int[] nums, int target) { int[] result = new int[2]; int n = nums.length; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(nums[i]+nums[j]==target){ result[0]=i; result[1]=j; break; } } } return result; } }
哈希表方法:通过利用哈希表存储,我们通过哈希表,查找表中是否有target-nums[i]这个数据,
若没有,哈希表插入x,并伴随记录数组位置。、
哈希表方法将时间复杂度降低到从 O(N) 降低到 O(1)
class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> ht=new HashMap<Integer,Integer>(); for(int i = 0;i < nums.length;i++){ if(ht.containsKey(target-nums[i])){ return new int[]{ht.get(target-nums[i]),i}; } ht.put(nums[i],i); } return new int[0]; } }