zoukankan      html  css  js  c++  java
  • LeetCode 167.两数之和(C++)

    给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。

    函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2

    说明:

    • 返回的下标值(index1 和 index2)不是从零开始的。
    • 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。

    示例:

    输入: numbers = [2, 7, 11, 15], target = 9
    输出: [1,2]
    解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。

    思路:两个下标,一个指向容器开头元素,一个指向末尾元素。因为是递增排列的,因此,
    当vec[begin] + vec[end] > target时,end = end - 1
    当vec[begin] - vec[end] < target时,end = end + 1
    当vec[begin] - vec[end] = target,返回两个下标

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <string>
    
    using namespace std;
    
    vector<int> twoSum(vector<int>& numbers, int target) {
        int begin = 0, end = numbers.size() - 1;
        vector<int> results{ 0, 0 };
        while (begin < end) {
            int sum = numbers[begin] + numbers[end];
            if (sum == target) {
                results = { begin + 1, end + 1 };
                break;
            }
            else if (sum > target)
                end--;
            else
                begin++;
        }
        return results;
    }
    
    int main()
    {
        vector<int> vec{ 0, 0, 3, 4 }, res;
        res = twoSum(vec, 7);
        for (auto& i : res) {
            cout << i << " ";
        }
    
        system("PAUSE");
        return 0;
    }
  • 相关阅读:
    java前端学习步骤
    安装Sublime Text 3插件的方法(转自Rising的博文)
    LibSVM学习详细说明
    class 2-3 小项目练习
    class 2-2 小项目练习
    class 2-1 小项目练习
    class 1-1 python开发环境配置
    Class
    class 10 文件和异常
    class
  • 原文地址:https://www.cnblogs.com/Mayfly-nymph/p/10544673.html
Copyright © 2011-2022 走看看