zoukankan      html  css  js  c++  java
  • 【Leetcode】1. Two Sum

    题目地址:

    https://leetcode.com/problems/two-sum/description/

    题目描述:

    leetcode第一题,给一个整数集合nums,和一个整数target,从集合中找出两个数,使得两数之和等于target,返回

    这两个数在集合中的索引。题目默认存在这样的两个数。

    解决方案:

    最暴力的是两层loop。这里采用的做法,遍历集合nums,对当前数而言,若能在之前的数中找到另一个数与当前数之和等于

    target,就算小功告成了。处理方式用一个set容器记录下前面每个数与target的差,以后只需要判断当前数在不在这些差里面即可。

    代码:

    class Solution {
    public:
        vector<int> twoSum(vector<int>& nums, int target) {
            set<int> comp;
            for (size_t i = 0; i != nums.size(); i++) {
                int val = nums.at(i);
                int delta = target - val;
                if (comp.find(val) != comp.end()) {    
                    auto it = find(nums.begin(), nums.end(), delta);
                    int  first = distance(nums.begin(), it);
                    int  second = static_cast<int>(i);
                    return {first, second};
                }
                else {
                    comp.insert(delta);
                }
            }
    
            throw::invalid_argument("there is not valid solution");
         }
    };
  • 相关阅读:
    一个省一等奖没文件没证书,只能保存一张图呢
    HTML5的新结构标签
    一个最简单的网页是如何构成的
    数据模型层Model
    空控制器空操作
    TP框架
    thinkphp基础
    静态缓存
    smarty函数
    Smarty的使用
  • 原文地址:https://www.cnblogs.com/AndrewGhost/p/8903097.html
Copyright © 2011-2022 走看看