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

    public void FindNumbersWithSum(int nums[], int sum){if(nums == null) return;int indexL = 0;int indexR = nums.length - 1;while(indexL < indexR){if(nums[indexL] + nums[indexR] < sum) indexL++; else if(nums[indexL] + nums[indexR] > sum) indexR--;else {System.out.println("nums["+indexL+"] + nums["+indexR+"] = "  + nums[indexL] + " + " + nums[indexR] + " = " + sum );indexL++;indexR--;}}}public void FindContinuousSequence(int sum){if(sum < 3) return;int mid = (1 + sum) / 2;int small = 1;int big = 2;int curSum = small;while(small < mid){ // 至少有两个数,而且是递增排序的,所以small最多为sum的一半if(curSum < sum){curSum += big;big++;}else if(curSum > sum){curSum -= small;small++;}else if(curSum == sum){for(int i=small; i<big; i++){System.out.print(i + " ");}System.out.println();curSum += big;big++;}}}}

测试代码:

public class _Q41Test extends TestCase {_Q41<?> numWithSum = new _Q41();public void test(){int nums1[] = {1, 2, 4, 7, 11, 15};int sum1 = 15;numWithSum.FindNumbersWithSum(nums1, sum1);int nums2[] = {1, 2, 3, 4, 5, 6, 7, 8};int sum2 = 15;numWithSum.FindContinuousSequence(nums2, sum2);numWithSum.FindContinuousSequence(sum2);}}

【剑指offer-Java版】41和为s的两个数字VS和为s的连续正数序列相关推荐

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

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

  2. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

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

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

  4. 剑指offer java版 test42—找出和为S的两个数,左右夹逼法(双指针法)

    前言:受上一题的启发,这题自己也编出来了.在碰到这种有序数列的时候,经常会用到双指针法,一个指左边,一个指右边,然后依照规则移动,增加或缩小范围.很实用. 题目: 输入一个递增排序的数组和一个数字S, ...

  5. 剑指offer java版(三)

    二叉搜索树的后序遍历 问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 对于后序遍历来说, ...

  6. 剑指offer java版(一)

    二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...

  7. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中

    面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...

  8. [剑指offer][JAVA]面试题第[09]题[用两个栈实现队列][LinkedList]

    [问题描述][简单] 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元 ...

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

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

最新文章

  1. 修改MySql默认存储引擎为InnoDB,启动报错
  2. 13、Java Swing事件监听:事件处理模型和事件监听器
  3. 思科路由器怎么安装?
  4. intellij idea 部署项目的时候 图中application context 写不写有什么关系?有什么作用?...
  5. 独家:Havok 发布新的 AI 中间件
  6. ci框架 mysql 超时时间_mysql 字符集和校验规则( CHARSET amp; COLLATE)
  7. uva 1252——Twenty Questions
  8. 声笔双拼单字效率分析
  9. Visual Paradigm中文乱码
  10. jquery的开发版、mini版是的意思和使用场合
  11. c52单片机c语言编程,c52单片机c语言编程怎样实现阴历查询
  12. 信息系统安全等级保护备案任务详单
  13. 水箱建模最小二乘法_北师大版小学数学下册五年级第四单元长方体(二)整理复习电子课本练习同步教学视频...
  14. python and or 详解
  15. Q96:过程纹理(Procedural Texture)(0)——概述
  16. 12. MySQL 函数
  17. 定制C/C++缩进风格
  18. 虚拟机xp系统联网问题
  19. 我的MIT代数拓扑笔记
  20. C++模板的概念 定义和使用

热门文章

  1. kodi教程_KODI清理缓存插件安装设置教程
  2. python开源报表系统_流程设计器、表单设计器和简单报表管理开源OA系统smart-web...
  3. C++对象模型4——多重继承的对象内存模型、vptr与vtbl的创建与重置的时机、不要在含有虚函数的类的构造函数中调用memset
  4. python导入xlsxwriter要安装什么吗_Python 模块:XlsxWriter 的使用
  5. 我来悟微服务(3)-需求管理
  6. Django restfulframework 开发相关知识 整理
  7. 业界 | Facebook F8开发者大会首日:扎克伯格走心演讲,VR硬件发售
  8. Spring源码系列:BeanDefinition源码解析
  9. SQL查询分析器使用
  10. vs2013 类名颜色显示黑色,无法修改