17.8 給定乙個整數陣列(有正數和負數),找出總和最大的連續序列,並返回總和。
解法:就是求連續子串行的和最大,不過存在乙個問題:
假設整個陣列都是負數,怎麼樣才是正確的行為呢?看看這個簡單的陣列,一下答案每個都可以說的通:
-3(假設子串行不能為空)
0(子串行的長度為空)
int_min(視為錯誤的情況)
我們會選擇第二種(maxsum=0),但並沒有所謂的「正確」答案。這一點可以跟面試官好好討論一番。
c++實現**:
#includeusingnamespace
std;
int getmaxsum(int a,int
n)
return
maxsum;
}int
main()
; cout
<10)<}
careercup 中等難度 17 7
17.7 給定乙個整數,列印該整數的英文描述 例如 one thousand,two hundred thirty four 解法 舉個例子,在轉換19 323 984時,我們可以考慮分段處理,沒三位轉換一次,並在適當的地方插入 thousand 千 和 million 百萬 也即,convert ...
careercup 中等難度 17 12
17.12 設計乙個演算法,找出陣列中兩數之和為指定值的所有整數對。時間複雜度o n 的解法 我們可以用乙個雜湊表或陣列或bitmap 後兩者要求陣列中的整數非負 來儲存sum x的值,這樣我們就只需要遍歷陣列兩次即可找到和為指定值的整數對。這種方法需要o n 的輔助空間。如果直接用陣列或是bitm...
careercup 高等難度 18 2
18.2 編寫乙個方法,洗一副牌。要求做到完美洗牌,換言之,這幅牌52!種排列組合出現的概率相同。假設給定乙個完美的隨機發生器。解法 假定有個陣列,含有n個元素,類似如下 1 2 3 4 5 利用簡單構造法,我們不妨先問自己,假定有個方法shuffle 對n 1個元素有效,我們可以用它來打亂n個元素...