《剑指》41
来源:互联网 发布:网络文化建设重点内容 编辑:程序博客网 时间:2024/04/28 15:32
题目:输入一个递增排序的数组array[n]和一个数字s,在数组中查找两个数,使得他们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。
定义两个指针head,tail,,分别指向数组第一个array[0]和数组最后一个array[n-1],然后判断两者的和与s的关系:
- 若两者的和大于s,则指向数组最后一个的指针向前移动,即head++
- 若两者的和等于s,则直接输出这两个数
- 若两者的和小于s,则指向数组第一个的指针向后移动 ,即tail++
public class Offer41 { public static void main(String[] args){ int[] arrsy = {}; Random random = new Random(); for(int i = 0;i<100;i++){ boolean flag = Offer41.findNumberWithSum(arrsy, random.nextInt(30)); } } public static boolean findNumberWithSum(int[] nums,int sum){ boolean res = false; if(nums == null ||nums.length<1){ return res; } System.out.print(sum+"\t"); int head = 0; int tail = nums.length-1; while(head<tail){ int currSum = nums[head]+nums[tail]; if(currSum==sum){ printNums(nums[head], nums[tail]); res = true; return res; }else if(currSum>sum){ tail--; }else if(currSum<sum){ head++; } } return res; } /** * 打印函数 * @param nums */ public static void printNums(int num1,int num2){ System.out.println(num1+"\t"+num2+"\n"); }}
0 0
- 《剑指》41
- 【41-45】剑指offer
- 剑指Offer-41
- 剑指offer(41-50)
- 【剑指offer】41-50题
- 剑指offer 试题41~50
- LintCode-剑指Offer-(41)最大子数组
- 【刷题笔记/剑指Offer】41-50
- 剑指offer 41 和为S的连续正数序列
- 剑指offer(41)-翻转单词顺序列
- 《剑指offer》:[41]数组中和为S的两个数
- 剑指offer面试题 java解答41-45
- 【剑指offer】面试题41:数据流的中位数
- 剑指offer 41 数组中只出现一次的数字
- 41
- 41
- 41
- 41
- Maven仓库镜像下载jar包好慢
- 51 Nod 1086 背包问题 V2
- 把中缀表达式转换为表达式树
- 集合
- 22 素数求和问题
- 《剑指》41
- 初涉Linux命令
- BurpSuite实现AES加密插件问题记录
- ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
- Android EventBus事件总线剖析
- sql serve合理配置内存
- 模拟注册与登录
- 使用C++下载网页文件
- Linux 下 C++ Socket编程 客户端