LeetCode刷題12:圓圈中最後剩下的數字

今天的刷題有點燒腦袋,但是仔細想想,還真是覺得很神奇!
每次看到網友的題解,都會滿是佩服,真是太厲害了吧,我也希望我能夠有那天,555!

題目:

0,1,n-1這n個數字排成一個圓圈,從數字0開始,每次從這個圓圈裏刪除第m個數字。求出這個圓圈裏剩下的最後一個數字。 例如,0、1、2、3、4這5個數字組成一個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是2、0、4、1,因此最後剩下的數字是3。

示例 1:
輸入: n = 5, m = 3
輸出: 3

示例 2:
輸入: n = 10, m = 17
輸出: 2

題解:在這裏插入圖片描述

C代碼:

int lastRemaining(int n,int m)
{
	int i,x;
	x=0;
	for(i=2;i<=n;i++)
	x=(x+m)%i;
	return x;
}

剛好最近在學習Python3,用Python3的代碼顯示如下:

class Solution:
	def lastRemaining(self,n:int,m:int)->int:
	x=0;
	for i in range(2,n+1):
		x=(x+m)%i
	return (x)

運行結果:
在這裏插入圖片描述

這個其實 是一個約瑟夫環 的問題,裏面有一連串的各種問題,但是最後總結出來,都是採用倒推的方式進行!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章