牛客题目链接
1. 题目考点
2. 考点解析
public int ysf (int n, int m) {
// write code here
// 基础:建立带头结点的单链表
ListNode head = new ListNode(1);
ListNode r = head;
for (int i = 2; i <= n; i++) {
ListNode node = new ListNode(i);
r.next = node;
r = node;
}
r.next = head;
// 关键:pre = r
ListNode p = head, pre = r;
int i = 0;
// 关键:最后一个节点的性质,p.next == p
while (p.next != p) {
i++;
// 技巧:只需要一个外部的 while 即可,此处的 while 可简化为 if
if (i == m) {
pre.next = pnext;
i = 0;
}
pre = p;
p = pnext;
}
return p.val;
}