leetcode c++做题思路和题解(1)——常规题总结
2024-09-02 08:39:14
常规题总结
0. 目录
1. 两数之和
耗时4ms(98.82%),内存6.2m。
两数之和——寻找中值向两边扩散法
1.1 思路
思路很简单,就是先找数组中target/2的前后两个值,然后慢慢向两边扩散。
1.2 示例
[0,2,4,5,8] target为7
- 先找7/2=3.5前后的,也就是2和4这两个,获取其指针,front指向2,back指向4
- 2+4<7,所以back++,也就是指向5
- 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;
}
最新文章
- 【Java并发编程实战】-----&ldquo;J.U.C&rdquo;:ReentrantLock之三unlock方法分析
- 理解Bitcode
- 【20160924】GOCVHelper 图像增强部分(4)
- Android开发-API指南-<;application>;
- lintcode :搜索二维矩阵
- hbase运行模式
- C# 自定义事件
- 二维码_encode与decode
- WPF - 如何引用external dll中图片
- windows 下一个mysql password忘记改变
- jsp页面格式化数字或时间
- Eclipse-ee 启动Tomcat后浏览器无法访问Tomat,并且Web项目服务部署
- 由if-else,switch代替方案引起的思考
- js-使用JavaScript、jQuery两种方式实现全选/全不选
- c++实验二
- HTTPD三种工作模型
- The META for Mobile terminal
- Centos 7最小化Mongodb部署操作
- [Leetcode 46]全排列 Permutations 递归
- 【Spark】SparkStreaming-Kafka-Redis-集成-基础参考资料
热门文章
- IDEA启动项目报错:Cannot open URL.Please check this URL is correct
- Fiddler5 发送HTTP请求
- Asp.Net Core AuthorizeAttribute 和AuthorizeFilter 跟进及源码解读
- Android 登陆功能的实现(访问WebServices 解析返回的JSON结果)
- MS15-034漏洞复现、HTTP.SYS远程代码执行漏洞
- hdu1429 胜利大逃亡(续)???天天逃亡???
- hdu1045 炮台的配置 dfs
- HTTP 错误 500.21 模块	IIS Web Core
- 动态规划-Minimum Insertion Steps to Make a String Palindrome
- sql-lib闯关31-40