常规题总结

0. 目录

  1. 两数之和

1. 两数之和

耗时4ms(98.82%),内存6.2m。

两数之和——寻找中值向两边扩散法

1.1 思路

思路很简单,就是先找数组中target/2的前后两个值,然后慢慢向两边扩散。

1.2 示例

[0,2,4,5,8] target为7

  1. 先找7/2=3.5前后的,也就是2和4这两个,获取其指针,front指向2,back指向4
  2. 2+4<7,所以back++,也就是指向5
  3. 2+5==7,所以成功返回

1.3 源码

int* twoSum(int* numbers, int numbersSize, int target, int* returnSize){
*returnSize=2;
int *result = (int*)malloc(sizeof(int)*2);
double mid = (double)target / 2.0;
int sum = 0;
int i = 0;
int* front =NULL;
int* back = NULL; //寻找target中值位置
for(i = 0; i < numbersSize; ++i){
if((double)numbers[i]> mid) break;
else if ((double)numbers[i]==mid) {
++i;
break;
}
} //两个指针,分别两边扩散
front = numbers + i - 1;
back = numbers + i;
while(true){
sum = *front+*back;
if(sum == target) break;
else if (sum>target) front--;
else back++;
}
result[0] = front - numbers + 1;
result[1] = back - numbers + 1; return result;
}

最新文章

  1. 【Java并发编程实战】-----&ldquo;J.U.C&rdquo;:ReentrantLock之三unlock方法分析
  2. 理解Bitcode
  3. 【20160924】GOCVHelper 图像增强部分(4)
  4. Android开发-API指南-&lt;application&gt;
  5. lintcode :搜索二维矩阵
  6. hbase运行模式
  7. C# 自定义事件
  8. 二维码_encode与decode
  9. WPF - 如何引用external dll中图片
  10. windows 下一个mysql password忘记改变
  11. jsp页面格式化数字或时间
  12. Eclipse-ee 启动Tomcat后浏览器无法访问Tomat,并且Web项目服务部署
  13. 由if-else,switch代替方案引起的思考
  14. js-使用JavaScript、jQuery两种方式实现全选/全不选
  15. c++实验二
  16. HTTPD三种工作模型
  17. The META for Mobile terminal
  18. Centos 7最小化Mongodb部署操作
  19. [Leetcode 46]全排列 Permutations 递归
  20. 【Spark】SparkStreaming-Kafka-Redis-集成-基础参考资料

热门文章

  1. IDEA启动项目报错:Cannot open URL.Please check this URL is correct
  2. Fiddler5 发送HTTP请求
  3. Asp.Net Core AuthorizeAttribute 和AuthorizeFilter 跟进及源码解读
  4. Android 登陆功能的实现(访问WebServices 解析返回的JSON结果)
  5. MS15-034漏洞复现、HTTP.SYS远程代码执行漏洞
  6. hdu1429 胜利大逃亡(续)???天天逃亡???
  7. hdu1045 炮台的配置 dfs
  8. HTTP 错误 500.21 模块 IIS Web Core
  9. 动态规划-Minimum Insertion Steps to Make a String Palindrome
  10. sql-lib闯关31-40