难民级新手
1.Algorithm
https://leetcode-cn.com/submissions/#/1
题目两数之和
直接使用两次循环
class Solution { public int[] twoSum(int[] nums, int target) { for(int i = 0 ; i < nums.length ; i++){ for(int j = i + 1 ; j < nums.length ; j++){ if(nums[i]+nums[j]==target) return new int [] {i,j}; } } return null; } }
class Solution { public int[] twoSum(int[] nums, int target) { int[] arr = new int[2]; Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i = 0; i < nums.length; i++){ if (map.containsKey(target - nums[i])){ arr[1] = i ; arr[0] = map.get(target - nums[i]); return arr; } map.put(nums[i],i); } return arr; } }
第二个方法快
通过以空间换取速度的方式,我们可以将查找时间从 O(n)O(n) 降低到 O(1)O(1)。哈希表正是为此目的而构建的,它支持以 近似恒定的时间进行快速查找
哈希表是一一对应的关系,你可以简单理解为 Y=kX+b,你要寻找的对象X被存在了哈希表的第Y个位置, 比如:Y=2X+3,我要找“5”,直接在第“13”的位置去找,所以查找复杂度为O(1) .....
2.Share
3.Review&Tip
学习数据库设计
其他: