您当前的位置: 首页 > 

IT之一小佬

暂无认证

  • 2浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

圆圈中最后剩下的数字

IT之一小佬 发布时间:2021-08-20 11:21:30 ,浏览量:2

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

示例代码1(用时有点多):

class Solution:
    def lastRemaining(self, n: int, m: int) -> int:
        n_list = [i for i in range(n)]
        i = 0
        while len(n_list) > 1:
            i = (i+m-1) % len(n_list)
            n_list.pop(i)
        return n_list[0]

测试用例:

def last_remain(n, m):
    n_list = [i for i in range(n)]
    i = 0
    while len(n_list) > 1:
        i = (i + m - 1) % len(n_list)
        n_list.pop(i)
    return n_list[0]


n = 5
m = 3
result = last_remain(n, m)
print(result)

运行效果:

 测试代码2:

def last_remain(n, m):
    x = 0
    for i in range(2, n + 1):
        x = (x + m) % i
    return x


a = 5
b = 3
result = last_remain(a, b)
print(result)

运行结果:

 思路解析:

 

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.1571s