码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-06-23 14:28:23      阅读:197      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!