• 【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");
         }
    };
  • 相关阅读:
    ubuntu18安装paddle的cpu版本错误
    博客园的推荐150名大牛的地址
    课堂翻译
    小组介绍
    Sunshine小组
    项目进程
    总结
    布置的开发项目
    一周总结
    每周学习
  • 原文地址:https://www.cnblogs.com/AndrewGhost/p/8903097.html
Copyright © 2020-2023  润新知