难民级新手

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

ARTS

3.Review&Tip

学习数据库设计

ARTS

其他: 

ARTS

 

相关文章: