欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode1.两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,返回数组下标。假设每种输入只对应一个答案。但数组中同一个元素不能使用两遍

程序员文章站 2022-07-14 14:26:16
...

c++ 实现LeetCode 1.两数之和(难度:简单)

新的改变

今天第一次尝试写博客,第一次在leetcode上做题,希望能坚持下去:

  1. 要求:
    给定 nums = [2, 7, 11, 15], target = 9
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/two-sum
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。;
  2. 疑问: 没读懂“你可以假设每种输入只会对应一个答案”是什么意思?是只用给出一对可行的下标就可以?;
  3. 测试数据:假设默认输入数组个数大于两个并且target一定等于其中两个数据之和;
    [2,8,3,8] — [2,8,2,0] — target10

C++代码

// 
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> location;
        bool exist = false;//只找出一组,防止重复使用
        for(vector<int>::iterator it = nums.begin();it < nums.end()-1;it++)
            if(exist)
                break;
            else 
                for(vector<int>::iterator it2 = it+1;it2 < nums.end() ;it2++)
                    if(exist)
                        break;
                    else
                        if((*it)+(*it2) == target)
                        {
                            location.push_back(distance(nums.begin(),it));
                            location.push_back(distance(nums.begin(),it2));
                            exist = true;
                        }
        return location;
    }
};

结果

刚开始超出时间限制,之后改了一下,用时还是很长
执行用时 :1840 ms, 在所有 C++ 提交中击败了5.07%的用户
内存消耗 :7.4 MB, 在所有 C++ 提交中击败了100.00%的用户
看到说用哈希表做的,非科班还在这里插入代码片没学过数据结构和算法,以后有机会改进

相关标签: leetcode leetcode

推荐阅读