zoukankan      html  css  js  c++  java
  • LeetCode 1. Two Sum 解题报告

    题意:
    数组nums中,有两个元素的和是target,找出这两个元素的位置。
     
    思路:
    维护一个map,用数组的元素的值做key,用元素的位置做value。遍历nums,对每个num来说,如果map[target - num] 有值的话,就返回map[target - num]和num的位置,如果没有找到的话,就把num插入到map中,map[num] = index。时间复杂度O(nlogn)。
     
    C++ Code:
    class Solution {
    public:
        vector<int> twoSum(vector<int>& nums, int target) {
            std::map<int, int> map;
            for(int i = 0; i < nums.size(); i++)
            {
                if(map.find(target - nums[i]) != map.end())
                {
                    std::vector<int> result{map[target - nums[i]], i + 1};
                    return result;
                }
                map[nums[i]] = i + 1;
            }
        }
    };

    Python Code:

    class Solution(object):
        def twoSum(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: List[int]
            """
            map = {}
            for index,num in enumerate(nums):
                if target - num in map:
                    return [map[target - num], index + 1]
                map[num] = index + 1

    JS Code:

    /**
     * @param {number[]} nums
     * @param {number} target
     * @return {number[]}
     */
    var twoSum = function(nums, target) {
        var map = {}
        for(i = 0; i < nums.length; i++)
        {
            if(map.hasOwnProperty(target - nums[i]))
            {
                return [map[target - nums[i]], i + 1]
            }
            map[nums[i]] = i + 1
        }
    };
     
     
  • 相关阅读:
    Training: WWW-Robots
    Training: Stegano I
    Encodings: URL
    利用Nginx实现域名转发 不修改主机头
    C++删除目录和复制目录函数
    获取文件大小的函数
    日志打印函数
    拉起上级目录程序
    安卓TabHost页面
    有趣的人形时钟
  • 原文地址:https://www.cnblogs.com/andyidea/p/5083605.html
Copyright © 2011-2022 走看看