题解 | #调整牛群顺序#
调整牛群顺序
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题的解法思路