LeetCode 第一题 Two Sum
2018-03-11 17:00
375 查看
题目:点击打开链接 刚开始的时候就是想着直接暴力求解,但是没过,超时了,然后在网上看了一下解法主要就是两种:: 1:将数组拷贝后进行排序,用两个指针指向头和尾,用逐渐逼近的方法接近答案(类似于二分法实在想不出好的词来形容这 个想法了),头尾值相加大于目标值就尾指针向前移,如果小于就头指针向后移,找到等于答案的值过后,在原来的数组中 去找到相应的位置,注意可能两个值是相同的,在找位置的时候避免同一个值被查找两遍,最后对结果进行排序。时间复杂 度为O(nlogn)。 2:用hash表来做。点击打开链接 这个链接的博客里写得很详细。 我用的是第一种方法:
class Solution{ vector<int> twoSum(vector<int>& nums, int target) { vector<int> jieguo; vector<int> zs(nums); sort(zs.begin(), zs.end()); int jishu1 = 0,jishu2 = zs.size() -1; int sum = zs.at(jishu1) + zs.at(jishu2); while(jishu1 != jishu2){ if(sum == target){ break; } else if(sum < target){ jishu1++; } else if(sum > target){ jishu2--; } sum = zs.at(jishu1) + zs.at(jishu2); } int zz; for(int i = 0; i < nums.size(); i++){ if(nums[i] == zs.at(jishu1)){ jieguo.push_back(i); zz = i; break; } } for(int i = 0; i < nums.size(); i++){ if(nums[i] == zs.at(jishu2)){ if(i != zz){ jieguo.push_back(i); break; } } } sort(jieguo.begin(), jieguo.end()); return jieguo; } };
相关文章推荐
- leetcode第一题--two sum
- Leetcode第一题_Two Sum
- leetcode第一题(medium)——Two Sum
- leetcode_java_第一题 two sum
- leetcode第一刷_Two sum
- 我的LeetCode第一弹 Leetcode: Two Sum
- leetcode 第一题 two sum
- LeetCode第一题Two Sum
- Leetcode 之第一题 two sum
- LeetCode 第一题,Two Sum
- leetcode------第一题 Two Sum
- Leetcode第一题--------- Two Sum
- 算法分析与设计丨第一周丨 LeetCode(1)——Two Sum
- leetcode第一题two sum
- LeetCode——Two Sum
- LeetCode-Two sum
- LeetCode刷题之第一题——TwoSum
- [leetcode, python] Two Sum 两数之和等于某数
- LeetCode-1.Two Sum
- 【LeetCode】Two Sum