作者: seiching (light) 看板: Soft_Job
標題: Re: [心得] 學界轉業界...google面試洗臉心得
時間: Wed Apr 19 23:09:17 2017
int flag;
for(i=1;i<n;i++){
flag=0;
if (i % 3 ==0) flag=1;
if (i % 5 ==0) flag+=2;
switch (flag){
case 0:
System.out.println(i);
break
case 1:
System.out.println("Fizz");
break;
case 2:
System.out.println("Buzz");
break;
case 3:
System.out.println("FizzBuzz");
break;
}
}
這樣會不會快一點點,使用int當flag,效能會略好,每個bit代表一種可能,
32 bit,可以有32種可能,後續擴充性較好,每個人習慣不同,謝謝大家指教了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.182.5
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1492614560.A.012.html
1F:推 BNMAA: 會喔,少印一次n 04/19 23:17
2F:→ ACMANIAC: 會喔,很快就發現編不過 04/19 23:26
※ 編輯: seiching (60.251.182.5), 04/19/2017 23:28:11
※ 編輯: seiching (60.251.182.5), 04/19/2017 23:33:56
3F:→ cyshowen: 把int宣告在for迴圈裡面... 應該是快不了的 04/19 23:37
4F:推 steve1012: 第一版一堆if沒特別好的感覺.. 第二版的flag可以在loop 04/19 23:40
5F:→ steve1012: 外 04/19 23:40
※ 編輯: seiching (59.124.228.83), 04/19/2017 23:42:04
※ 編輯: seiching (59.124.228.83), 04/19/2017 23:42:19
6F:推 cutekid: 這樣的寫法 switch case 是 2^N 04/20 00:15
7F:→ cutekid: 再多一個 7 加進來的話,就要 case 0 ~ case 7 了 04/20 00:16
8F:推 stosto: 你要不要刪掉 既沒效能又難維護 04/20 02:35
9F:→ seiching: 實際測了6次,n=65535,平均快了約1%,integer加法比string 04/20 10:54
10F:→ seiching: 快一點點,switch影響不大 04/20 10:57
11F:→ robber1234: 現在電腦很快,跑65535才幾次,又用C的話根本看不出差別 04/20 14:30
12F:→ WashFreeID: 多了switch判斷 多用了變數 就算效能差不多 這樣寫的 04/20 19:07
13F:→ WashFreeID: 風格也不好吧 04/20 19:07
14F:→ lgates: 我記得早上看我有看到一個噓... 04/20 20:40
15F:→ lgates: 抱歉 我看到刪文的了... 04/20 20:41
16F:推 stosto: Branch超多,預測失敗就會更多,你說效能差不多是因為你沒 04/20 22:07
17F:→ stosto: 有用到字串串連,同樣直接輸出字串這個效率比較差 04/20 22:07
18F:→ stosto: 第二個是維護性,這應該不需要討論了,這個擴充性非常差 04/20 22:08
19F:→ stosto: 寧願效能差好維護,不然就是效能贏過很多,第二點達不到就 04/20 22:09
20F:→ stosto: 選第一點 04/20 22:09
※ 編輯: seiching (60.251.130.137), 04/21/2017 10:30:52