zoukankan      html  css  js  c++  java
  • 圆圈中最后剩下的数字

    题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。

    Solution

    # -*- coding:utf-8 -*-
    class Solution:
        def LastRemaining_Solution(self, n, m):
            # write code here
            '''if n < 1 or m < 1:
                return -1
            last = 0
            for i in range(2, n+1):
                last = (last + m) % i
            return last'''
            if n < 1 or m < 1:
                return -1
            idList = [i for i in range(n)]
            j = 0
            while len(idList) > 1:
                for i in range(m):
                    j += 1
                    if j == len(idList):
                        j = 0
                if j > 0:
                    j -= 1 # 因为当报到第m个数时,j继续自加了一次
                    idList.pop(j)
                elif j == 0: # 当要删除的是最后一个节点时,需要特殊处理一下
                    idList.pop() 
            return idList[0]
    
  • 相关阅读:
    我与solr(二)--导入mysql数据库
    Android 渐变效果
    希尔排序
    插入排序
    选择排序
    冒泡排序法
    QT仿QQ页面
    Colliding Mice
    QTablewidget通过代理实现限制输入
    QT绘制心形图案二
  • 原文地址:https://www.cnblogs.com/binwone/p/6182714.html
Copyright © 2011-2022 走看看