一个有序数组数组,给出和为s的两个数字和连续正数数列
2015-07-07 21:27
423 查看
package java_study.JianZhiOffer; import org.junit.Test; /** * Created by ethan on 2015/7/7. * 剑指offer的No41 一个有序数组数组,给出和为s的两个数字和连续正数数列 */ public class No41和为s的两个数字和连续正数数列 { public void getPairsWithSumS(int[] arr, int s){ if (arr == null) return; int start = 0; int end = arr.length-1; while (start<end){ if (arr[start]+arr[end]==s){ System.out.println(arr[start]+ " " + arr[end]); start++; } else if(arr[start]+arr[end]>s) end--; else start++; } } public void getSeqenceWithSumS(int[] arr, int s){ if (arr == null) return; if (arr.length == 1) return; int start = 0; int end = 1; int sum = arr[start] + arr[end]; while (end<arr.length){ if (sum==s){ getPrintln(arr, start, end); sum -= arr[start]; start++; }else if (sum<s){ end++; if (end>=arr.length) return; sum += arr[end]; }else { sum -= arr[start]; start++; } } } public void getPrintln(int[] arr, int start, int end){ for (int i=start; i<=end; i++){ System.out.print(arr[i] + " "); } System.out.println(); } @Test public void test(){ int[] arr = {1,2,4,7,11,15}; getPairsWithSumS(arr, 15); int[] arr1 = {1,2,3,4,5}; getSeqenceWithSumS(arr1, 9); } }
相关文章推荐
- 《程序员面试宝典》指针问题
- Log输出打印输出LOG所在的函数名以及行号
- 用链表做一个学生管理系统
- 为什么很多看起来不是很复杂的网站,比如 Facebook 需要大量顶尖高手来开发?
- Authorize和AllowAnonymous
- AGG svg_viewer实现了渐变色渲染
- OJ嘻唰唰之填空题(1)删除线性表节点
- ISCSI完全指南
- opencv cvFilter2D
- 贝叶斯网络http://www.kuqin.com/shuoit/20141111/343155.html
- DXGI_FORMAT enumeration
- Teamcenter PSM(二)
- Jump Game II 到达终点的最小步数 模拟
- 网络打印机和共享打印机
- leetcode 009 —— Palindrome Number
- MySQL两种存储引擎MyISAM和InnoDB的比较
- SQL Server Data Tools(SSDT) 安装
- PHP之Laravel框架使用问题汇总与解决方式
- 解决使用Boost的ptree输出json中文乱码的问题
- 链表中倒数第k个结点