锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 綆楁硶鍒嗘瀽錛?/span> 鍏跺疄璇村埌搴曢潪甯哥畝鍗曪紝灝辨槸鍦ㄤ竴鍫嗘暟閲岄殢渚挎嬁涓涓暟錛屽啀鎵句竴涓笌瀹冧笉鐩哥瓑鐨勶紝鐒跺悗涓璧鋒墧鎺夛紝榪欐牱闂瑙勬ā涓嶆柇緙╁皬錛屾渶緇堢瓑鍒版壘涓嶅埌涓涓笉鐩哥瓑鐨勬暟鏃訛紝灝辨垚鍔?浜嗐備絾瑕佺畝鍖栫畻娉曪紝灝變笉鑳芥瘡鎷夸竴涓暟灝辯粺緇熸壘涓閬嶃傚彲浠ヨ冭檻鍑嗗涓涓槦鍒楋紝闃熷垪閲屾斁鐫鏆傛椂鎵斾笉鎺夌殑鏁般傚浠庡ご寮濮嬶紝灝哸[0]鏀懼叆闃熷垪錛屽啀鐪媋[1]錛屽 鏋渁[0] != a[1]錛屽垯鎵旀帀a[1]鍜宎[0]錛宎[0]浠庨槦鍒楀彇鍑猴紱濡傛灉a[0] == a[1]錛屽垯a[1]鍏ラ槦鍒楋紝鐒跺悗a[2]榪涜鐩稿悓鐨勬搷浣滐紝浠ユ綾繪帹銆?/p> 瑙f硶渚濈劧鍙互浼樺寲銆傛樉鑰屾槗瑙侊紝闃熷垪閲屾墍鏈夌殑鏁版繪槸鍏ㄩ儴鐩哥瓑鐨勶紝鏃㈢劧鐩哥瓑灝辨病鏈夊繀瑕佸瓨鍏ラ槦鍒楋紝鍙鐭ラ亾錛?.鍋囨兂鐨勯槦鍒楅噷鐨勬暟浠涔?2.闃熷垪鐨勯暱搴︺?/p> 榪欐牱灝卞緱鍒頒簡銆婄紪紼嬩箣緹庛嬩腑鐨勪唬鐮佷簡錛?/p> 搴旂敤錛?/strong> 浠g爜鐪嬩技綆鍗曪紝浣嗘垜鎰熷埌鎰忕姽鏈敖錛屾鍥炲懗鐫錛岀獊鐒舵兂鍒頒竴涓棶棰橈細濡傛灉鏉′歡錛堝瓨鍦ㄤ竴涓嚭鐜伴鐜囪秴榪囦竴鍗婄殑鏁幫級涓嶆弧瓚籌紝閭d細鍑虹幇浠涔堟儏鍐碉紵濡備綍閬垮厤鍛紵 寰堟樉鐒訛紝鎴戜滑鐨勮В娉曞氨鏄熀浜庤繖鏍蜂竴涓潯浠剁殑錛屼竴鏃︽潯浠朵笉婊¤凍錛屽緱鍒扮殑鏁板氨娌℃湁浠諱綍鎰忎箟銆備絾涓嶉毦鍙戠幇錛岄伩鍏嶉棶棰樼殑鍑虹幇涔熼潪甯哥畝鍗曪細楠岃瘉鎵懼埌鐨勬暟鏄惁鍑虹幇棰戠巼瓚呰繃涓鍗娿?/p> 榪欎篃鏄釜甯哥敤鐨勬柟娉曪細鍋囪媯楠屾硶銆?/p> 瀵逛簬涓涓暟緇勶紝鍋囪瀛樺湪涓涓暟錛屽畠鍑虹幇棰戠巼瓚呰繃涓鍗娿傜劧鍚庡湪O(n)鏃墮棿鍐呮壘鍒拌繖涓暟錛屽啀緇熻瀹冨嚭鐜扮殑棰戠巼銆傝繖鏍峰氨瀹岀編浜嗭紒 浜庢槸鍙互寰楀埌涓涓悓瑙g殑璺寵穬寮忛棶棰橈細媯鏌ヤ竴涓暟緇勪腑錛屾槸鍚﹀瓨鍦ㄤ竴涓暟錛屽畠鍑虹幇棰戠巼瓚呰繃涓鍗娿?/span>
鍘熼鍙?#8220;瀵繪壘鍙戝笘鐜?#8221;錛屽叾瀹炲氨鏄湪n涓暟閲岋紝瀛樺湪涓涓暟x錛屽嚭鐜伴鐜囪秴榪噉/2鐨勬暟錛岃浠ユ渶灝忕殑鏃墮棿澶嶆潅搴﹁綆楀嚭榪欎釜x銆?br />
鍔ㄦ満錛?/span>
榪欎釜棰樼洰鏄槰鏅氭棤鑱婃椂錛屽湪CSDN璁哄潧涓婄湅鍒扮殑錛岃搗鍒濇垜鏄繖鏍鋒兂鐨勶細鏃㈢劧鏈変釜鏁皒鍑虹幇棰戠巼瓚呰繃n/2錛岄偅濡傛灉鎺掑ソ搴忥紝閭d箞絎琜n/2]涓暟涓瀹氬氨鏄痻銆傝繖 鏍烽棶棰樺氨瑙勭害涓鴻繖鏍蜂竴涓棶棰橈細“璁$畻涓緇勬暟鐨勪腑浣嶆暟”銆傘婄畻娉曞璁恒嬫湁鎻愬嚭榪囪В鍐沖姙娉曪紝灝辨槸綾諱技蹇熸帓搴忛偅鏍鳳紝浣跨敤鍒嗘不綆楁硶錛屽湪O(n)澶嶆潅搴﹀唴瑙e喅闂?棰樸備絾綆楁硶鎬ц兘渚濊禆浜庢暟鎹殑鍒嗗竷錛屾渶鍧忔儏鍐典細杈懼埌O(n2)銆?br /> 鍚庢潵鍦ㄧ綉涓婃悳浜嗕竴涓嬶紝鍙戠幇榪欏眳鐒舵槸銆婄紪紼嬩箣緹庛嬩笂鐨勩傝寰楀綋鍒濅笂澶у鐨勬椂鍊欙紝鎴戣繕鐪嬭繃錛屽彲鎬庝箞涔熸兂涓嶈搗鏉ヤ簡銆傜湅鍒頒功涓婃彁鍒扮殑綆楁硶錛屼笉紱侀化鐒剁О濂囷紒浜庢槸浜х敓浜嗕釜鎯蟲硶錛屾垜鍐沖畾閲嶆柊鐪嬩竴閬嶏紝騫朵笖鍐欎竴涓郴鍒楃殑鍗氬錛屽啓涓嬭嚜宸辯殑蹇冨緱銆?br />
寮曠悊錛?/span>
n涓暟涓紝鏁皒鍑虹幇棰戠巼瓚呰繃n/2錛岄偅涔堜粠涓幓鎺変竴瀵逛笉鐩哥瓑鐨勪袱涓暟錛寈鍦ㄥ墿涓嬬殑(n-2)涓暟涓殑鍑虹幇棰戠巼渚濈劧瓚呰繃n/2銆?br />
璇佹槑錛?/span>
鍋囪x鍑虹幇浜唌嬈★紝鍒檓 > n/2錛屽師棰戠巼P0 = m/n > 1/2錛屼粠n涓暟涓幓鎺変竴瀵逛笉鐩稿悓鐨勪袱涓暟<a, b>錛屾湁涓ょ鎯呭喌錛?br />
2 int candidate;
3 int count = 0;
4
5 for(size_t i = 0; i < size; i++) {
6 if (count == 0) {
7 candidate = arr[i];
8 count = 1;
9 }
10 else {
11 if (candidate == arr[i]) {
12 count++;
13 }
14 else {
15 count--;
16 }
17 }
18 }
19 return candidate;
20 }
]]>