亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從數組中找到一對元素,其和等于給定的數字

從數組中找到一對元素,其和等于給定的數字

從數組中找到一對元素,其和等于給定的數字給定n個整數的數組,給定一個數X,找到所有唯一的元素對(a,b),其求和等于X。下面是我的解決方案,它是O(nlog(N)+n),但我不確定它是否是最優的。int main(void){     int arr [10] = {1,2,3,4,5,6,7,8,9,0};     findpair(arr, 10, 7);}void findpair(int arr[], int len, int sum){     std::sort(arr, arr+len);     int i = 0;     int j = len -1;     while( i < j){         while((arr[i] + arr[j]) <= sum && i < j)         {             if((arr[i] + arr[j]) == sum)                 cout << "(" << arr[i] << "," << arr[j] << ")" << endl;             i++;         }         j--;         while((arr[i] + arr[j]) >= sum && i < j)         {             if((arr[i] + arr[j]) == sum)                 cout << "(" << arr[i] << "," << arr[j] << ")" << endl;             j--;         }     }}
查看完整描述

3 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

# Let arr be the given array.# And K be the give sumfor i=0 to arr.length - 1 do
  hash(arr[i]) = i  // key is the element and value is its index.end-forfor i=0 to arr.length - 1 do
  if hash(K - arr[i]) != i  // if K - ele exists and is different we found a pair    print "pair i , hash(K - arr[i]) has sum K"
  end-ifend-for


查看完整回答
反對 回復 2019-07-04
  • 3 回答
  • 0 關注
  • 908 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號