leetcode上的腦筋急轉彎,你的腦筋會轉彎嗎?

2021-10-05 08:40:33 字數 2110 閱讀 8981

1.nim遊戲

你和你的朋友,兩個人一起玩 nim 遊戲:桌子上有一堆石頭,每次你們輪流拿掉 1 - 3 塊石頭。 拿掉最後一塊石頭的人就是獲勝者。你作為先手。

你們是聰明人,每一步都是最優解。 編寫乙個函式,來判斷你是否可以在給定石頭數量的情況下贏得遊戲。

示例:輸入: 4

輸出: false 

解釋: 如果堆中有 4 塊石頭,那麼你永遠不會贏得比賽;因為無論你拿走 1 塊、2 塊 還是 3 塊石頭,最後一塊石頭總是會被你的朋友拿走。

這道題很簡單,我在中學時候就見過,一方只需要拿完石頭後剩下石頭數量為4的倍數,就一定勝利。因為接下來對手如果拿k塊石頭,我們只需拿4-k塊石頭,使繼續保持剩下的石頭為4的倍數,直至最後剩餘石頭數量為0。

所以判斷自己能否勝利的條件就是自己最開始拿石頭的時候,石頭數量是否為4的倍數。如果不是4的倍數,只需拿掉相應的數量,使剩餘石頭數量為4的倍數,則自己能夠贏得勝利。相反,如果石頭數量為4的倍數,則不管你拿幾塊(1-3)石頭,則你拿完之後剩餘石頭數量都不可能是4的倍數,則對手只需繼續拿掉對應數量的石頭使剩餘石頭數量為4的倍數(比如你拿1,他就拿3),則他一定勝利。

**也很直接了:

class solution 

};

2.燈泡開關

初始時有 n 個燈泡關閉。 第 1 輪,你開啟所有的燈泡。 第 2 輪,每兩個燈泡你關閉一次。 第 3 輪,每三個燈泡切換一次開關(如果關閉則開啟,如果開啟則關閉)。第 i 輪,每 i 個燈泡切換一次開關。 對於第 n 輪,你只切換最後乙個燈泡的開關。 找出 n 輪後有多少個亮著的燈泡。

示例:輸入: 3

輸出: 1 

解釋: 

初始時, 燈泡狀態 [關閉, 關閉, 關閉].

第一輪後, 燈泡狀態 [開啟, 開啟, 開啟].

第二輪後, 燈泡狀態 [開啟, 關閉, 開啟].

第三輪後, 燈泡狀態 [開啟, 關閉, 關閉]. 

你應該返回 1,因為只有乙個燈泡還亮著。

首先思考:燈泡i會被按幾次?這其實相當於求i有幾個因子 比如燈泡8,一共會被按4次,分別是第一輪 第二輪 第四輪 第八輪。

如果燈泡被按奇數次,則此燈泡最後亮著,如果為偶數次則最後熄滅。即如果i有奇數個因子,則第i個燈泡最後亮著,如果i有偶數個因子。則第i個燈泡最後熄滅。

那麼很容易想到,可以用窮舉法求出每個位置的因子數,再判斷因字數的奇偶性,則可以得到對應燈泡的亮滅,再統計亮燈的個數。

當然,這種做法是很慢的,那麼有沒有什麼方法改進呢?我們要知道,乙個數的因子總是成對存在的,比如8的因子,1×8,2×4。只有平方數的因子數為偶數,比如4,9,16。因此,我們不需要求出乙個數的因子,只需要判斷它是否是平方數,就可以知道它的因子數量是奇是偶,這省去了求因子的過程。

那麼還有沒有更簡潔的方法呢?當然有,不然怎麼能叫腦筋急轉彎。我們試想一下,對於n=16,會有多少燈最後亮著?我們找其奇數個因子的數,有1,4,9,16,正好對應1-4的平方,那麼對於n=16-24之間,有奇數個因子的數仍然是這4個,即sqrt(n)。所以判斷有多少個數有奇數個因子,我們只需對n開根號即可。

**同樣簡潔:

class solution 

};

3.飛機座位分配概率

有 n 位乘客即將登機,飛機正好有 n 個座位。第一位乘客的票丟了,他隨便選了乙個座位坐下。

剩下的乘客將會:

如果他們自己的座位還空著,就坐到自己的座位上,

當他們自己的座位被占用時,隨機選擇其他座位

n 位乘客坐在自己的座位上的概率是多少?

示例 1:

輸入:n = 1

輸出:1.00000

解釋:第乙個人只會坐在自己的位置上。

示例 2:

輸入: n = 2

輸出: 0.50000

解釋:在第乙個人選好座位坐下後,第二個人坐在自己的座位上的概率是 0.5。

這道題最直觀的可以求遞推公式,這裡不多講。我們只講乙個最簡化的方法,

class solution 

};

以上題目來自均leetcode

腦筋急轉彎

松下為什麼沒索尼強?答案 panasonic 怕了索尼哥 a和c誰比較高呢?答案 c比較高 因為abcd a比c低 茉莉花 太陽花 玫瑰花哪一朵花最沒力?答案 茉莉花 好一奪沒力 美麗 的茉莉花 猩猩最討厭什麼線?答案 平行線。平行線沒有相交 香蕉 布和紙怕什麼?答案 布怕一萬,紙怕萬一。不怕一萬,...

腦筋急轉彎

以下內容摘抄於網際網路上,只為輕鬆一下。乙個人的錢包掉了,他首先應怎麼辦?答案 撿起來 但他沒撿,為什麼?答案 因為他是比爾 蓋茨 乙隻公雞抓著剛下蛋的母雞痛打,為什麼?答案 因為那只母雞下了乙個鴨蛋 哪個數字最勤勞?哪個數字最懶?答案 一不做 二不休 蔣介石如果還在世的話世界會怎樣?答案 多乙個人...

腦筋急轉彎

1.乙個很胖的胖子從跳下去會變成什麼?死胖子 2.小白加小白是什麼?小白兔 two 3.餃子是公的還是母的?公的,因為有包皮 4.瞎子揹著聾子過河,過到一半,聾子對瞎子說,河裡有人洗澡,瞎子笑笑回答說,肯定是個女的,瞎子怎麼知道是女的?因為他感覺後腰有東西突然頂了他 5.一位媽媽搭計程車要去接國中的...