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