首页 > 其他 > 详细

剑指offer系列45---和为s的两个数字

时间:2016-06-23 14:27:42      阅读:199      评论:0      收藏:0      [点我收藏+]

【题目】输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,

 1 package com.exe9.offer;
 2 
 3 /**
 4  * 【题目】输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,
 5  *         //如果有多对数字的和等于S,输出两个数的乘积最小的。
 6  * @author WGS
 7  *
 8  */
 9 public class FindTwoNumberSum {
10     
11     public boolean findTwoNumEqualS(int[] arr,int s){
12         if(arr==null || arr.length<2) return false;
13         
14         //方法一:简单的办法 时间复杂度O(n^2)
15         /*for(int i=0;i<arr.length;i++){
16             int num=arr[i];
17             for(int j=0;j<arr.length;j++){
18                 if(i!=j){
19                     num+=arr[j];
20                     if(num==s){
21                         return true;
22                     }
23                     else{
24                         num-=arr[j];
25                     }
26                 }
27                     
28                 
29             }
30         }*/
31         
32         //方法二:双指针思想
33         int firstIndex=0;
34         int lastIndex=arr.length-1;
35         int sum=0;
36         
37         while(firstIndex<lastIndex){
38             sum=arr[firstIndex]+arr[lastIndex];
39             
40             if(sum==s){
41                 return true;
42             }else if(sum<s){
43                 firstIndex++;
44             }else{
45                 lastIndex--;
46             }
47         }
48         
49         return false;
50         
51     }
52 
53     public static void main(String[] args) {
54         FindTwoNumberSum f=new FindTwoNumberSum();
55          int[] array = new int[]{1,2};
56          System.out.println(f.findTwoNumEqualS(array, 3));
57 
58     }
59 
60 }

 

剑指offer系列45---和为s的两个数字

原文:http://www.cnblogs.com/noaman/p/5610411.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!