zoukankan      html  css  js  c++  java
  • LeetCode第1题 Two Sum

    1. Two Sum

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

    来自Leetcode第一题

    示例:

    给定 nums = [2, 7, 11, 15], target = 9
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]
    

    题解:

    由于返回值是数组的index,所以可以使用Map

    • Java版:
    public int[] twoSum(int[] nums, int target) {
           int[] ret = {-1, -1};
            if(nums == null || nums.length < 2) {
                return ret;
            }
            Map<Integer, Integer> map = new HashMap<>();
            for(int i = 0; i < nums.length; i++) {
                int tempNum = nums[i];
                if(map.containsKey(target - tempNum)) {
                    return new int[]{map.get(target - tempNum), i};
                }
                map.put(tempNum, i);
            }
            return ret;
        }
    
    • JavaScript版
    var twoSum = function(nums, target) {
        let hash = {};
        for(let i in nums) {
            if(hash[target - nums[i]] != undefined) {
                return [hash[target - nums[i]], i];
            }
            hash[nums[i]] = i;
        }
        return [-1, -1];
    };
    
  • 相关阅读:
    FZU 2150 Fire Game
    POJ 3414 Pots
    POJ 3087 Shuffle'm Up
    POJ 3126 Prime Path
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    字符数组
    HDU 1238 Substing
    欧几里德和扩展欧几里德详解 以及例题CodeForces 7C
    Codeforces 591B Rebranding
  • 原文地址:https://www.cnblogs.com/BearBird/p/12708813.html
Copyright © 2011-2022 走看看