思路:
先实现一个环,然后循环n–,直到环中只剩下一个node
其实和题解大佬的代码还是有很大差距的,这是我自己理解的一种方法
题解的方法大多是求一个递归公式
# -*- coding:utf-8 -*-
class Node:
def __init__(self, val=None):
self.val = val
self.next = None
class Solution:
def LastRemaining_Solution(self, n, m):
# write code here
if n == 0 or m == 0: return -1
#生成环
head = Node(0)
node = head
for i in range(1, n):
new = Node(i)
node.next = new
node = node.next
node.next = head #首尾连接
depth = n
node = head
while depth: #循环开始删除
for i in range(m-1): # 走m-1步,这样node会指向要删除的节点
pre = node
node = node.next
pre.next = node.next # 删除node
node = node.next # 指向下一个孩子,开始新的循环
depth -= 1
return node.val