zoukankan      html  css  js  c++  java
  • 【leetcode】 算法题1 两数之和

     
    问题
      
      
     给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

    你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

    示例:

    给定 nums = [2, 7, 11, 15], target = 9
    
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]
     
    代码实现
      
    #include <vector>
    #include <map>
    /**
    *
    *给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
    *你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
    *case:
    *给定 nums = [2, 7, 11, 15], target = 9
    *因为 nums[0] + nums[1] = 2 + 7 = 9
    *所以返回 [0, 1]
    */
    using namespace std;
    class Solution {
    public:
        // 两两对比的方式,时间复杂度为O(n2)
        vector<int> twoSum(vector<int>& nums, int target) {
            vector<int> ret;
    
            // 第一种
            /*for (int i = 0; i < nums.size(); i++) {
                for (int j = i + 1; j < nums.size(); j++) {
                    if (nums[i] + nums[j] == target) {
                        ret.push_back(i);
                        ret.push_back(j);
                        return ret;
                    }
                }
            }*/
    
            // 第二种:数据插入到hashmap里,然后通过target - nums[i]来确定,时间复杂度为O(2n)
            map<int, int> m;
            for (int i = 0; i < nums.size(); i++) {
                m[nums[i]]  = i;
            }
            for (int i = 0; i < nums.size(); i++) {
                if (m.count(target - nums[i]) > 0 && i != m[target - nums[i]]) {
                    ret.push_back(i);
                    ret.push_back(m[target - nums[i]]);
                    return ret;
                }
            }
            return ret;
        }
    };
    

      

     

     
     
    推荐
     
     
     
     
     
     
  • 相关阅读:
    数学(1.费马定理 2.扩展欧几里德算法 3.莫比乌斯反演)
    hdu 3068 最长回文(manacher入门)
    hdu 2594 Simpsons’ Hidden Talents(KMP入门)
    hdu 1671&& poj 3630 (trie 树应用)
    hdu 1251 统计难题(trie树入门)
    poj 2001 Shortest Prefixes(字典树trie 动态分配内存)
    poj 2406 Power Strings(KMP入门,next函数理解)
    hdu 2087剪花布条 (KMP入门 子串出现的次数和子串个数)
    python-操作json
    测试用例-错误推断法
  • 原文地址:https://www.cnblogs.com/baochuan/p/9019465.html
Copyright © 2011-2022 走看看