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

news2024/11/15 1:21:06

题目:

给你链表的头节点 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.coloradmin.cn/o/833243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式:C高级 Day2

一、递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位 二、递归实现&#xff0c;输入一个数字&#xff0c;输出这个数的二进制 三、写一个脚本&#xff0c;包含以下内容 1.显示/etc/group文件中第五行的内容 2.创建目录/home/ubuntu/copy 3.切换工作路径到此目录…

《命运》阅读笔记

《命运》阅读笔记 2023年5月17号在杭州的小屋读完&#xff0c;我读完后&#xff0c;脑海里经常把余华的《活着》和这本《命运》的故事情节搞混淆&#xff0c;几乎都是讲着生活的苦难。全文以阿太&#xff08;外婆的妈妈&#xff09;的视角&#xff0c;在她九十九岁的人生里&…

在excel中整理sql语句

数据准备 CREATE TABLE t_test (id varchar(32) NOT NULL,title varchar(255) DEFAULT NULL,date datetime DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; INSERT INTO t_test VALUES (87896cf20b5a4043b841351c2fd9271f,张三1,2023/6/8 14:06); INSERT INTO t_test …

Electron + Vue3 + Vite + TS 构建桌面应用

之前是使用React、Electron、TS和webpack来构建桌面应用的。虽然功能齐全,但是打包等等开发的体验不太理想,总感觉太慢了。作为一个开发者,我们总是希望,执行构建命令后,可以快速打包或者启动本地应用,且通过更少的配置,来完成开发体验。 现在的vite已经得到广泛的应用…

如今音视频开发还有前途吗?

下面我从两个角度来跟大家进行分析&#xff1a; 市场角度薪资角度 这两角度分析下来&#xff0c;估计大家心里就会有答案了&#xff01;&#xff01;&#xff01; 1. 市场角度 目前市场中使用音视频技术的公司太多了&#xff0c;大到全民观看短视频&#xff0c;小到直播带货…

IT 基础架构自动化

什么是 IT 基础架构自动化 IT 基础架构自动化是通过使用技术来控制和管理构成 IT 基础架构的软件、硬件、存储和其他网络组件来减少人为干预的过程&#xff0c;目标是构建高效、可靠的 IT 环境。 为什么要自动化 IT 基础架构 为客户和员工提供无缝的数字体验已成为企业的当务…

【从零开始学习JAVA | 第三十八篇】应用多线程

目录 前言&#xff1a; 多线程的实现方式&#xff1a; Thread常见的成员方法&#xff1a; 总结&#xff1a; 前言&#xff1a; 多线程的引入不仅仅是提高计算机处理能力的技术手段&#xff0c;更是适应当前时代对效率和性能要求的必然选择。在本文中&#xff0c;我们将深入…

百度网盘加速下载

下载网页插件可搜索各种奇葩工具 Tampermonkey 在线解析连接&#xff1a;https://api.94speed.com/web/ 工具下载&#xff1a;https://motrix.app/zh-CN/download 解析完成后发送到&#xff1a;motrix

LeetCode 626. 换座位

题目链接&#xff1a;LeetCode 626. 换座位 题目描述 表名&#xff1a;Seat 编写SQL查询来交换每两个连续的学生的座位号。如果学生的数量是奇数&#xff0c;则最后一个学生的id不交换。 按 id 升序 返回结果表。 查询结果格式如下所示。 示例1&#xff1a; 题目分析 如…

Ubuntu20.04安装MySQL8

Ubuntu20.04安装MySQL8 MySQL8下载 点击MySQL download下载官网&#xff0c;按照自己所需要的版本下载对应的MySQL版本&#xff0c;如下图 点击下载后在进行解压&#xff0c;大致文件如下所示 然后需要一次安装对应的.deb文件。普通.deb程序安装命令&#xff1a; dpkg -i …

前端:地图篇(一)

1、前言 在很多的出行程序中&#xff0c;都会使用到地图这一个功能&#xff0c;在实际的开发中我们也不会去开发一个自己的地图模型。如果自己开发一个地图模型&#xff0c;那么需要投入的成本、人力都是非常巨大的。所以我们很多网站和APP中使用的都是第三方的接口和JS&#…

本地部署 audiocraft

本地部署 audiocraft 1. 什么是 audiocraft2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 部署 audiocraft6. 启动 MusicGen7. 访问 MusicGen 1. 什么是 audiocraft Audiocraft 是一个通过深度学习进行音频处理和生成的库。它具有最先进的 EnCodec 音频压缩器/分词器&am…

Java Selenium WebDriver 网页填报

一、windows环境安装配置 1.安装chrome浏览器 在“关于chrome”界面&#xff0c;查看浏览器版本号 2.下载chromeDriver 在https://registry.npmmirror.com/binary.html?pathchromedriver/下载对应版本的驱动&#xff08;如果浏览器版本过新&#xff0c;建议下载最接近的版…

day20-101. 对称二叉树

101. 对称二叉树 力扣题目链接 给定一个二叉树&#xff0c;检查它是否是镜像对称的。 思路 镜像对称必要的条件就是根节点的左右子树互相对称 左子树的左孩子 右子树的右孩子左子树的右孩子 右子树的左孩子 递归 使用递归前要确定递归的顺序&#xff0c;是前序、后序还…

N个实现水平垂直居中的方法

1 行内元素的水平垂直居中 1.1 单行文本 要实现行内元素的水平居中&#xff0c;只需把行内元素包裹在块级父层元素中&#xff0c;并且在父层元素CSS设置如下&#xff1a; <div class"box"><p>center</p> </div>.box{background-color: aq…

Docker Compose编排部署LNMP服务

目录 安装docker-ce 阿里云镜像加速器 文件 启动 安装docker-ce [rootlocalhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo --2023-08-03 18:34:32-- http://mirrors.aliyun.com/repo/Centos-7.repo 正在解析主机 m…

Set-up ESP-AT Environment on Windows using CMD

Before you start, the following environments need to be installed: Git BashPython environment, suggest Python version: 3.8.7. Please ensure the installation of Python v3.8 version environment, and remember to select the option “add to PATH” during the in…

MyBatis-基础操作-CRDU

前端页面展示提供对于数据的删除操作&#xff0c;后端为其实现 根据id删除数据&#xff08;D&#xff09; 具体的SQL语句 delete from emp where id 17; 接口方法 Delete("delete from emp where id #{id} ")public int DeleteByID(Integer id); 测试方法 Testpub…

数据结构--线性表2-2

目录 一、线性表例题&#xff1a; 二、分配动态内存&#xff1a; 1.动态创建一个空顺序表的算法&#xff1a; 2.动态顺序表的插入算法&#xff1a; 3.动态顺序表的删除 三、线性表的链式表示和实现 例题1&#xff1a;创建链表并插入26个字母 例题2&#xff1a;在链表中取…

伺服电机的三种控制方式与三闭环控制

&#xff08;项目&#xff09;FPGA双电机主从快速稳定控制实现 第一章 伺服电机的三种控制方式与三闭环控制 伺服电机的三种控制方式与三闭环控制 &#xff08;项目&#xff09;FPGA双电机主从快速稳定控制实现前言一、电机控制方式二、电机三个闭环负反馈PID控制系统三、三闭…