zoukankan      html  css  js  c++  java
  • 1.两数之和(Two Sum)

    给定一个整数数列,找出其中和为特定值的那两个数。

    你可以假设每个输入都只会有一种答案,同样的元素不能被重用。

    示例:

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

    思路1:暴力法  时间复杂度O(n^2)

    当前元素与其后元素之和与target比较,相等则输出这两个元素的索引,否则当前元素继续与下一个元素求和再与target比较。

        vector<int> twoSum(vector<int>& nums, int target) {
            vector<int> ans;
            for(int i=0;i<nums.size();++i){
                for(int j=i+1;j<nums.size();++j){
                    if(nums[i]+nums[j]==target){
                        ans.push_back(i);
                        ans.push_back(j);
                        break;
                    }
                }
                if(!ans.empty()){
                    break;
                }
            }
            return ans;  
        }

    思路2:建立map数据

    vector<int> two Sum(vector<int>& nums,int target){
        int size=nums.size();
        if(size==0){
            throw "Invalid input";
        }
      unorder_map<int,int> rec;
      vector<int> res;
      for(int i=0;i<size;i++){
        int compensate=target-nums[i];
        if(rec.find(compensate)!=rec.end()){
          res.push_back(rec[compensate]);
          res.push_back(rec(i));
          return res; 
        }
        rec[nums[i]]=i;
      }
    }
  • 相关阅读:
    POJ4046 Sightseeing
    SGU 298. King Berl VI
    POJ1741 Tree
    POJ1639 Picnic Planning
    POJ1635 Subway tree systems
    [JSOI2008]最小生成树计数
    ftrace使用简介(三)
    make: *** 没有规则可以创建目标"menuconfig". 停止
    编译linux内核(ftrace)
    vim 缩进配置
  • 原文地址:https://www.cnblogs.com/aiuestcer/p/8779015.html
Copyright © 2011-2022 走看看