// 圓圈中最後剩下的數字
// 0...n-1這n個數字排成乙個圓圈,從數字零開始每次從這個圓圈裡刪除第m個數字,
// 求這個圓圈裡剩下的最後乙個數字
//解法1:使用鍊錶表示環,在其中進行結點的刪除,返回剩下的最後乙個結點
public class main
public static int findnum(int n, int m)
list.remove(temp-1);
temp = temp-1+m; //從temp的位置繼續向下搜尋
} return list.get(0); }}
//解法2:尋找數字之間的關係(數學推導)
public class main
public static int findnum(int n, int m)
int result = 0;
for(int i = 2;i<=n;i++)
return result; }
}
劍指offer系列之45 圓圈中最後剩下的數字
題目描述 用0,1,n 1,這n個數字排成乙個圓圈,從數字0開始每次從這個圓圈裡刪除第m個數字,求出這個圓圈裡剩下的最後乙個數字。抽象建模能力 思路1 經典的解法,用環形鍊錶模擬圓圈,可以建立乙個總共有n個節點的環形鍊錶,然後每次在這個鍊錶中刪除第m個節點。思路2 把這n個整數做成乙個環,當數到哪個...
劍指Offer 面試題45 圓圈中最後剩下的數字
圓圈中最後剩下的數字 0,1,n 1這n個數字排成乙個圓圈,從數字0開始每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡 剩下的最後乙個數字。這是c語言書上的一道題目 設定乙個剪枝陣列,設定乙個迴圈,迴圈出口是只剩乙個元素,剛開始置剩餘元素總數目為n,後面會更新。注意每次當計數器變數走到n時,表明乙個...
劍指Offer 面試題45 圓圈中最後剩下的數字
題目 0,1,n 1這n個數字排成乙個圓圈,從數字0開始每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。思路 下面,我們主要介紹,用動態規劃來解決問題的方式。1 首先,我們定義乙個關於n m的方程 f n,m 該方程表示在n個數字中每次刪除第m個數字最後剩下的數字 根據1中的定義,...