题目:
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。

示例1:
输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL
解释:
向右旋转 1 步: 5->1->2->3->4->NULL
向右旋转 2 步: 4->5->1->2->3->NULL

示例2:
输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL
解释:
向右旋转 1 步: 2->0->1->NULL
向右旋转 2 步: 1->2->0->NULL
向右旋转 3 步: 0->1->2->NULL
向右旋转 4 步: 2->0->1->NULL

思路:
先求出链表长度,同时标记链表的尾节点,当移动位置 k 为0或者n*len时返回原链表即可;当k>len时令k = k % len,然后在将尾节点和首节点相连,在len - k处断开链表即可。

代码如下:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {public:ListNode* rotateRight(ListNode* head, int k) {if(head == NULL) return head;ListNode* p = head;ListNode* q = head;int len = 1;//求出链表长度,指针p指向当前链表尾部while(p->next){len++;p = p->next; }k %= len;if(k == 0) return head; //当k为链表长度整数倍时返回原链表p->next = head; //将原链表的尾节点与首节点链接//寻找链表断开的位置int index = 1;while(index < (len - k)){index++;q = q->next;}ListNode *ret = q->next; q->next = NULL;return ret;}
};

leetcode 61 旋转链表 c++相关推荐

  1. 【Leetcode -61.旋转链表 -82.删除排序链表中的重复元素Ⅱ】

    Leetcode Leetcode -61.旋转链表 Leetcode -82.删除排序链表中的重复元素Ⅱ Leetcode -61.旋转链表 题目:给你一个链表的头节点 head ,旋转链表,将链表 ...

  2. Java实现 LeetCode 61 旋转链表

    61. 旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = ...

  3. LeetCode 61. 旋转链表

    给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4-& ...

  4. 跟我打卡LeetCode 61旋转链表62不同路径63不同路径 II

    原创公众号:bigsai 关注后回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 49字母异位词分组&50pow(x,n)&51八皇后 LeetCode打卡 52八皇 ...

  5. 24. Leetcode 61. 旋转链表 (链表-基础操作类-旋转链表)

    给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置.示例 1:输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2:输入:hea ...

  6. Leetcode 61 旋转链表 (每日一题 20210723)

    给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置.示例 1:输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2:输入:hea ...

  7. LeetCode 61旋转链表-中等

    给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置. 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 输入:head = [0,1, ...

  8. LeetCode 61. 旋转链表(python、c++)

    题目描述 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出 ...

  9. LeetCode 61——旋转链表

    1. 题目 2. 解答 2.1. 方法一 将链表每个节点向右移动 1 个位置,其实就是让链表最后一个结点指向第一个结点. 因此,向右移动 k 个位置就重复上述过程 k 次即可. 然后,我们注意到,若链 ...

最新文章

  1. 没想到,他面试竟然挂在了Spring的这个点上...
  2. 2014迅雷校园招聘笔试题答案
  3. 最火的前端开发框架Bootstrap使用教程学习!
  4. pandas 保留小数位数
  5. 不展现报表实现对报表的打印导出
  6. LDAP 查询基本知识
  7. 构架、框架、设计模式之间的关系简述
  8. matlab实现二项分布
  9. Java 8中用java.time.LocalDate全面代替老旧的Date,Calendar类
  10. 谷歌推出3D社区“Lively” 挑战第二人生(组图)
  11. 高性能相关----爬虫
  12. Activiti实战. 1.3Activiti的特点
  13. STM32F407——蓝牙模块CC2541
  14. Rockwell AB PLC 控制器EDS 更新下载更新方法
  15. 一文看懂数字孪生,工信部权威白皮书
  16. 局域网访问mysql失败_局域网中mysql连接失败
  17. 计算机快速格式化u盘启动,制作启动盘格式化u盘
  18. activiti流程图下发任务报错,不能正常流转到下一个处理步骤
  19. 计算机网络的分类1:按网络拓扑结构分类,分为星型拓扑、环形拓扑、总线拓扑、树形拓扑、网状拓扑
  20. 算法学习系列(贪心算法)—机器人攀登问题

热门文章

  1. latex:ieee摘要两端对齐
  2. 型、T型、K型 热电偶的区别和特点
  3. 2021年中级消防设施操作员(操作与维护),模拟真题及答案
  4. Openbravo架构分析
  5. 推荐系统论文笔记(1):Hybrid Recommender Systems:Survey and Experiments
  6. 什么是CCNA?(及相关概念)
  7. Linux安装中文输入法(谷歌输入法和搜狗输入法)
  8. 网络营销推广落地方案(2018最新)
  9. Jacobian矩阵的理解
  10. XGBoost参数说明