在陣列中找到和為定值的兩個數,返回陣列下標。
這個題目就是乙個排序的問題,但是不能改變陣列,用快排的方式儲存陣列的索引值即可,上**。
#include
#include
#include
#include
using
namespace
std;
void quicksort_index(int *arr, int *index, int low, int high)
index[i] = tmp;
quicksort_index(arr, index, low, i-1);
quicksort_index(arr, index, i+1, high);
}void get_two_sum_index(int *arr, int *index_arr, int len, int two_sum, std::vector
&ivec)
else
if (two_sum > arr[i] + arr[j]) else
}}int main(int argc, char *argv)
;int arr = ;
int len = sizeof(arr) / sizeof(int);
std::cout
<< "array data"
<< std::endl;
int *index_arr = new
int[len];
int i = 0;
for (i = 0; i < len; i++)
std::cout
<< std::endl;
quicksort_index(arr, index_arr, 0, len-1);
for (i = 0; i < len; i++)
std::cout
<< std::endl;
for (i = 0; i < len; i++)
std::cout
<< std::endl;
int two_sum = 111;
std::cout
<< "to get two sum: "
<< two_sum << std::endl;
std::vector
ivec;
get_two_sum_index(arr, index_arr, len-1, two_sum, ivec);
std::vector
::iterator iter;
int min_val;
int max_val;
for (iter = ivec.begin(); iter != ivec.end(); iter++)
return
0;}
陣列 尋找和為定值的兩個數
題目描述 給定乙個陣列和乙個整數,要求在陣列中找到兩個數,使得它們的和為這個整數.方法 排序夾逼 首先使用快速排序演算法把陣列按公升序排列,然後使用夾逼的方法找到答案.即使用兩個指標分別指向陣列的頭和尾 begin,end 1.若arr begin arr end sum 就輸出 2.若arr be...
尋找和為定值的兩個數
尋找和為定值的兩個數 給定乙個陣列 無序或者有序,兩種情況都要考慮 找出和為m的兩個數。最多時間複雜度能有多少?陣列有序的情況,在時間複雜度上我們就省去了排序的o nlogn 我們使用兩端指標掃瞄法是比較簡單的,時間複雜度為o n 空間複雜度為o 1 如下圖所示 然後,判斷它們指向的值之和sum是否...
尋找和為定值的兩個數
描述 輸入乙個陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是o n 如果有多對數字的和等於輸入的數字,輸出任意一對即可。例如輸入陣列1 2 4 7 11 15和數字15。由於4 11 15,因此輸出4和11。分析 如果採取窮舉,複雜度為o n 2 可以換乙個思...