Binary Search:167. Two Sum II
来源:互联网 发布:石家庄优化 编辑:程序博客网 时间:2024/06/16 14:53
这道题的意思是,给一个排好序的数组,和一个目标值target, 求数组中的两个数,使得他们相加等于target,返回两个数的下标。
这道题一开始没有加if(i > 0 && numbers[i] == numbers[i-1]) continue;这句话,超时了。原因是有的测试用例是{0,0,0,....,0,9,9,9....,9}target是5.
class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { int num1 = 0, num2 = 0; for(int i = 0; i < numbers.size(); ++i) { if(numbers[i] > target) break; else num1 = i; if(i > 0 && numbers[i] == numbers[i-1]) continue; for(int j = i+1; j < numbers.size(); ++j) { if(numbers[j] + numbers[num1] == target) { num2 = j; return {num1+1, num2+1}; } } } return {}; }};看到大神的写法,设前后两个指针,向中间移动,把两个指针处的值相加,如果和大于target,左边指针回去。如果和小于target,右边指针回去。
class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { int l = 0, r = numbers.size() - 1; while (l < r) { int sum = numbers[l] + numbers[r]; if (sum == target) return {l + 1, r + 1}; else if (sum < target) ++l; else --r; } return {}; }};
阅读全文
0 0
- Binary Search:167. Two Sum II
- LeetCode-Easy部分中标签为 Binary Search 167. Two Sum II
- leetcode :Binary Search:Two Sum II - Input array is sorted(069)
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 167. Two Sum II
- 循迹小车的制作
- theano学习--theano.tensor
- git: 为什么 pull request 不叫 push request
- 数据库简介
- 12进程控制
- Binary Search:167. Two Sum II
- 1006. 换个格式输出整数
- bzoj2440—完全平方数(二分+容斥原理)
- 解决error[22,0]Could not find method android() for arguments的方法
- 【Java基础15_1】Collection类及其基本用法
- 创建类H和对象
- bzoj1432: [ZJOI2009]Function
- 对极约束
- DQL、DML、DDL、DCL的概念与区别