首页 > 编程语言 > 详细

【python】Leetcode每日一题-删除排序链表中的重复元素

时间:2021-03-27 16:38:45      阅读:23      评论:0      收藏:0      [点我收藏+]

【python】Leetcode每日一题-删除排序链表中的重复元素

【题目描述】

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

示例1:

技术分享图片

输入:head = [1,2,3,4,5], k = 2
输出:[4,5,1,2,3]

示例2:

技术分享图片

输入:head = [0,1,2], k = 4
输出:[2,0,1]

提示:

链表中节点的数目在范围 [0, 500] 内
-100 <= Node.val <= 100
0 <= k <= 2 * 10^9

【分析】

  • 思路

    由于 $ 0 \le k \le 2 * 10^9$ ,k较大,因此需要先求出链表总长度,k = len - k % len 求出偏移值,连接链表头部和尾部,切断偏移值处即可。

  • AC代码

    # Definition for singly-linked list.
    # class ListNode:
    #     def __init__(self, val=0, next=None):
    #         self.val = val
    #         self.next = next
    class Solution:
        def rotateRight(self, head: ListNode, k: int) -> ListNode:
            if head == None:
                return
            len = 1
            p = head
            while p:
                if p.next == None:
                    p.next = head
                    break
                p = p.next
                len += 1
            k = len - k % len
            p = head
            while k != 1:
                p = p.next
                k -= 1
            q = p.next
            p.next = None
            return q
    

【python】Leetcode每日一题-删除排序链表中的重复元素

原文:https://www.cnblogs.com/krnl-dpr/p/14585489.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!