1 问题

输入一个递增排序数组和数字和s,在数组里面找2个数,他们的和是s,如果有多对,只需要输出一对。
比如数组{1, 2, 4, 7, 11, 15},我们输出4 ,11

2 思路

我们定义2个首尾指针,先是1+15,大于15,然后我们尾巴指针左移一下,然后就是1+11 小于15,然后首指针右移动一下,2+11,依次类推。

3 代码实现

#include <stdio.h>
#include <stdlib.h>#define true 1
#define false 0int findNumber(int *a, int len, int sum, int *num1, int *num2)
{int result = false;   if (NULL == a || len < 1 || NULL == num1 || NULL == num2){return result;}int start = 0;int end = len - 1;while (end > start){*num1 = a[start];*num2 = a[end];int curSum = *num1 + *num2;if (curSum == sum){result = true;break;}else if (curSum > sum){--end;}else{++start;}}return result;
}int main()
{int a[] = {1, 2, 4, 7, 11, 15};int num1 = 1;int num2 = 3;int result = findNumber(a, sizeof(a) / sizeof(int), 15, &num1, &num2);if (result == 1){printf("the num1 is %d the num2 is %d\n", num1, num2);}else{printf("do not find the two number in numbers");}return 0;
}

4 运行结果

the num1 is 4 the num2 is 11

5 代码优化

 while (end > start){int curSum = a[start] + a[end];if (curSum == sum){*num1 = a[start];*num2 = a[end];result = true;break;}else if (curSum > sum){--end;}else{++start;}}

剑指offer之和为s的数组相关推荐

  1. 【前端js】实现剑指offer|leetcode(二)——数组题目集合

    文章目录 一.数组去重 1. 对排序数组去重(leetcode 26. 删除排序数组中的重复项) 2. 检查是否存在重复元素(leetcode 217. 存在重复元素) 3. 检查相邻k个元素是否存在 ...

  2. 【LeetCode】剑指 Offer 53 - I. 在排序数组中查找数字 I

    [LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 文章目录 [LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 一.二分法 总结 一.二分法 ...

  3. 剑指offer——面试题51:数组中重复的数字

    剑指offer--面试题51:数组中重复的数字 Solution1: 20180910更新.利用数组做一次hash映射,时间复杂度为O(n)O(n)O(n),空间复杂度O(n)O(n)O(n). cl ...

  4. 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字

    剑指offer--面试题40:数组中只出现一次的数字 Solution1: 书中展示了很棒的思路: 关于异或的两个性质应该知道: (1) X^X = 0; (2) X^0 = X; class Sol ...

  5. 【重点】剑指offer——面试题36:数组中的逆序对

    剑指offer--面试题36:数组中的逆序对 Solution1: 20180905整理 参考网址:https://www.nowcoder.com/profile/4474567/codeBookD ...

  6. 剑指offer——面试题29:数组中出现次数超过一半的数字

    剑指offer--面试题29:数组中出现次数超过一半的数字 Solution1: 20180902日整理 注意几点: 1.若下一个数字和我们之前保存的数字相同,则次数 +1 2.若下一个数字和我们之前 ...

  7. C++版 - 剑指Offer 面试题36:数组中的逆序对及其变形(Leetcode 315. Count of Smaller Numbers After Self)题解

    剑指Offer 面试题36:数组中的逆序对 题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 例如, 在数组{7,5, ...

  8. 【剑指offer】数字在排序数组中出现的次数

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/27364557 题目描写叙述: 统计一个数字在排序数组中出现的次数. 输入: 每一个測试案例 ...

  9. j剑指offer面试题[33]-把数组排成最小的数

    题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路: 可以 ...

最新文章

  1. python对文件的_python对文件的读写
  2. 深度学习--感知机讲解
  3. MySQL纯透明的分库分表技术还没有
  4. Promise第二篇:你需要记着的API
  5. jQuery以Post方式发送请求并获取返回的文件供下载!
  6. mysql 组合索引
  7. 核函数与径向基函数 (Radial Basis Function 简称 RBF)详解
  8. 常见关联图库之欺诈指数排位战
  9. 工具存储过程收藏(spFindString)
  10. 洛谷——P2415 集合求和
  11. Q111:PBRT-V3系统概述
  12. 没有对比就没有伤害,优秀的代码VS糟糕的代码
  13. 不加载任何包,手撕一个R语言版BP神经网络模型
  14. Eclipse——在eclipse.ini文件中配置JDK
  15. 博图v14编程c语言教程_10个步骤完成PLC从编程到下载,超详细的TIA博途V13软件使用教程...
  16. 转载--32个鲜为人知的自学网站
  17. 2000级2班同学聚会邀请函.doc
  18. 45.常用的数学工具类2-三角函数的使用
  19. MySQL Workbench 已停止工作 错误模块名称: KERNELBASE.dll 异常代码: 0xe0434352 程序无法正常启动:( 0xc000007b)
  20. 初学c语言试写的答题系统

热门文章

  1. 在ASP.NET Core微服务架构下使用数据库切分和扩展, 并用JMeter进行负载测试
  2. 使用 Bridge to Kubernetes 简化云端开发
  3. 让Dapper在一个项目中支持多种库
  4. 通过 GitHub Actions 自动创建 Github Release
  5. BCVP第2期:项目已完成升级.NET5.0
  6. 译 | 将数据从Cosmos DB迁移到本地JSON文件
  7. 浅议C#客户端和服务端通信的几种方法:Rest和GRPC和其他
  8. 使用Docker-Compose搭建高可用redis哨兵集群
  9. BeetleX之vue-autoui自匹配UI插件
  10. ASP.NET Core跨平台技术内幕