逆向思維解面試題(打水和取火柴問題)

2021-09-11 03:09:20 字數 890 閱讀 4203

逆向思維如何使用呢?大致的操作是從結論出發,將結論當成已知資訊,再將題目對其的需求表達出來,一步步的倒推回去,最終得到乙個可以簡單得到的條件(笛卡爾的萬能解題法:可以想成是假設乙個x,進行關於x的方程求解)。

打水問題:通過乙個9公升水的桶和乙個4公升水的桶在河裡取6公升水

反思思路:

1. 假設在9公升水的桶裡已經有了6公升水(將結論當成已知資訊),接下來需要解決的是如何可以從9公升水桶裡倒出3公升水,進一步倒推,只需要4公升水桶裡有1公升水即可。

2. 而1公升水是否可以通過簡單操作得到呢?思考一下就能知道,9公升水的桶倒入兩次4公升水,然後4公升水桶再將9公升水桶倒滿那麼就剩下3公升水,接著9公升水桶裡倒入3公升和4公升,然後4公升水桶再將它倒滿就剩下2公升水,然後重複一次操作,4公升水桶裡就剩下1公升水。

3. 如果按常規思考的話,6=2+4,4已知,只要倒騰出2公升水就可以了,而上面思路過程中也得到了。

取火柴問題:100根火柴,我和小明輪流取,每個人每次只能取1~7根,誰拿到最後乙個火柴誰贏,問有必勝策略嗎?有的話先手還是後手必勝?

反思思路:

1. 假設我要贏,即拿到最後乙個火柴,那麼最後一輪必定是小明拿,我再拿,我勝利這樣的情節。

2. 我們可以思考最後一輪時火柴應該還剩多少根才能保證我拿到,容易知道火柴數一定大於7,而當火柴數大於8的時候,並不一定是最後一輪(存在小明拿了之後,火柴數大於7的可能),所以火柴數大於7且小於等於8,才能保證這是最後一輪和我拿到最後一根的要求。(易知:每輪8根,是我可以控制的)

3. 接著我們從最後一輪往前推,必須要每一輪都總共取8根才行(不然會打破最後一輪一定是8根的需求)

4. 100%8=4,所以我必須為先手,拿4根,之後都控制每輪拿了8根即可。

面試題 整數逆向

例如 輸入12345 輸出54321 輸入3450 輸出543 輸入3450 輸出543 類似於字串的反轉一樣,可以借助棧來實現。但是這樣會建立額外的空間,造成不必要的浪費。所以採用數學方法,來解決這道題。首先考慮的是,給定乙個整數x,將x 10,得到的餘數正好是該整數的最後一位。再將整數x 10,...

邏輯思維面試題

現有甲 乙 丙三人同時說了以下三句話 甲說 乙正在說謊 乙說 丙正在說謊 丙說 他倆正在說謊 根據三人的對話情況,請你分析 判斷,說謊的人是 甲和丙 若甲說的是真話,則乙說謊,丙說真話,但丙說甲在說假話,所以矛盾 因此,甲說謊 甲說假話,則乙說的是真話,丙是說謊的,此時符合 所以,三人中,甲說假話,...

面試題 異或經典思維題目

題目 已知陣列中數字兩兩相同,有兩個不同,找出這兩個不相同的數字 解答過程 如果陣列中只有乙個數字的話,那麼我們就可以直接異或就ok了,但是現在有兩個的話就會有點麻煩了,所以就有乙個非常精彩的思想。首先我們將所有的數字進行異或,結果肯定不會為0所以我們將其進行位運算的話一定會有第index位是1,所...