题解 | #调整牛群顺序#

调整牛群顺序

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题的解法思路

全部评论

相关推荐

牛客773130651号:巨佬,简历模板换成上下的,左右的很烦,hr看着不爽。。。科大随便乱杀,建议能保研就保研,不行也得考一下 ,985硕去干算法,比开发强多了。开发许多双非都能搞,学历优势用不上,算法有门槛
点赞 评论 收藏
分享
Cherrycola01:0实习 0项目 约等于啥也没有啊 哥们儿这简历认真的吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务