劍指Offer46:孩子們的遊戲(圓圈中最後剩下的數)
思路:
第一個要刪除的是m-1,第二個要刪除是2m-1,第三個要刪除是3m-1,由於有n的限制即用求模來解決。
演算法中i=(m+i-1)%len(res),其中為何要減一,是因為已經從res刪除了一個數,res後面的數下標會在原來的基礎上減少1,所以2m-1的下標變成了2m-2,從而整個演算法就可以理解了。
# -*- coding:utf-8 -*- class Solution: def LastRemaining_Solution(self, n, m): # write code here if not m or not n: return -1 res = range(n) i = 0 while len(res)>1: i = (m+i-1)%len(res) res.pop(i) return res[0]
相關推薦
劍指Offer46:孩子們的遊戲(圓圈中最後剩下的數)
思路: 第一個要刪除的是m-1,第二個要刪除是2m-1,第三個要刪除是3m-1,由於有n的限制即用求模來解決。 演算法中i=(m+i-1)%len(res),其中為何要減一,是因為已經從res刪除了一個數,res後面的數下標會在原來的基礎上減少1,所以2m-1的下標變成了2m-2,從而整個演
牛客:劍指offer:孩子們的遊戲(圓圈中最後剩下的數) (Java)
轉自:http://blog.csdn.net/crazy__chen/article/details/45115911 題目描述: 解法1:找規律。首先定義最初的n個數字(0,1,…,n-1)中最後剩下的數字是關於n和m的方程為f(n,m)。在這n個數字中,第一個被刪除
劍指offer 46. 孩子們的遊戲(圓圈中最後剩下的數)
原題 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱首歌,然後可以在禮
劍指Offer - 孩子們的遊戲(圓圈中最後剩下的數)(Java實現)
題目描述: 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱首歌
劍指offer 孩子們的遊戲(圓圈中最後剩下的數)
每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列
牛客(46)孩子們的遊戲(圓圈中最後剩下的數)
ini rem add 小遊戲 bsp -- size public nbsp // 題目描述 // 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小遊戲。 // 其中,有個遊戲是這樣的
孩子們的遊戲(圓圈中最後剩下的數)/簡單約瑟夫環
1.數學遞推,遞迴,時間複雜度O(n) 結論: 分析: 下面用數學公式推導的方法,解決約瑟夫環經典問題。 第一步,這n個人我們給每一個人一個編號 0 ,1 ,2 ······ n-2,n-1 第二步,當第一輪遊戲結束後,這n個人少就變成了n-1個人 第三步,將第一輪結束後
孩子們的遊戲(圓圈中最後剩下的數)
題目描述 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小
孩子們的遊戲(圓圈中最後剩下的數) 約瑟夫環
題目描述:每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱首歌,然後可以在禮品箱中任意的挑選禮
牛客網刷題之孩子們的遊戲(圓圈中最後剩下的數)
題目描述: 解題思路: 其實就是一個約瑟夫問題的變種: 問題描述:n個人(編號0~(n-1)),從0開始報數,報到(m-1)的退出,剩下的人 繼續從0開始報數。求勝利者的編號。 我們知道第一個人(編號一定是m%n-1) 出列之後,剩下的n-1
Java 實現孩子們的遊戲(圓圈中最後剩下的數)
每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一個數m,
劍指offer系列(十六)翻轉單詞順序列,撲克牌順子,孩子們的遊戲(圓圈中最後剩下的數)
翻轉單詞順序列 題目描述 牛客最近來了一個新員工Fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事Cat對Fish寫的內容頗感興趣,有一天他向Fish借來翻看,但卻讀不懂它的意思。例如,“student. a am I”。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句
(劍指offer)孩子們的遊戲(圓圈中最後剩下的數)
時間限制:1秒 空間限制:32768K 熱度指數:128897 本題知識點: 模擬 題目描述 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指
劍指offer第62:圓圈中最後剩下的數字
題目描述 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱首歌,然後可以在禮品箱
【LeetCode & 劍指offer刷題】發散思維題3:62 圓圈中最後剩下的數字(約瑟夫環問題)
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) 62 圓圈中最後剩下的數字(約瑟夫環問題) 題目描述 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老
【劍指offer】圓圈中最後剩下的數字,C++實現
一行 AC 個人 ron namespace itl i++ float color 原創博文,轉載請註明出處! # 題目 # 思路 本題即為典型的約瑟夫問題,通過遞推公式解決。 第一行表示每個人的下標,現在要從11個人中刪除報數為3的人,從圖
【劍指offer】62、圓圈中最後剩下的數字
== str rem 過程 開始 continue 最後一個元素 last main 題目 0~n-1這n個數字排成一個圓圈,從0開始,每次刪除第m個數字,求出圓圈裏剩下的最後一個數字 思路 直接用數組模擬圓圈,模擬刪除的過程 class Solution { publi
劍指offer——圓圈中最後剩下的數
本題屬於約瑟夫問題。核心是用取餘的方式表示所停的位置 class Solution: def LastRemaining_Solution(self,n,m): if n<1 or m<1: return -1 con =range(n) f=-1 s
#資料結構與演算法學習筆記#劍指Offer35:數字在排序陣列中出現的次數 + 測試用例(Java、C/C++)
2018.10.24 今天是程式設計師節,但是程式設計師有啥節好過的,還是好好幹活吧~ 這道題也是一道效率題,根據實際情況的不同有兩個比較好用的方法: 方法一:平均複雜度o(n)。二分找到某一個K
劍指Offer35:數字在排序陣列中出現的次數
思路: 因為data中都是整數,所以可以稍微變一下,不是搜尋k的兩個位置,而是搜尋k-0.5和k+0.5,返回值應該是這兩個數插入的位置,然後相減就可得k出現的次數即可。(思路很巧妙,運用二分法實現) # -*- coding:utf-8 -*- class Solution: de