1 N個數隨機去掉兩個數,遍歷一次把這兩個數找出來

2021-06-16 07:16:35 字數 700 閱讀 7909

學習演算法,把一些簡單的問題寫一寫,做一做

【題目】:1- n這n個數隨機減少兩個數後,放在a中(打亂順序),以時間複雜度為o(n)的演算法找到減少的這2個數

【思路】:如果是減少1個數,那麼大家都知道方法——迴圈一次,求a的和sum以及(1+2+...+n)=sum,然後用sum-sum就能得到結果。可是,現在出現2個數,那麼導致只求和是不行的,那麼請問能怎麼辦?那就通過別的運算記錄更多的資訊!四則運算有加減乘除嗎?別老是記著+,把別的兄弟都給忘了!

#include "stdafx.h"

#include#includeusing namespace std;

// 1 --- n個數隨機減少兩個,放在a中,

// 以時間複雜度為o(n)的演算法找到他們

// 這存在乙個問題,當n到大一定程度的時候,sum和mul要越界

void findtwolostnum(int a,int n,int &num1,int &num2);

int _tmain(int argc, _tchar* argv)

findtwolostnum(a,n,num1,num2);

cout<<"the two lost numbers are:\n"<

【注釋】: 更好一點的方法是求第二個關鍵值sum2的時候,換成注釋部分,然後再根據方程組:x+y=sum, x*x+y*y=sum2,可以相應求出x*y,後面的求解步驟類似。

php 迴圈兩個陣列的值 如何一次迴圈兩個陣列?

桃花長相依 問題那麼問題當然是你的巢狀foreach迴圈。因為對於 data1陣列的每個元素,你遍歷整個 data2陣列 所以總共有 data1 data2迭代 解決方案要解決這個問題,您必須立即遍歷兩個陣列。array map 方法 php 5.3 您可以使用array map 並將所有陣列傳遞給...

找出只出現一次的兩個數字

乙個整形陣列裡,除了兩個數字之外,其他的數字都出現了兩次,找出這兩個只出現一次的數字,例如陣列,找出7和9。之前做過乙個陣列中只有乙個只出現一次的數字,用亦或的方法,同理,找兩個數字,先把所有數字亦或,最後的結果是兩個只出現一次的數亦或的結果,這個結果中,出現1的位置說明兩個元素當前位不相等,可以根...

陣列中只出現一次的兩個數

劍指 offer 56 i.陣列中數字出現的次數 大意 找出陣列中只出現一次的兩個數 其它出現兩次 思路 思路 首先需要知道乙個前置問題 找出陣列中只出現一次的乙個數 其它出現兩次 顯然,對整個陣列進行異或操作即可。那麼,我們是否有可能將本題中的陣列分隔成兩部分呢 不要求連續 答案是肯定的 我們仍然...