一组数中是否存在若干数之和等于已知数
生活随笔
收集整理的這篇文章主要介紹了
一组数中是否存在若干数之和等于已知数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.是否存在兩個數的和與已知數(key)相等。
A:窮舉:在數組中任選兩個數,判斷是否等于已知數,復雜度O(N^2).
B:二分:先排序(若是有序,則不需要),然后二分查找M-array[i]是否存在于這個數組,復雜度O(N*log(N)).
C:先排序(若是有序,則不需要),然后用兩個指針(頭指針head與尾指針tail),當*head+*tail>key,則tail--,若是小于,則是head++,若是相等,則是存在。
對于C:
int getResult(int *num, int n_len, int key, int &num_1, int &num_2) {
int *i, *j;
int temp;
i = num, j = num + n_len - 1;
while (i < j) {
temp = *i + *j;
if (temp > key) {
j--;
} else if (temp < key) {
i++;
} else {
num_1 = *i;
num_2 = *j;
return true;
}
}
return false;
}
public static void getResult(int[] num_Array, int len, int key) {
int i, j, temp;
i = 0;
j = len - 1;
while (i < j) {
temp = num_Array[i] + num_Array[j];
if (temp > key) {
j--;
} else if (temp < key) {
i++;
} else {
System.out.println(num_Array[i] + " " + num_Array[j]);
return;
}
}
}
練習:SOJ SUM http://cs.scu.edu.cn/soj/problem.action?id=1627
總結
以上是生活随笔為你收集整理的一组数中是否存在若干数之和等于已知数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cmd下重启iis命令
- 下一篇: Angular学习系列五:装饰器View