zoukankan      html  css  js  c++  java
  • LeetCode 1. twoSums

    C++:

    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> hashMap;
        
        for (int i = 0; i < nums.size(); i++) {
                if(hashMap.find(nums[i]) == hashMap.end()){
                    hashMap[target-nums[i]] = i;
                }else{
                    return vector<int> {hashMap[nums[i]]+1, i+1};
                }
            }
        return vector<int> {};
    }

    1. hashMap[value] = i 使得value + nums[i] = target

    2. unordered_map其内部存储为hash、遍历无序、使用需重载operator ==以及hash_value(), map存储为树、需重载operator <; 详见文章http://blog.csdn.net/orzlzro/article/details/7099231

    3. hashMap[nums[i]]一定比i小,因前者值为几个迭代之前的i而这里i从小到大

    Python:

    def twoSum(self, nums, target):
            m_map = {}
            for i in range(len(nums)):
                if nums[i] not in m_map:
                    m_map[target - nums[i]] = i
                else:
                    return[m_map[nums[i]]+1, i+1]

    讨论里有更简洁代码,

    for j, item in enumerate(nums, 1): #start from 1 & items are entries
      i = m_map.get(item, -1) #the same as m_map[] but instead of crush, gives back -1 when couldn't find item
       if i > 0:
         return [i, j]
       m_map[target - item] = j
  • 相关阅读:
    三毛
    深复制和浅复制
    并发和并行
    PhotoKit保存图片到相册
    利用代码块
    Maven打包程序
    通过Nginx+Tomcat简单实现发布时不间断服务的提供
    C# java MD5加密方不一致问题
    SpringBoot读取配置值的方式
    Java8之集合排序
  • 原文地址:https://www.cnblogs.com/rangozhang/p/4545222.html
Copyright © 2011-2022 走看看