C语言每日一题(43)旋转链表
力扣 61 旋转链表
题目描述
给你一个链表的头节点 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 <= 1000 <= k <= 2 * 109
思路分析
最开始的时候我是尝试过截断法的,就是每旋转一次,就将后面的结点指向头结点并把前面的结点的指针截断置空,但后面调试发现,这只适用于旋转一次,因为旋转后,新的尾结点的前驱结点找不到了,就算实现了,时间复杂度O(n2)也挺高的。
后面我发现了一种思路,也是截断法,但不同的在于它是一次性截完,我们之前写过一题,找出链表的倒数第N个结点,比如说n=2,当我们找到了倒数第二个结点时,我们发现,该节点后面的所有结点不就是我们所需要旋转的结点吗,我们就没必要一个个截断,找到所有需要旋转的点一次性截断就行了。
关于快慢指针走的步数,题目给的值万一很大就会超出时间限制,其实我们之前写过关于字符串的旋转,当旋转次数等于字符串长度时,等于没旋转,记得将次数模一下链表长度再进循环。
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
struct ListNode* rotateRight(struct ListNode* head, int k) {struct ListNode* tail=head;//快指针struct ListNode* prev=head;//慢指针struct ListNode* cur=head;//记录链表长度int n=0;if(k==0||head==NULL||head->next==NULL){return head;}while(cur){n++;cur=cur->next;//计算链表长度}k=k%n;//记得模一下
//找需要截断的结点位置while(k--){if(tail->next==NULL){tail=head;}else{tail=tail->next;}}while(tail->next){tail=tail->next;prev=prev->next;}
//截断tail->next=head;//将末尾结点指向头结点head=prev->next;//头结点移动到prev的下一个成为新头节点prev->next=NULL;//截断prev和tail,prev成为链表尾结点return head;}
相关文章:
C语言每日一题(43)旋转链表
力扣 61 旋转链表 题目描述 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head [1,2,3,4,5], k 2 输出:[4,5,1,2,3]示例 2: 输入:head [0,1,2], …...
CCF计算机软件能力认证考试—202209-1如此编码
题目背景 某次测验后,顿顿老师在黑板上留下了一串数字 23333 便飘然而去。凝望着这个神秘数字,小 P 同学不禁陷入了沉思…… 题目描述 已知某次测验包含 � 道单项选择题,其中第 � 题(1≤�≤&…...
Ubuntu18.04安装Ipopt-3.12.8流程
本文主要介绍在Ubuntu18.04中安装Ipopt库的流程,及过程报错的解决方法,已经有很多关于Ipopt安装的博客,但经过我的测试,很多都失效了,经过探索,找到可流畅的安装Ipopt的方法,总结成本篇博客。 …...
linux 内核同步互斥技术之信号量
信号量 信号量允许多个进程同时进入临界区,大多数情况下只允许一个进程进入临界区,把信号量的计数值设置为 1,即二值信号量,这种信号量称为互斥信号量。可允许多个锁持有者。 和自旋锁相比,信号量适合保护比较长的临界…...
交通强国添力量 无人机巡航为何备受期待?
在高速建设交通强国的过程中,交通运输部海事局计划完善“陆海空天”一体化水上交通运输安全保障体系。无人机巡航系统将在提升海事船舶监管和水上搜救能力方面发挥关键作用,以构建更为全面的监管体系。尽管已初步建立了海事监管体系,但仍存在…...
【PID学习笔记 6 】控制系统的性能指标之二
写在前面 上文介绍了控制系统的稳态与动态、过渡过程、阶跃响应以及阶跃信号作用下过渡过程的四种形式。本文紧接上文,首先总结过渡过程的分类,然后介绍控制系统的性能评价,最后重点介绍控制系统性能指标中的单项指标。 一、过渡过程的分类…...
ZLMediakit-method ANNOUNCE failed: 401 Unauthorized(ffmpeg、obs推流rtmp到ZLM发现的问题)
错误截图 解决办法:能推流成功,但是不能写入到wvp数据库中 修改配置文件config.ini 改成0 修改之后 重启服务 systemctl restart zlm*推流成功 解决办法:能推流,能写入数据库中 替换zlm版本,可以用我文章中提供的编译…...
聊聊logback的ThrowableProxyConverter
序 本文主要研究一下logback的ThrowableProxyConverter ThrowableHandlingConverter ch/qos/logback/classic/pattern/ThrowableHandlingConverter.java /*** Converter which handle throwables should be derived from this class.**/ public abstract class ThrowableHa…...
Kubernetes(k8s)访问不了Pod服务
在k8s集群部署java web应用的服务时,浏览器访问不了pod服务或linux终端curl http://192.168.138.112:30000即curl http://ip地址:端口号失败,如下图: 在网上找了很久的答案,最后还是没解决,后来突然想起来一直是在k8…...
python-学生管理|汉罗塔
1.编写程序,实现学生信息管理系统。 运行程序,在控制台输入“1”之后的结果如下所示: 学生管理系统 1.添加学生信息 2.删除学生信息 3.修改学生信息 4.显示所有学生信息 0.退出系统 请选择功能:1 请输入新学生的姓名:小红 请输入…...
python 堆与栈
【一】堆与栈 【 1 】简介 栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top&a…...
园区规划技术要点
(一)技术点介绍 1.WLAN:无线局域网WLAN(Wireless Local Area Network)是一种无线计算机网络,使用无线信道代替有线传输介质连接两个或多个设备形成一个局域网LAN(Local Area Network)…...
深入浅出 Linux 中的 ARM IOMMU SMMU III
系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的 dma_alloc_coherent()/dma_alloc_attrs() 等接口。dma_alloc_coherent()/dma_alloc_attrs() 等接口通过 DMA IOMMU 的回调分配内存,并为经过 IOMMU 的 DMA 内…...
Linux系统---图书管理中的同步问题
顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、问题描述 (1)图书馆阅览室最多能够容纳N(N5)名学生,若有更多学生想…...
Vue学习笔记-activated和deactivated生命周期
作用 路由组件所独有的2个生命周期 activated生命周期函数用于在路由组件每次由消失到出现时所调用的函数deactivated生命周期函数用于路由组件每次由出现到消失时(无论是否缓存)所调用的函数 案例 定义一个NewsVue组件,要求:…...
102.套接字-Socket网络编程4(TCP通信流程)
目录 TCP编程流程 套接字函数 1.创建套接字 2.绑定地址 3.监听连接请求 4.接受连接 5. 连接到服务器 6. 发送数据 7. 接收数据 8.关闭套接字 服务器端通信流程 示例代码 客户端通信流程 代码示例 TCP编程流程 TCP是一个面向连接的,安全的,流…...
spring boot 2 升级到 spring boot 3 后文件上传失败
背景 项目需要,要求升级 spring boot 2.7 到 spring boot 3.2,升级过程中发现很多不兼容问题,下面说明文件上传失败的解决方案。 问题 spring boot 2 中不需要额外的配置,直接在 Controller 中配置 MultipartFile 接收页面传的…...
Java Stream API 提供了一种非常方便的方式来比较两个 List 的差异,并取出不同的对象
Java Stream API 提供了一种非常方便的方式来比较两个 List 的差异,并取出不同的对象。这可以通过使用 distinct() 和 filter() 方法来实现。 假设我们有两个 List,一个是 list1,另一个是 list2,我们想找出 list1 中存在但 list2…...
C语言还会存在多久
一、C语言的生命力 在当前的科技发展和就业市场需求下,可以肯定地说C语言并没有像一些新兴语言(如Python、JavaScript等)那样受到大量的关注。然而,并不意味着学习C语言的人会越来越少。 首先,C语言作为一种深受尊重…...
手持式安卓主板_PDA安卓板_智能手持终端方案
手持式安卓主板方案是一种智能终端设备,具备自动对焦和闪光灯功能,可以在昏暗的环境下快速扫描二维码并轻松采集数据。该方案还提供多渠道支付和数据采集功能,为用户提供了便捷的体验。 该方案的产品基于手持式安卓主板,并搭载了八…...
Comsol模拟混凝土中水分传递 低气压下水分转移引起的水泥浆龄期微观结构变化 低气压(AP)...
Comsol模拟混凝土中水分传递 低气压下水分转移引起的水泥浆龄期微观结构变化 低气压(AP)会影响混凝土中的水分传递,进而影响其微观结构和体积特性,但对其热力学机制却知之甚少 可文献复现 水泥基材料内部的水分运动会直接改变孔隙…...
AI读脸术本地运行:私有化部署人脸分析系统详细步骤
AI读脸术本地运行:私有化部署人脸分析系统详细步骤 1. 什么是AI读脸术:不联网也能识别人脸属性 你有没有想过,一张普通照片里藏着多少信息?比如这张自拍——不用上传到任何云端服务,也不用担心数据被谁看到ÿ…...
ollama-QwQ-32B模型微调:提升OpenClaw任务执行准确率的实战方法
ollama-QwQ-32B模型微调:提升OpenClaw任务执行准确率的实战方法 1. 为什么需要微调模型来优化OpenClaw 上周三凌晨3点,我被一阵刺耳的提示音惊醒——OpenClaw又闯祸了。它本应自动整理我的项目文档,却误删了3个关键文件夹,还把桌…...
基于FPGA的DDS在安路TD和EG4A20BG256上的调试技巧与实战经验(五)
1. 安路TD软件常见编译问题排查指南 第一次用安路TD软件编译DDS工程时,我遇到了几个典型的编译错误。最常见的就是license报错,这个坑我踩过三次。当你看到"License expired"或者"Invalid license"提示时,别急着重装软件…...
obsidian-i18n:让Obsidian插件全面支持中文的效率提升方案
obsidian-i18n:让Obsidian插件全面支持中文的效率提升方案 【免费下载链接】obsidian-i18n 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-i18n Obsidian作为一款强大的知识管理工具,其丰富的插件生态极大扩展了核心功能。然而…...
突破语言壁垒:XUnity.AutoTranslator让Unity游戏翻译不再复杂
突破语言壁垒:XUnity.AutoTranslator让Unity游戏翻译不再复杂 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 一、游戏语言困境:玩家面临的真实挑战 想象一下,你终于等…...
LCDGraph:基于字符屏CGRAM的嵌入式轻量级实时绘图库
1. 项目概述LCDGraph 是一款专为嵌入式系统设计的轻量级图形绘制库,面向资源受限的微控制器平台(如 Arduino 系列),核心目标是在标准字符型 LCD 显示屏上实现高效、低开销的实时线性数据可视化。它不依赖图形点阵驱动或外部显存&a…...
抖音批量下载工具:高效自动化内容采集解决方案
抖音批量下载工具:高效自动化内容采集解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在内容创作与数据分析领域,高效获取抖音视频资源是许多从业者面临的共同挑战。传统手动…...
基于高频脉冲注入法的转子初始位置辨识算法代码及其应用
基于高频脉冲注入法转子初始位置辨识算法代码,无感启动中最重要的便是初始位置估计,高频注入法无感运行的方法适用于带电机运行,用在初始位置检测时,时间不固定,依赖电机参数。 采用脉冲注入法后,检测时间固…...
打造直播APP礼物列表丝滑体验:SmartRefreshLayout实战指南
打造直播APP礼物列表丝滑体验:SmartRefreshLayout实战指南 【免费下载链接】SmartRefreshLayout 🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架,支持越界回弹、越界拖动…...
