LintCode題解|Hulu 面試題:Weighing Problem


九章算法 | Hulu 面試題:Weighing Problem


題目描述

給出 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;
    }
}複製代碼
相關文章
相關標籤/搜索