1. 给出一个排序好的数组和一个数,求数组中连续元素的和等于所给数的子数组
public static void main(String[] args) {
int[] num = { 1, 2, 2, 3, 4, 5, 6, 7, 8, 9 };
int sum = 7;
findSum(num, sum);
findSum1(num, sum);
}
public static void findSum(int[] num, int sum) {
int sum1 = 0;
for (int i = 0; i < num.length - 1; i++) {
sum1 = 0;
for (int j = i; j < num.length; j++) {
sum1 += num[j];
if (sum1 == sum) {
int temp = j < num.length ? j + 1 : j;
for (int c : Arrays.copyOfRange(num, i, temp)) {
System.out.print(c + " ");
}
System.out.println();
}
}
}
}
public static void findSum1(int[] num, int sum) {
int left = 0;
int right = 0;
for (int i = 0; i < num.length; i++) {
int curSum = 0;
left = i;
right = i;
while (curSum < sum) {
curSum += num[right++];
}
if (curSum == sum) {
for (int j = left; j < right; j++) {
System.out.print(num[j] + " ");
}
System.out.println();
}
}
}
2. 找出数组中出现次数最多的数字
public static void main(String[] args) {
int[] num = { 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 6, 4, 2, 6, 8, 2, 7, 7 };
System.out.println(moreThanHaft1(num));
}
public static int moreThanHaft1(int[] num) {
int temp = 1;
int index = -1;
for (int i = 0; i < num.length; i++) {
int count = 0;
for (int j = 0; j < num.length; j++) {
if (num[i] == num[j]) {
count++;
}
}
if (count > temp) {
temp = count;
index = i;
}
}
return index == -1 ? -1 : num[index];
}