题解 | #调整牛群顺序#
调整牛群顺序
https://www.nowcoder.com/practice/a1f432134c31416b8b2957e66961b7d4
- 题目考察的知识点 : 题目考察点是链表的移动
- 题目解答方法的文字分析 : 思路是先获取链表长度N, N-n+1就是要找的节点,找到要移动的节点node, 前节点的next指针指向后节点, 尾节点的next指针指向node,node的next指针置空
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @param n int整型
# @return ListNode类
#
class Solution:
def moveNthToEnd(self , head: ListNode, n: int) -> ListNode:
# 从给出来的用例可以看出题目很明显描述错了
# 题目考察点是链表的移动
# 思路是先获取链表长度N, N-n+1就是要找的节点
# 找到要移动的节点node, 前节点的next指针指向后节点, 尾节点的next指针指向node,node的next指针置空
# 特例
if not head or not head.next or n == 1:
return head
#找出链表长度和记录下尾结点
tail_node = head
list_len = 0
cur = head
while cur:
if cur.next == None:
tail_node = cur
list_len = list_len + 1
cur = cur.next
remove_node_num = list_len - n + 1
dummy_head = ListNode(-1)
dummy_head.next = head
pre = dummy_head
cur = head
cur_num = 1
while cur:
if cur_num == remove_node_num:
pre.next = cur.next
cur.next = None
tail_node.next = cur
cur = cur.next
pre = pre.next
cur_num = cur_num + 1
return dummy_head.next
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路