劍指offer 45 圓圈中最後剩下的數字

2021-07-31 11:22:16 字數 538 閱讀 6158

// 圓圈中最後剩下的數字

// 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中的定義,...