首页 > 其他分享 >旋转链表

旋转链表

时间:2024-01-17 17:47:21浏览次数:21  
标签:head ListNode int nullptr next 链表 旋转

 

 

/*
 * @lc app=leetcode.cn id=61 lang=cpp
 *
 * [61] 旋转链表
 */

// @lc code=start
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution
{
public:
    ListNode *rotateRight(ListNode *head, int k)
    {

        if (head == nullptr || k == 0)
        {
            return head;
        }

        ListNode *p = head;
        ListNode *q = head;
        // 先求出链表总个数
        int number = 0;
        for (ListNode *k = head; k != nullptr; k = k->next)
        {
            number++;
        }

        k = k % number;
        for (int i = 0; i < k; i++)
        {
            p = p->next;
        }
        while (p->next != nullptr)
        {
            q = q->next;
            p = p->next;
        }
        p->next = head;
        head = q->next;
        q->next = nullptr;
        return head;
    }
};
// @lc code=end

 

标签:head,ListNode,int,nullptr,next,链表,旋转
From: https://www.cnblogs.com/angdh/p/17970587

相关文章

  • 删除链表的倒数第 N 个结点
      /**@lcapp=leetcode.cnid=19lang=c**[19]删除链表的倒数第N个结点*///@lccode=start/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*removeNthFromEnd(......
  • leetcode 21.合并两个有序链表
    leetcode21.合并两个有序链表第二十一题:合并两个有序链表1.迭代:当l1和l2都不是空链表时,判断l1和l2哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。publicListNodemergeTwoLists(ListNodelist1,......
  • 遍历链表,将节点接到末端 【1月16日学习笔记】
    点击查看代码//遍历链表,将节点接到末端#include<iostream>usingnamespacestd;structnode{ intdata;//数据 node*next;//尾巴};//定义节点结构体node*A;//头指针固定,globalvariabl......
  • python 搜索旋转排序数组 多种解法
    二分查找:旋转排序数组中仍然可以应用二分查找算法。首先,我们找到数组中最小的元素的索引,也就是旋转点的位置。然后,我们根据目标值与旋转点的大小关系,在旋转点的左侧或右侧进行常规的二分查找。defsearch(nums,target):#寻找旋转点left,right=0,len(nums)-1......
  • 双向链表C语言实现
    双向链表实现(带头结点版)双向链表的实现与单链表类似,在这里使用C语言实现,主要包括头插法插入节点,删除节点以及创建空链表抽象数据结构ADT定义双向链表与单链表的区别在于多了一个指向上一个节点的指针prevtypedefstruct_Node{intdata;struct_Node*next;......
  • 【算法】【线性表】【链表】随机链表的复制
    1 题目给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random......
  • 【算法】【线性表】【链表】环形链表
    1 题目给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos 不作为参数进行传递 。仅......
  • leetcode 19.删除链表的倒数第N个节点
    leetcode19.删除链表的倒数第N个节点第十九题:删除链表的倒数第N个节点在对链表进行操作时,一种常用的技巧是添加一个哑节点(dummynode),它的next指针指向链表的头节点。这样一来,我们就不需要对头节点进行特殊的判断了。例如,在本题中,如果我们要删除节点y,我们需要知道节点y的前......
  • 每日一题 2024-1-15 删除排序链表中的重复元素Ⅱ
    1.题目(中等)原题链接给定一个已排序的链表的头\(head\),删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。示例1:输入:head=[1,2,3,3,4,4,5]输出:[1,2,5]示例2:输入:head=[1,1,1,2,3]输出:[2,3]提示:链表中节点数目在范围\([0,300]\)......
  • 【算法】【线性表】【链表】K 个一组翻转链表
    1 题目给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例1:......