【题目描述】

输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和正好是s。如果有多对数字的和等于s,输出任意一队即可。

【解决方案】

设置前后指针,根据所指数字的和来移动前后指针,直到找到目标数字。

我的代码实现,仅供参考:

 1         public static bool FindNumsWithSum(int[] arr, int sum, ref int numA, ref int numB)
 2         {
 3             if (arr == null || arr.Length < 1)
 4                 return false;
 5
 6             int start = 0;
 7             int end = arr.Length - 1;
 8             int temp = 0;
 9
10             while (arr[start] + arr[end] != sum && start < end)
11             {
12                 temp = arr[start] + arr[end];
13
14                 if (temp > sum)
15                     end--;
16                 else
17                     start++;
18             }
19
20             if (start == end)
21                 return false;
22             else
23             {
24                 numA = arr[start];
25                 numB = arr[end];
26             }
27
28             return true;
29         }

【本题扩展】

输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。

例如数组15,由于1+2+3+4+5=4+5++6=7+8=15,所以结果打印出3个连续序列1~5,4~6和7~8。

时间有限,只提供代码。

我的代码实现,仅供参考:

 1         public static void FindContinuousSequence(int sum)
 2         {
 3             int start = 1;
 4             int end = 2;
 5             int curSum = start + end;
 6
 7             while (start < (sum + 1) / 2)
 8             {
 9                 if (curSum < sum)
10                 {
11                     end++;
12                     curSum += end;
13                 }
14                 else if (curSum > sum)
15                 {
16                     curSum -= start;
17                     start++;
18                 }
19                 else
20                 {
21                     for (int i = start; i <= end; i++)
22                     {
23                         Console.Write(i);
24                     }
25                     Console.WriteLine();
26
27                     curSum -= start;
28                     start++;
29                 }
30             }
31         }

转载于:https://www.cnblogs.com/HuoAA/p/4833618.html

【面试题41】和为s的两个数字VS和为s的连续整数序列相关推荐

  1. 剑指offer面试题[41]-和为s的两个数VS和为s的连续正数序列

    题目描述 题目1: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输 ...

  2. 【剑指offer-Java版】41和为s的两个数字VS和为s的连续正数序列

    和为S的两个数字以及和为S的连续正数序列:输入是一个递增排序的数组,查找其中一对满足和为S的数,输出.如果有多对,输出其中一对 public void FindNumbersWithSum(int n ...

  3. 41.和为s的两个数字 VS 和为s的连续正数序列

    为什么80%的码农都做不了架构师?>>>    题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可.   ...

  4. 剑指Offer - 面试题57. 和为s的两个数字(双指针)

    1. 题目 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,则输出任意一对即可. 示例 1: 输入:nums = [2,7,11,15], ta ...

  5. 剑指offer面试题57. 和为s的两个数字(双指针)

    题目描述 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,则输出任意一对即可. 思路 详见链接 代码 class Solution:def tw ...

  6. [剑指offer]面试题41:和为s的两个数字VS和为s的连续正数序列

    面试题41:和为s的两个数字VS和为s的连续正数序列 题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 代码如下: b ...

  7. golang interface 类型转换_Golang面试题41道

    Golang面试题41道 大家好,这一期呢,我们来说一下golang的面试题. 第1题什么是golang? go是一个开源的编程语言,由谷歌开发的.这门语言是设计用来做系统级的编程的. 第2题为什么要 ...

  8. 程序员面试题精选100题(10)-排序数组中和为给定值的两个数字[算法]

    题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.要求时间复杂度是O(n).如果有多对数字的和等于输入的数字,输出任意一对即可. 例如输入数组1.2 ...

  9. java面试题41 下面字段声明中哪一个在interface主体内是合法的? ()

    java面试题41 下面字段声明中哪一个在interface主体内是合法的? () A private final static int answer = 42; B public static in ...

最新文章

  1. find查找多个文件
  2. php常用的十个代码片段,转载
  3. 2018年最实用的6个机器学习项目
  4. spring mvc @ModelAttribute 基本类型 自定义对象解析流程
  5. python机器学习入门(Day1:Numpy)
  6. java rmi漏洞工具_学生会私房菜【20200924】Weblogic WLS核心组件反序列化命令执行突破(CVE20182628)漏洞复现...
  7. 安卓逆向_13 --- AndroidStudio + Smalidea 动态调试 smali 代码【APK可调试】、gradle 配置
  8. mapreduce程序开发的一些总结
  9. java string 练习_JAVA基础练习之String
  10. java-设计模式(行为型)-【命令模式】
  11. wshShell.SendKeys模拟键盘操作
  12. 阿里云上如何过等保,收费标准怎么样?
  13. 2022年京东618活动规则:618满减规则为299减50
  14. Python数据爬取之中国人口数据【附整理好的分省数据下载链接】
  15. 百度网盘网页端视频倍速方法
  16. 哪些行业适合开发小程序商城
  17. 修改mac终端的前缀
  18. c语言注释含义,C语言编程规范——注释
  19. 用java实现的文本编辑器可以媲美windows自带的编辑器吗?(功能全,超详细)
  20. 常见的网络协议与网络要素的介绍

热门文章

  1. java中string.trim()函数
  2. 求二叉树中叶子结点的个数
  3. HuMoments函数
  4. Linux查看CPU,内存,GPU,进程,版本,系统内核信息
  5. 分段线性插值Python实现(同时估计误差)
  6. matlab数组操作
  7. Java之二分法查找
  8. python之发送HTML内容的邮件
  9. zzUbuntu安装配置Qt环境
  10. SmartImageView框架的使用