1,題目:
2,思路:
方法一:用arraylist:(模擬鍊錶)
方法二:鍊錶:(其實和方法一是一樣的)
(其實還有別的方法,但是自己沒有看懂,就沒有寫)
3,**:
方法一:用arraylist:(模擬鍊錶)
class
solution
int idx =0;
while
(n >1)
return list.
get(0);}}
方法二:鍊錶:(其實和方法一是一樣的)
/*
將[0,n]依次儲存在鍊錶中
通過舉例可以得出第一次刪除的數字下標為(m-1)%n記為c,之後每一次刪除的數字下標均為(c+m-1)%list.size()
*/public
intlastremaining
(int n,
int m)
return list.
get(0)
;}
劍指offer 圓圈中最後剩下的數字
例如,0,1,2,3,4這五個數字組成的圓圈,每次從數字0開始刪除第3個元素,依次刪除的數為2,0,4,1,那麼剩下的為3。思路1 可以用stl模板庫裡面的list來模擬這個環形的鍊錶,因為list是線性的,所以為了實現環形的鏈,可以在遍歷到鏈的末尾的時候跳轉到鏈的開頭,這樣就相當於乙個環形鍊錶了,...
圓圈中最後剩下的數字(劍指offer)
題目 0,1,n 1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。例如,0 1 2 3 4這5個數字組成乙個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是2 0 4 1,因此最後剩下的數字是3。思路 最直接的思路,我們模擬一下...
圓圈中最後剩下的數字
1.問題描述 題目0,1.n 1這n個數字排成乙個圓圈,從數字0開始每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。來自 劍指offer 2.分析 1 用環形鍊錶模擬圓圈,然後掃瞄鍊錶刪除結點,如果掃瞄到了鍊錶結尾,重新在指向鍊錶開頭以此來模擬環形鍊錶。typedef struct...