馬賽克007歡迎你
htt://shexinwei.blogbus.com
http://www.shnenglu.com/shexinwei
感謝大家的支持
posted on 2010-09-25 22:49 馬賽克007 閱讀(5213) 評論(16) 編輯 收藏 引用
這道題弱智。你的做法不是O(n)的,你內(nèi)層while循環(huán)不是 O(1)由于N個數(shù)已知是 1 - N所以,排序后的結(jié)果一定是for (int i = 0; i < N; i++) data[i] = i+1;所以,和初始輸入無關(guān),而且不需要臨時存儲空間。 回復(fù) 更多評論
其實題目都說了是‘有N個大小不等的自然數(shù)(1--N)’,還要‘小到大排序’,那只有一種情況就是從1遞增到N,所以可以不管原來如何直接輸出1-N就行了 回復(fù) 更多評論
@bill gates 我的達(dá)到要求了。 關(guān)鍵問題是如果題目是:有n個數(shù),都是取自1--N(n<N)時候,該如何排序了? 回復(fù) 更多評論
@馬賽克007 你的代碼不是O(N),根據(jù)題意,明顯是一個技巧題 你有一個while循環(huán)做數(shù)據(jù)交換,其實就是一個for而已 答案1,2樓已經(jīng)說明。 回復(fù) 更多評論
這道題真的好弱智阿 華為筆試也出了這個題目 回復(fù) 更多評論
博主的方法也能正確排序,不過時間復(fù)雜度肯定不是O(N)。2層循環(huán)有點多余,就是不停的把第一個值放到它自己合適的位置上,N次可以完成。當(dāng)然1樓是最直接的方式,不過出題者會不會說這不是我的出題意圖,哈哈。 回復(fù) 更多評論
呃,一個簡單的置換。。 回復(fù) 更多評論
我在CSDN上也看過這道題的討論,結(jié)果就是for(int i = 0;i < N; ++i){ data[i] = i+1;}...感覺有點像腦筋急轉(zhuǎn)彎 回復(fù) 更多評論
汗一把,直接 for(int i = 0;i < N; ++i) a[i] = i+1; 結(jié)束了 回復(fù) 更多評論
@馬賽克007你說“我的達(dá)到要求了。關(guān)鍵問題是如果題目是:有n個數(shù),都是取自1--N(n<N)時候,該如何排序了? ”關(guān)鍵是如果題目是這樣,你的程序就錯了,還是失敗。 回復(fù) 更多評論
@Eric 那肯定了,我的程序是針對迅雷這個題目的。 我說如果,題目是:有n個數(shù),都是取自1--N(n<N)時候,該如何排序了?不是說我這個程序是針對這個題目的。 回復(fù) 更多評論
迅雷還是這么無聊 校招好玩么 回復(fù) 更多評論
@馬賽克007 題目是:有n個數(shù),都是取自1--N(n<N)時候,該如何排序了? 如果n個數(shù)不同的話,用位排序時間復(fù)雜度O(N),空間復(fù)雜度O(N)是最好的了! 你的解法明顯沒達(dá)到題目要求,你應(yīng)該謙虛一點,好好看看前面的人的說法!你要是在學(xué)大學(xué)生的話看看《編程珠璣》吧!一定會有一種醍醐灌頂?shù)母杏X! 回復(fù) 更多評論
@gifty 謝謝!肯定找個時間看看。 回復(fù) 更多評論
2題,無聊 回復(fù) 更多評論
@匿名博主的時間復(fù)雜度確實是O(N)的 回復(fù) 更多評論
Powered by: C++博客 Copyright © 馬賽克007