跳至主要內容

001. 两数之和

T4mako算法数组哈希小于 1 分钟

001. 两数之和

简单

解法一:两层 for 循环遍历

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 new int[]{};
    }
}

由于数组中的同一个元素在答案里不能重复出现,通过两层 for 循环,第一个 for 从 i = 0 开始,第二个循环从j=i+1开始,找到满足要求的下标。此解法时间复杂度为 O(n2)

解法二:使用hashmap

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int result[]=new int[2]; //结果数组
        HashMap<Integer,Integer> map = new HashMap();
        for(int i = 1;i < nums.length;i++){ // 边遍历,边增加map中值的数量
            int x = target - nums[i];
            if(map.containsKey(x)){
                result[0] = i;
                result[1] = map.get(x);
                return result;
            }
            map.put(nums[i],i);
        }
        return result;
    }
}

建立一个 HashMap,key 存储数组值,value 存储数组下标,通过一次遍历,再查找 target 减去第一次遍历的值是否存在即可

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.5