字節(jié)最愛問的智力題,你會幾道?
智力題在目前的大廠面試中也是非常常見的,這種題的特點是看過一遍就基本能答上來,沒看過可能就比較費勁,所以性價比比較高。之前總結(jié)過一些,大家有興趣可以看看。
推薦閱讀:
1.一副牌除去大小王還有52張,其中10張牌是正面朝上的,要求一個盲人將牌分成兩堆,并且每堆牌正面朝上的數(shù)量相同,可以任意翻動每張牌,應(yīng)該怎么分
這個問題不算復(fù)雜,看過一遍就能記住答案。分成兩堆,一堆10張,一堆42張,并且將第一堆的10張牌全部反轉(zhuǎn),這時兩堆牌中正面朝上的數(shù)量是相同的。
2.兩人玩游戲,在腦門上貼數(shù)字(正整數(shù)>=1),只看見對方的,看不見自己的,而且兩人的數(shù)字相差1,以下是兩人的對話:A:我不知道,B:我也不知道,A:我知道了,B:我也知道了,問A頭上的字是多少,B頭上的字是多少?
這個問題關(guān)鍵是數(shù)字是大于等于1的數(shù)字,只有對方腦門上貼的是1,才能一次猜出自己的數(shù)字,所以1這個數(shù)字很關(guān)鍵,不是在對方腦門上,就是自己腦門上的兩個可能數(shù)字之一,這個條件是必須要用上的。
第一輪:A說不知道,B也說不知道,說明兩個人腦門上都沒有數(shù)字1。每個人腦門上的數(shù)字都有兩種可能。
第二輪:A說知道了,B也說知道了,說明B說不知道給A排除了一個可能,只有數(shù)字1才有可能被排除,A才有可能猜出自己腦門上的數(shù)字,所以A腦門的數(shù)字是3。B聽到A說知道了,說明自己說不知道給A排除了一個答案,排除的答案只能是1,A才能猜出,既然排除的是1,A只能是3,那么B腦門的數(shù)字則只能是2。
3.在一個飛機場有N架飛機,每架飛機只有一個油箱,每箱油可以使飛機繞地球飛半圈。如果使一架飛機繞地球一圈,至少需要出動多少飛機?(要求所有飛機均能安全返回到機場,只能通過飛機給飛機這樣加油方式,不能降落到機場加油)
這個問題的思路是先將路程分為前半程和后半程,這樣需要出動飛機會少些
具體細節(jié)可以看這個圖

前半程:假設(shè)整個路程為1,A、B、C三架飛機同時起飛,在1/8處,三架飛機的油量都剩了3/4,其中飛機C給另外飛機A、B加滿油,自己還剩1/4,剛好夠返航到機場。到2/8處,A、B兩架飛機的油量都剩了3/4,其飛機B給飛機A加滿油后,自己還剩2/4,剛好能夠返航。此時飛機A飛到6/8處時,油量為0。
后半程:D、E、F三架飛機同時反方向起飛,在7/8處,三架飛機的油量還剩了3/4,飛機F給飛機D、E加滿后返航,D、E兩架飛機在6/8處碰到飛機A,此時飛機A油量為0,D、E兩架飛機的油量為3/4,分別給飛機A加1/4的油量。這時A、D、E飛機油量都是2/4,剛好夠返航。
總結(jié)一下,幾個加油的節(jié)點,分別在1/8,2/8,7/8,6/8處。
4.晚上有四個人需要過橋,但是只有一個手電筒,并且橋一次最多兩個人,每個人通過橋所需的時間也不同,A、B、C、D過橋所需的時間分別為1、2、5、10分鐘。請問如何過橋所需時間最短?
這個問題最開始想到的可能是讓速度最快的人分別送其他三個人過去,因為他回來所需的時間最短。其實不是這樣的,最佳的解決方案是將兩個耗時最多的人一起過橋,而不是分開過橋,并且不需要返回。
第一次過橋:A和B一起過,需要2分鐘,A再回來,所需1分鐘,一共所需3分鐘
第二次過橋:C和D一起過橋,需要10分鐘,B再回來,所需2分鐘,一共需12分鐘
第三次過橋:A和B一起過橋,所需2分鐘
一共所需17分鐘。
5.一個人8塊錢買了一只雞,9塊錢賣了,10塊錢又買回來了,11塊錢又賣了,請問他掙了多少錢?
2塊錢
6.一共有N顆石子,每次最多取M顆最少取1顆,A,B輪流?。ˋ先),誰最后拿完石子誰就獲勝,請問最后誰會獲勝?
這種沒有具體的數(shù)字就要分類討論下了
假設(shè)M>=N,那么A一次就把石子拿完了,A勝
假設(shè)M 具體分析:如果N可以被(M+1)整除時,無論A怎么拿,B都會保持拿完后石子的數(shù)量為(M+1)的倍數(shù),到最后只能M+1個,A無論怎么拿,B都會在下一次把石子拿完。如果N不可以被(M+1)整除時,A可以保證自己拿完剩下的石子數(shù)量一定是(M+1)的倍數(shù),同理,A勝。 這個題的思路主要是逆推法 從最后面開始,如果前三個人都被喂魚了,只剩4號和5號,那么無論4號說什么,5號都會反對,4號一定會被喂魚,5號獨吞100枚金幣。所以3號無論說什么,4號只能同意。 3號知道這些,會提出“100,0,0”這種分配方案,4號海盜為了活命只能贊同,加上自己一票即可使得投票通過半數(shù)。 2號知道這些,會提出“98,0,1,1”的分配方案,以此拉攏4號和5號。 1號知道這些,他還需要兩個人支持他,2號是不可能的,3號只需1枚金幣,4號或者5號其中一人即可,所以1號的分配方案是“97,0,1,2,0”或者“97,0,1,0,2” 拓展:如果題目改成投票半數(shù)人同意即可,又會怎樣分配呢? 這是一個非常經(jīng)典的動態(tài)規(guī)劃問題,手撕代碼時也很常見 如果是只有1個雞蛋,這個問題就很簡單了,為保證一定找到這個樓層,只能從第一層開始試。 題目中是兩個雞蛋,正常就是會想到二分法之類,先在50層扔一個,沒碎,撿回來在75層扔,碎了,第二個雞蛋只能從第1層開始試了。第一個雞蛋用來縮短范圍,第二個雞蛋用來遍歷范圍。 假設(shè)需要x次才能找到臨界的樓層,也就是說第一個雞蛋從第x層扔出(因為需要考慮最差情況,萬一第一個雞蛋碎了,為保證x次能找到,第一個雞蛋需要從x層扔出。因為如果雞蛋恰好在第x層碎了,在第x-1層沒碎,第一個雞蛋在x層以上的樓層扔的話,第二個雞蛋需要遍歷x次,一共需要x+1次) 如果第一個雞蛋碎了,第二個雞蛋遍歷1至x-1層,則需要x次找到。 如果第一個雞蛋沒碎,則第一個雞蛋的任務(wù)是需要繼續(xù)縮小范圍,還是為了保持這個x次能找到臨界樓層的條件,現(xiàn)在只剩x-1次了,下一次只能在x+x-1層扔第一個雞蛋,以此類推,x+(x-1)+(x-2)+......+1>=100,x=14 也就是說最少需要扔14次。 這個問題還有一些變種問題,比如2個雞蛋,n層樓;k個雞蛋,n層樓(力扣887題,大家感興趣可以看看)7.海盜分金幣問題:5個海盜搶到了100枚金幣,他們的分配方案,先抽簽決定自己的發(fā)言順序。1號提出的方案,由5個人進行投票表決,如果半數(shù)人以上同意(不包括半數(shù)),就按他的方案分配,否則扔進海里喂魚。如果1號被喂魚,由2號發(fā)言,提出的方案由4個人進行投票表決,規(guī)則同上。如果2號被喂魚,以此類推。1號海盜提出什么樣的方法才能使得自己分到最多的金幣
8.高層扔雞蛋問題:有一個100層的高樓,給你兩個雞蛋,需要測試出在哪層樓扔雞蛋,雞蛋不會碎。雞蛋如果沒有碎可以扔無數(shù)次。最少需要扔多少次?
