Leetcode hot100刷题记录_1.两数之和
暴力解法:
1 class Solution { 2 public int[] twoSum(int[] nums, int target) { 3 for(int i = 0;i < nums.length-1 ; i++){ 4 for(int j = i+1;j < nums.length;j++){ 5 if(nums[i] + nums[j] == target){ 6 return new int[]{i, j}; 7 } 8 } 9 } 10 return new int[]{}; 11 } 12 }
暴力解法一下子就能想到并且也不超时:D 只是我对java不太熟悉)
空间换时间法:
1 class Solution { 2 public int[] twoSum(int[] nums, int target) { 3 Map<Integer, Integer> map = new HashMap<>(); 4 for(int i = 0;i < nums.length;i++){ 5 if(map.containsKey(target - nums[i])){ 6 return new int[]{i, map.get(target - nums[i])}; 7 } 8 map.put(nums[i], i); 9 } 10 return new int[]{}; 11 } 12 }
暴力方法的第二层循环需要找到和num[i]相加的和为target的元素,可以用一个map替代,节省时间。
总结:
- 创建int数组的方法:new int[]{....}
- 创建hashmap的方法
- 判断是否含有key的方法、获取value的方法、插入新键值对的方法