forked from marsprince/SwordForOffer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFindNumbersWithSum.java
More file actions
62 lines (60 loc) · 1.2 KB
/
FindNumbersWithSum.java
File metadata and controls
62 lines (60 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package Problem41;
public class FindNumbersWithSum {
/*
* 问题1:输入一个递增排序的数组和一个数字s.在数组中查找两个数使他们的和为s,如果有多对数字的和等于s,输出一对即可
*/
public void findNumbersWithSum(int[] sortedArray, int number)
{
if(sortedArray==null)
return ;
int pointHead=0;
int pointEnd=sortedArray.length-1;
while(pointEnd>pointHead)
{
long curSum=sortedArray[pointEnd]+sortedArray[pointHead];
if(curSum==number)
{
System.out.println(sortedArray[pointHead]);
System.out.println(sortedArray[pointEnd]);
break;
}
else
{
if(curSum>number)
pointEnd--;
else
pointHead++;
}
}
}
/*
* 问题2:输入一个整数s,打印出所有和为s的连续正数序列(至少含有两个数)
*/
public void findContinuousSequence(int s)
{
if(s<4)
return ;
int small=1;
int big=2;
while(small<(s+1)/2)
{
int curSum=0;
for(int i=small;i<=big;i++)
curSum+=i;
if(curSum==s)
{
System.out.println("find one");
for(int i=small;i<=big;i++)
System.out.println(i);
small++;
}
else
{
if(curSum>s)
small++;
else
big++;
}
}
}
}