[leetcode 1] Two Sum
来源:互联网 发布:python删除临时文件 编辑:程序博客网 时间:2024/05/14 09:11
Question:
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.
Example:
Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
分析:
暴力法很简单,二重循环,但是超时了;
可以声明一个辅助数组,是对原数组的拷贝,这样,可以将辅助数组进行排序,排序后通过左右两个索引指针就可以判断是哪两个值相加为target;
然后在原数组中找到这两个值所对应的下标。
代码如下:
<span style="background-color: rgb(255, 255, 255);"><span style="font-size:14px;">class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> res(2); vector<int> cp(nums); sort(nums.begin(),nums.end()); int left = 0; int right = nums.size()-1; while(left < right){ int sum = nums[left] + nums[right]; if(sum < target) ++left; else if(sum > target) --right; else{ break; } } for(int i = 0; i < nums.size(); ++i){ if(cp[i] == nums[left]){ left = i; break; } } for(int i = 0; i < nums.size(); ++i){ if(cp[i] == nums[right] && i != left){ right = i; break; } } res[0] = min(left,right); res[1] = max(left,right); return res; //暴力法 /* for(int i = 0; i < nums.size()-1; ++i){ for(int j = i+1; j < nums.size(); ++j){ if(nums[i] + nums[j] == target){ res.push_back(i); res.push_back(j); break; } } } return res;*/ }};</span></span>
0 0
- LeetCode 1 - Two Sum
- leetcode 1 Two Sum
- Leetcode【1】:Two Sum
- [leetcode 1] Two Sum
- 【leetcode-1】Two Sum
- [leetcode 1] Two Sum
- [Leetcode] 1 - Two Sum
- LeetCode (1) Two Sum
- LeetCode 1:《Two Sum》
- LeetCode | #1 Two Sum
- leetcode-1 Two Sum
- Two Sum | LeetCode(1)
- [Leetcode]1Two Sum
- leetcode 1 Two Sum
- leetcode #1 Two Sum
- leetcode 1:Two Sum
- LeetCode 1 Two Sum
- leetcode #1 two sum
- leetcode_062 Unique Paths
- jfnial
- Android ADT开发环境配置代码自动提示功能
- 矩阵乘法运算图解
- 给 Android 开发者的 RxJava 详解
- [leetcode 1] Two Sum
- 初级教程之 五 ListView的基础入门
- 【已解决】如何判断处理器是大端,或小端?
- Android中的5种数据存储方式
- Adapter extends ArrayAdapter<Msg> 的片段代码
- Android案例1 打招呼
- Java中implements和extends的小记
- POJ-2051
- EXCEL导入数据到mysql