Python 数据结构之旋转链表
发布时间 - 2026-01-10 23:16:32 点击率:次题目描述:给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数

样例:给出链表1->2->3->4->5->null和k=2;返回4->5->1->2->3->null
首先,观察一下这个题目要达到的目的,其实,换一种说法,可以这样来描述:给出一个k值,将链表从倒数第k个节点处起之后的部分移动到链表前面,就样例来说,其实是将4->5这一部分移动到整个链表前面,变成4->5->1->2->3->null。不过,需要注意的是,题中没有给出k的大小,当k比链表的长度还大的时候,我们就需要先用k对链表的长度求余,比如,如果k = 7,那么上面的例子还是将4->5移动到整个链表前面。
所以说,这个题的思路可以这样来总结:
1. 先求出整个链表的长度
2. 根据k值找到需要移动的部分链表的前驱(样例中的3)
3. 在前驱之后将链表断开,移动后半部分
代码如下:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# @param head: the list
# @param k: rotate to the right k places
# @return: the list after rotation
def rotateRight(self, head, k):
if head is None:
return head
cur = head
count = 1
# 计算链表长度
while cur.next:
cur = cur.next
count += 1
# 为节省代码量,这里是一个很有技巧的处理:用尾节点链接头结点
cur.next = head
# 此处,k为cur从尾节点到要断开部分的前驱需走的步数
k = count - k % count
# 找到前驱
while k != 0:
cur = cur.next
k -= 1
# 断开
head = cur.next
cur.next = None
# 因为首尾已经相连,所以直接返回前驱后面的那个节点即可,此处引用为head
return head
# write your code here
需要注意的是21行首尾相连的技巧,这大大节省了我们的代码量,其实,就按之前思路中所描述的一步步来,也没问题。但是这个技巧确实很棒,值得学习。具体的细节我写在了代码注释里。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Python
# 旋转链表
# 旋转链表详解
# 旋转链表实例代码
# python算法题 链表反转详解
# Python数据结构之翻转链表
# 单链表反转python实现代码示例
# Python二叉搜索树与双向链表转换实现方法
# Python实现链表反转的方法分析【迭代法与递归法】
# python实现反转部分单向链表
# Python3实现的反转单链表算法示例
# Python二叉搜索树与双向链表转换算法示例
# python如何实现单链表的反转
# python递归实现链表快速倒转
# 链表
# 的是
# 是一个
# 求出
# 样例
# 需要注意
# 首尾相连
# 这一
# 也没
# 很有
# 希望能
# 后将
# 谢谢大家
# 写在
# 先用
# 很棒
# 省了
# 还大
# 这大
# 换一种
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
开心动漫网站制作软件下载,十分开心动画为何停播?
如何用花生壳三步快速搭建专属网站?
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
公司网站制作价格怎么算,公司办个官网需要多少钱?
米侠浏览器网页背景异常怎么办 米侠显示修复
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
如何彻底卸载建站之星软件?
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
香港服务器网站卡顿?如何解决网络延迟与负载问题?
Python图片处理进阶教程_Pillow滤镜与图像增强
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
青岛网站建设如何选择本地服务器?
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
JS实现鼠标移上去显示图片或微信二维码
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
googleplay官方入口在哪里_Google Play官方商店快速入口指南
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
文字头像制作网站推荐软件,醒图能自动配文字吗?
微信小程序 input输入框控件详解及实例(多种示例)
Android Socket接口实现即时通讯实例代码
Laravel如何生成API文档?(Swagger/OpenAPI教程)
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
php485函数参数是什么意思_php485各参数详细说明【介绍】
Laravel模型事件有哪些_Laravel Model Event生命周期详解
如何快速搭建高效WAP手机网站吸引移动用户?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
制作公司内部网站有哪些,内网如何建网站?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
如何用AI帮你把自己的生活经历写成一个有趣的故事?
如何快速生成橙子建站落地页链接?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
PHP正则匹配日期和时间(时间戳转换)的实例代码
焦点电影公司作品,电影焦点结局是什么?
智能起名网站制作软件有哪些,制作logo的软件?
如何在云服务器上快速搭建个人网站?
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
如何在阿里云高效完成企业建站全流程?
Python文件流缓冲机制_IO性能解析【教程】
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
Laravel如何与Inertia.js和Vue/React构建现代单页应用
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Laravel安装步骤详细教程_Laravel环境搭建指南
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?

