LeetCode 25题:K个一组翻转链表

news/2025/2/13 0:00:12/

题目:

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

示例 1:

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

示例 2:

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

提示:

  • 链表中的节点数目为 n
  • 1 <= k <= n <= 5000
  • 0 <= Node.val <= 1000

代码:

头结点不存储有效数值:

#include<stdio.h>
#include<stdlib.h>typedef struct ListNode {int val;struct ListNode *next;
}Node;void Create(struct ListNode** head);
struct ListNode* reverseKGroup(struct ListNode* head, int k);int main()
{Node*head;Create(&head);Node*res=reverseKGroup(head,2);res=res->next;while(res!=NULL){printf("%d ",res->val);res=res->next;}return 0;
}void Create(struct ListNode** head)
{*head=(Node*)malloc(sizeof(Node));int n;(*head)->next=NULL;scanf("%d",&n);Node*end,*ins;end=*head;for(int i=0;i<n;i++){ins=(Node*)malloc(sizeof(Node));int a;scanf("%d",&a);ins->val=a;ins->next=NULL;end->next=ins;end=ins;}
}struct ListNode* reverseKGroup(struct ListNode* head, int k)
{struct ListNode*temp=head->next;int len=0;for(;temp!=NULL;temp=temp->next){len++;}struct ListNode*nextend=head->next;struct ListNode*end=head;struct ListNode*ins=end->next;end->next=NULL;int p=0;while(p<=len){if(p+k>len)break;struct ListNode*temp2;for(int i=0;i<k;i++){temp2=ins->next;ins->next=end->next;end->next=ins;ins=temp2;}p=p+k;end=nextend;nextend=temp2;}end->next=nextend;return head;
}

 

头结点存储有效数值(LeetCode)

 

struct ListNode* reverseKGroup(struct ListNode* head, int k)
{struct ListNode*temp=head;int len=0;struct ListNode*res=(struct ListNode*)malloc(sizeof(struct ListNode));for(;temp!=NULL;temp=temp->next){len++;}struct ListNode*nextend=head;struct ListNode*end=res;struct ListNode*ins=head;end->next=NULL;int p=0;while(p<=len){if(p+k>len)break;struct ListNode*temp2;for(int i=0;i<k;i++){temp2=ins->next;ins->next=end->next;end->next=ins;ins=temp2;}p=p+k;end=nextend;nextend=temp2;}end->next=nextend;return res->next;
}


http://www.ppmy.cn/news/1001992.html

相关文章

树莓派更换软件源

​ 目录 1、备份源列表&#xff1a;在更改软件源之前&#xff0c;最好备份你当前的源列表文件。 2、编辑源列表文件&#xff1a;使用文本编辑器&#xff08;例如nano或vi&#xff09;打开/etc/apt/sources.list文件。 3、更换软件源&#xff1a;在文件中找到原始的官方源地…

力扣 C++|一题多解之动态规划专题(1)

动态规划 Dynamic Programming 简写为 DP&#xff0c;是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。20世纪50年代初&#xff0c;美国数学家贝尔曼&#xff08;R.Bellman&#xff09;等人在研究多阶段决策过程的优化问题时&#xff0c;提出了著名的最优化原理&…

产品使用手册编写指南工具,我推荐这几个!

在编写产品使用手册时&#xff0c;有许多工具可以帮助我们更高效地完成任务。因为产品手册不仅是一份使用说明书&#xff0c;更是互联网企业宣传和推销自己产品的一种普遍形式&#xff0c;是对产品外观及内容的客观介绍&#xff0c;是对业务操作流程的详细讲解&#xff0c;是对…

【爬虫实践】使用Python从网站抓取数据

一、说明 本周我不得不为客户抓取一个网站。我意识到我做得如此自然和迅速&#xff0c;分享它会很有用&#xff0c;这样你也可以掌握这门艺术。【免责声明&#xff1a;本文展示了我的抓取做法&#xff0c;如果您有更多相关做法请在评论中分享】 二、计划策略 2.1 策划 确定您…

uniapp运行项目到iOS基座

2022年9月&#xff0c;因收到苹果公司警告&#xff0c;目前开发者已无法在iOS真机设备使用未签名的标准基座&#xff0c;所以现在要运行到 IOS &#xff0c;也需要进行签名。 Windows系统&#xff0c;HBuilderX 3.6.20以下版本&#xff0c;无法像MacOSX那样对标准基座进行签名…

《golang设计模式》第一部分·创建型模式-05-工厂方法模式(Factory Method)

文章目录 1 概述2.1 角色2.2 类图 2 代码示例2. 1 设计2.2 代码2.3 类图 3. 简单工厂3.1 角色3.2 类图3.3 代码示例3.3.1 设计3.3.2 代码3.3.3 类图 1 概述 工厂方法类定义产品对象创建接口&#xff0c;但由子类实现具体产品对象的创建。 2.1 角色 Product&#xff08;抽象产…

软件测试之Docker常见问题汇总!附解决方法!

1、配置国内源进行docker安装&#xff0c;报错 HTTP Error 404 - Not Found 【整整200集】超超超详细的Python接口自动化测试进阶教程&#xff0c;真实模拟企业项目实战&#xff01;&#xff01; 原因&#xff1a; 由于配置国内镜像源时&#xff0c;把地址写错了&#xff0c;导…

无涯教程-jQuery - css( properties )方法函数

css(properties)方法将键/值对象设置为所有匹配元素的样式属性。 css( properties ) - 语法 selector.css( properties ) 上面的语法可以写成如下- selector.css( {key1:val1, key2:val2....keyN:valN}) 这是此方法使用的所有参数的描述- key:value - 设置为样式属…