public class SumOfSerialNumber57_ {
public static void main(String[] args) {
find(15);
}
private static void find(int sum) {
if (sum <= 2)
return;
int mid = (sum + 1) / 2;
int small = 1, big = 2;
int cursum = small + big;
while (small < mid) {
if (cursum == sum)
print(small, big);
while (small < mid && cursum > sum) {
cursum -= small;
small++;
if (cursum == sum)
print(small, big);
}
big++;
cursum += big;
}
}
static public void print(int start, int end) {
for (int i = start; i <= end; i++) {
System.out.print(i + " ");
}
System.out.println();
}
}
解释:也是双指针思想