167. Two Sum II - Input array is sorted【easy】

Given an array of integers that is already sorted in ascending order, 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 note that your returned answers (both index1 and index2) are not zero-based.

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

Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2

解法一:

 class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
vector<int> result; for (int i = , j = numbers.size() -; i <= j;) {
if (numbers[i] + numbers[j] == target) {
result.push_back(i + );
result.push_back(j + );
return result;
}
else if (numbers[i] + numbers[j] > target) {
--j;
}
else if (numbers[i] + numbers[j] < target) {
++i;
}
} return result;
}
};

双指针

解法二:

 class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
vector<int> result; for (int i = ; i < numbers.size() - ; ++i) {
int start = i + ;
int end = numbers.size() - ;
int temp_target = target - numbers[i]; //binary search
while (start + < end) {
int mid = start + (end - start) / ;
if (numbers[mid] == temp_target) {
result.push_back(i + );
result.push_back(mid + );
return result;
}
else if (numbers[mid] > temp_target) {
end = mid;
}
else if (numbers[mid] < temp_target) {
start = mid;
}
}
if (numbers[start] == temp_target) {
result.push_back(i + );
result.push_back(start + );
return result;
}
if (numbers[end] == temp_target) {
result.push_back(i + );
result.push_back(end + );
return result;
}
} return result;
}
};

二分查找

最新文章

  1. iOS逆向工程之App脱壳
  2. javascript 核心语言笔记 6 - 对象
  3. 使用Web.Config Transformation配置灵活的配置文件
  4. Linux下如何移除同时在线的用户
  5. 使用javascript实现在页面打印的效果的三种方式
  6. 多进程、协程、事件驱动及select poll epoll
  7. HTML 折行 &lt;br/&gt;标签
  8. TortoiseSVN使用简介(转)
  9. 通过 DevOps 整合开发和应用安全管道
  10. SSAS中CUBE行权限数据级权限控制
  11. OCA读书笔记(7) - 管理数据库存储结构
  12. MessageBox()功能
  13. gulp插件大全
  14. datepickerpopup时间限制选取
  15. 【译】索引进阶(一):SQL SERVER索引介绍
  16. 基于BlogEngine.NET搭建个人博客
  17. c sharp dll
  18. 不要62(hdu2089)
  19. WPF样式继承
  20. GBDT,Adaboosting概念区分 GBDT与xgboost区别

热门文章

  1. Hibernate4 No Session found for current thread
  2. python3 开发面试题(%s和format的区别)5.31
  3. 数据结构之B-树,你每天都在用的,源码发布!
  4. HTML5 Boilerplate笔记(2)(转)
  5. 如何让Adobe reader 记住上次pdf文档打开位置?
  6. ARM“庖丁解牛”之存储器管理单元MMU
  7. 正则表达式之 /^(\d)$/
  8. vue中的组件,Component元素,自定义路由,异步数据获取
  9. Docker实践4: 基于nginx对后端的weblogic负载均衡
  10. 64位的centos6.9的vnc-sever的安装及桌面环境安装