給出 n 個金幣,每一個金幣重 10g,可是有一個金幣的重量是 11g。如今有一個可以精確稱重的天平,問最少稱幾回,可以確保找出那一個重量 11g 的金幣?面試
根據貪心的思想,每次儘量大地縮小下次稱量金幣的個數。故每次能夠將金幣儘量均勻地分紅三份:若 n % 3 = 0,則分紅 n/三、n/三、n/3,任意取兩份進行比較。若 n % 3 = 1,則分紅 n/三、n/三、 n/3 + 1,取個數爲 n/3 的兩份進行比較。若 n % 3 = 2,則分紅 n/3 + 一、n/3。算法
本題爲簡單的熱身題,主要考察貪心的思想,作到 bug free 便可。bash
www.jiuzhang.com/solution/we…網站
/**
* 本參考程序來自九章算法,由 @華助教 提供。版權全部,轉發請註明出處。
* - 九章算法致力於幫助更多中國人找到好的工做,教師團隊均來自硅谷和國內的一線大公司在職工程師。
* - 現有的面試培訓課程包括:九章算法班,系統設計班,算法強化班,Java入門與基礎算法班,Android 項目實戰班,
* - Big Data 項目實戰班,算法面試高頻題班, 動態規劃專題班
* - 更多詳情請見官方網站:http://www.jiuzhang.com/?source=code
*/
public class Solution {
/**
* @param n: The number of coins
* @return: The Minimum weighing times int worst case
*/
public int minimumtimes(int n) {
// Write your code here
int ans;
ans = 0;
if (n % 3 == 0 ) {
n = n - 1;
}
while (n > 0) {
n = n / 3;
ans++;
}
return ans;
}
}複製代碼