問題描述
5, 5,-7, 5, 9, -1, 5, 1, 9, 4, 6 這堆數中兩個數的和為10的組合有:5+5, 9+1, 4+6,如何快速的找出這樣的組合?
假定
陣列a存放元素,陣列大小為len_a
指定和為aim
思路一
先排序,low=0(最低位置),up=len_a(最高位置)
**:
#include #include思路二位操作(詳細解釋看using
namespace
std;
void printpairsums(int data, int size, int
sum);
int main(int argc, char*ar**)
;
int size = sizeof(data) / sizeof(data[0
]);
inti;
sort(data, data +size);
printpairsums(data, size,
8);
return
0;
} void printpairsums(int data, int size, int
sum)
else
if (s
else
} }
思路:
#include #include問題擴充套件已知兩個公升序陣列,從兩個陣列中各取乙個數值,求使得兩個數之和為給定值的所有組合。using
namespace
std;
void setbit(char *entry, int
nbits)
void setbit_0(char *entry, int
nbits)
int checkbit(char *entry, int
nbits)
intmain()
;
int aim = 10
;
int size = sizeof(data) / sizeof(data[0
]);
int i, min=data[0], max=data[0
];
int num_aim = 0
;
if(aim % 2 == 0
)
}for(i=1; i)
int dis_e = (max-min) / 8 + 1
;
char
entry[dis_e];
for (i=0; i)
int dis = 0 -min;
for(i=0; i)
if(aim % 2==0
)
for(i=0; i)}}
問題本質和一位陣列一樣,乙個從乙個陣列的開始前進,乙個從另外乙個陣列的最後後退。
分類:
演算法&&資料結構
找出兩個List 中不同的元素
public class collectionutil 找出兩個集合中不同的元素 param collmax param collmin return public static collection getdifferent collection collmax,collection collmi...
找和為k的兩個元素
今天在做coursera上的練習題時,遇到了乙個找和為k的兩個元素的問題,按照常規的方法,將資料存入陣列中,一次為每個數字遍歷陣列,找到是否存在和為k的元素,但是這樣的話時間複雜度為o n 2 恰好前兩天剛看過快速排序的思想,發現,使用快速排序,可以優化降低時間複雜度。找和為k的兩個元素 描述在乙個...
排序陣列,找出兩個和等於指定數
題目 輸入乙個已經按公升序排序過的陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是o n 如果有多對數字的和等於輸入的數字,輸出任意一對即可。例如輸入陣列1 2 4 7 11 15和數字15。由於4 11 15,因此輸出4和11。解 如果只是最簡單的遍歷,時間複...