leetcode 2SUM

struct vp{
        int value;
        int place;
    };
    bool comp(const struct vp a, const struct vp b){
        return a.value<b.value;
    }

class Solution {
public:

vector<int> twoSum(vector<int> &numbers, int target) {
        vector<struct vp> v ;
        for(int i = 0; i < numbers.size(); ++i){
            struct vp tmp;
            tmp.value = numbers[i];
            tmp.place = i;
            v.push_back(tmp);
        }
        sort(v.begin(), v.end(),comp);
        for(int i = 0; i < v.size(); i++){
            for(int j = i+1; j < v.size(); j++){
                if(v[i].value + v[j].value > target){
                    break;
                }
                if(v[i].value + v[j].value < target){
                    continue;
                }
                if(v[i].value + v[j].value == target){
                    vector<int> t ;
                    t.push_back(v[i].place+1);
                    t.push_back(v[j].place+1);
                    sort(t.begin(),t.end());
                    return t;
                }
            }
        }
        return numbers;
    }
};

时间: 2025-01-12 12:02:19

leetcode 2SUM的相关文章

leetcode: 2Sum/3Sum/3SumClosest/4Sum系列问题(转载)

转载:http://blog.csdn.net/li4951/article/details/8693212 leetcode上有好几道关于数组中几个数据和为target的题目.恰好正在看剑指offer中"和为s的两个数组这章",据此思想,leetcode上的三道题目都被我解决了.总结一下. 1.twoSum: 输入一个递增数组和一个数字s,在数组中查找两个数使得它们的和正好是s. 既然题目中已经提到了"递增数组",那么肯定不会暴力了.因此肯定有<O(n*n)

NSum小结

本文载自[k sum problem]以及[NSum]有位同僚,对该问题做出了代码的小结,想看吗?戳我戳我. 问题陈述: 在一个数组,从中找出k个数(每个数不能重复取.数组中同一个值有多个,可以取多个),使得和为零.找出所有这样的组合,要求没有重复项(只要值不同即可,不要求在原数组中的index不同) 解法: 2 sum 用hash table做,可以时间O(n),空间O(n),2 sum 如果用sort以后,在前后扫描,可以时间O(nlogn + n) = O(nlogn),空间O(1)2 s

算法问题分类---整数和问题系列总结

1.给定正整数N,列出所有总和为N的连续正整数串. 方法1: 可以用两个数small,big分别表示序列的最小值和最大值.首先把small初始化为1,big初始化为2.如果从small到big的序列的和大于n的话,则右移small即从序列中移除最小的数:如果从small到big的序列的和小于n的话,则右移big,相当于向序列中添加下一个数字,一直到small等于(1+n)/2,保证序列中至少有两个数. 方法2: 设最大长度为x(加起来等于同样值的元素最多,则这些元素从最小的元素里取),则 1+2

leetcode--ksum问题--3sum

[题目]:点击打开链接 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. For example, given arr

[LeetCode] K sum(2Sum、3Sum、4Sum)

1 2Sum Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please not

leetcode笔记:2Sum

一.题目描述 基本意思是给定一组整数和一个常数target,试图在这一组数里找到两个数使得两者的和等于target,结果要求返回两个数的下标. 二.解题思路 思路一:使用暴力算法实现,这种情况下空间复杂度为O(1),但是时间复杂度为O(n^2),会超时. 思路二:使用hash表,存储每个数对应的下标,事件复杂度为O(n).这样在查找某个值存不存在只需要常数时间. //LeetCode, Two Sum // 时间复杂度O(n),空间复杂度O(n) class Solution { public:

LeetCode 3Sum Closest 最近似的3sum(2sum方法)

题意:找到最接近target的3个元素之和,并返回该和. 思路:用2个指针,时间复杂度O(n^2). 1 int threeSumClosest(vector<int>& nums, int target) { 2 int sum=nums[0]+nums[1]+nums[2]; 3 sort(nums.begin(), nums.end()); 4 for(int i=0; i<nums.size()-2; i++) 5 { 6 int p=i+1, q=nums.size()

leetcode -- 3 sum

3-sum 题目描述: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. 题目要求: Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ 

[LeetCode] 18. 4Sum ☆☆

Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target. Note: The solution set must not contain duplicate quadruplets. For exampl