[LeetCode] 1. Two Sum

来源:互联网 发布:钢结构节点分析软件 编辑:程序博客网 时间:2024/06/18 02:50

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
class Solution {public:    vector<int> twoSum(vector<int>& nums, int target) {        vector<pair<int, int>> sorted;        for (int i = 0; i < nums.size(); i++)            sorted.push_back({i, nums[i]});        auto cmp = [](pair<int, int> &p1, pair<int, int> &p2) { return p1.second < p2.second; };        sort(sorted.begin(), sorted.end(), cmp);        int i = 0, j = sorted.size() - 1;        while (i < j) {            int add = sorted[i].second + sorted[j].second;            if (add == target)                break;            else if (add > target)                j--;            else                i++;        }        return {sorted[i].first, sorted[j].first};    }};

这里写图片描述这里写图片描述

原创粉丝点击