作者thinkniht (不下棋=.=)
看板Soft_Job
標題Re: [閒聊] 關於面試時問的問題
時間Mon Aug 1 22:42:10 2011
※ 引述《pandaforme (建 建)》之銘言:
: PO這篇文章的本意是想討論 公司出了靈活的面試題目來測試面試者
: 但是面試方法竟然如此的封閉 身為被面試者應該如何應對
: 假設某一家公司拿指考的數學題目來考面試者
: 面試者分別有
: 1. 普通的一般人 (大學以上的學歷)
: 2. 準備要參加指考的應屆考生
: 3. 對數學非常有天分的神人
: 考試時間為一小時 考完後 單純依據分數來判定有沒有入取
: 一般人在有限時間且缺乏練習的情況下 考得贏第2和第3類的人嗎?
: 之前遇到幾個公司面試就是這樣的做法...
: 考完就考券收一收 也沒有問你怎麼解 請等待回應
: 就算有問 面試官心中都有一定的成見
: 真的是自己能力不足 被問到釘在白板上也認了...
: 可是能這樣的機會也沒有
: 公司的面試方式似乎卻在走回頭路 只看你的筆試成績
: 卻一點都不在意你對問題的解決方式和想法
: 既然有版友想看題目 那我就PO出來吧
: http://tinyurl.com/3srmqfc 並且請考慮當N很大的時候
: 請在半小時內想出解法並且使用你拿手的程式語言實作它
: 我是第一次看到這個題目
: 當下判斷我不可能在半小時內想出最佳解且要考慮當N很大的時候
: 所以就採用硬幹法一一去算每個元素出現的次數
: 想好並且寫完CODE半小時也差不多過了
: 面試官就收回考券 說:等我們的技術長看過後再決定是否有第二次面試
: 想當然結果就是謝謝 再連絡...
: 嗯
: 這樣的陣亡方式 感覺有點死的不明不白
: 似乎這樣的面試方式 在浪費彼此的時間...
: 換個角度想 只能有緣再見面了~
這題要找最佳解還挺難的
我的話不會全部的數都計算次數
以下提供部分的寫法
ArrayList<int> candArray= new ArrayList<int>();
boolean flag;
for(int i =0;i<a.length();i+=2){
if(a[i]==a[i++]){
flag=true;
for(int temp : candArray){
if((a[i]==temp){
flag=false;
break;
}
}
if(flag){
candArray.add(a[i]);
}
}
}
if(candArray.size()==0){
return -1;
}
else if(candArray.size()==1){
return candArray.get(0);
}
//未完
我的能力只有到此為止
candArray.size()>1的後續處理還沒想到最佳解
但是只計算candArray裡的值,怎麼都比計算全部要好吧XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.244.184
→ thinkniht:我想到更好的寫法了...不過...現在電腦沒IDE 08/01 22:49
→ thinkniht:很懶得寫(還要排版Orz) 08/01 22:49
推 lovdkkkk:作弊解 Moore’s Voting Algorithm 08/01 22:51
※ 編輯: thinkniht 來自: 114.42.244.184 (08/01 23:38)
→ leicheong:樓上的方法不錯, 沒想到啦... :P 08/01 23:37
→ leicheong:先找出最多的, 再回頭看是不是過半了. 不是就回傳-1 08/01 23:39
※ 編輯: thinkniht 來自: 114.42.244.184 (08/01 23:40)
→ leicheong:當count掉到負數reset時是算1不是0吧? 08/01 23:41
→ thinkniht:我發現我一開始寫的就錯...Orz 08/01 23:49
※ 編輯: thinkniht 來自: 114.42.244.184 (08/01 23:59)
※ 編輯: thinkniht 來自: 114.42.244.184 (08/02 00:03)
改了好幾次 發現都錯(遮臉)
※ 編輯: thinkniht 來自: 114.42.244.184 (08/02 00:05)
→ iceonly:懶人如我只會用MAP 囧 08/02 00:55
→ thinkniht:我對Map不太熟(遮臉) 08/02 00:57