LeetCode热题 首题 两数之和

2024-02-20 19:12:02 浏览数 (1)

暴力破解法,运用数组两数之和相加,直到两数之和相加成目标值为止。但时间复杂度为O(1)

代码语言:javascript复制
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)

代码语言:javascript复制
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];
    }
}

0 人点赞