每日OJ_牛客_反转部分单向链表

news2024/9/20 5:40:40

目录

牛客_反转部分单向链表

解析代码


牛客_反转部分单向链表

反转部分单向链表__牛客网

题目给的代码‘:

#include <iostream>
using namespace std;
struct Node {
    int val;
    struct Node* next;
};
Node* input_List() {
    int n,val;
    Node* phead=new Node();
    Node* pcur=phead;
    cin>>n;
    for(int i=1;i<=n;i++) {
        cin>>val;
        if(i==1) {
            pcur->val=val;
            pcur->next=nullptr;
        }
        else {
            Node* new_pNode=new Node();
            new_pNode->val=val;
            new_pNode->next=nullptr;
            pcur->next=new_pNode;
            pcur=new_pNode;
        }
    }
    return phead;
}
Node* reversePart(Node* head,int L,int R) {
    // 在下面完成代码
}
int main() {
    Node* phead=input_List();
    int L,R;
    cin>>L>>R;
    Node* new_phead=reversePart(phead,L,R);
    while(new_phead!=nullptr) {
        cout<<new_phead->val<<" ";
        new_phead=new_phead->next;
    }
    cout<<endl;
    return 0;
}

解析代码

可以用双指针解决,但假设需要反转的链表部分,占比比较大,则需要两次遍历链表来实现。

  1. 遍历确定反转链表的起始位置
  2. 遍历链表进行反转

那是不是可以考虑一次遍历链表就解决该问题? 可以采用头插的方式一次遍历解决问题、

题解及函数代码:

Node* reversePart(Node* head, int L, int R) {
    // 在下面完成代码
    Node* pHead = new Node;
    pHead->next = head;
    Node* prevNode = pHead;
    for (int i = 0; i < L - 1; i++) // 找到左结点的前一个
    {
        prevNode = prevNode->next;
    }
    Node* cur = prevNode->next;
    for (int i = 0; i < R - L; ++i) // R - L 次头插
    {
        Node* nextNode = cur->next;
        cur->next = nextNode->next;
        nextNode->next = prevNode->next;
        prevNode->next = nextNode;
    }
    Node* list = pHead->next;
    free(pHead);
    return list;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2056900.html

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

相关文章

【Java】效率工具模板的使用

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 乱码问题4.2 快捷键模板4.3 文件模板 一、前言 提高效率 二、学习内容&am…

【开端】Linux抓包测试接口

一、绪论 平时我们开发接口&#xff0c;可以通过程序去调用接口测试接口的情况&#xff0c;也可以通过postman去测试接口的联通情况&#xff0c;也可以直接通过命令去调试接口的情况。 二、几种接口调试方式 1、程序代码测试 public static void main(String[] args) {String …

电子木鱼+提肛+游戏地图,车机还能这么玩?

文/王俣祺 导语&#xff1a;电子木鱼、提肛训练、游戏级地图&#xff0c;你很难想象这些“直男关怀”是来自小鹏MONA M03的车机系统。最近&#xff0c;一批关于MONA M03车机功能的视频在网上疯传&#xff0c;一系列“没用但有趣”的功能广受年轻用户的好评&#xff0c;情绪价值…

【Linux】搭建Openstack(一)

搭建openstack平台的总结 Openstack是一个开源的云计算平台&#xff0c;可以提供基础设施即服务&#xff08;IaaS&#xff09;的功能&#xff0c;让用户可以在自己的数据中心部署和管理虚拟化的资源。 Openstack是当今最具影响力的云计算管理工具——通过命令或者基于web的可…

PostgreSQL下载、安装(Windows 10/11 64位)详细教程【超详细,保姆级教程!!!】

本文介绍关于windows 11如何下载、安装PostgreSQL-15.8版本的详细步骤 一、下载PostgreSQL 1、进入官网 PostgreSQL下载地址&#xff08;官网&#xff09; 直达PostgreSQL下载页面&#xff08;官网&#xff09; 2、点击“Download the installer”链接&#xff0c;选择合适…

使用Seaborn绘制热力图

热力图是一种用于展示矩阵数据的图表&#xff0c;其中颜色深浅表示数据值的大小。 import seaborn as sns import numpy as np import matplotlib.pyplot as plt # 创建示例数据 data np.random.rand(10, 12) # 绘制热力图 sns.heatmap(data, annotTrue, cmapcoolwa…

Ubuntu20.04离线安装 Docker

1.下载3个docker离线安装包&#xff0c;下载网址&#xff1a; https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/2.把3个离线安装包拷贝到ubuntu本地执行以下命令 sudo dpkg -i containerd.io_1.4.6-1_amd64.deb sudo dpkg -i docker-ce-cli_20.10.…

蓝队技能-应急响应篇C2后门权限维持手法WindowsLinux基线检查排查封锁清理

知识点 1、应急响应-C2后门-排查&封锁 2、应急响应-权限维持-排查&清理 3、应急响应-基线检测-整改&排查演示案例-蓝队技能-C2后门&权限维持-基线检查&查杀封锁-Windows 1、常规C2后门-分析检测 无隐匿手法 也可以把怀疑的exe程序上传到沙箱上分析 有…

Java二十三种设计模式-中介者模式(22/23)

本文深入探讨了中介者模式&#xff0c;这是一种行为型设计模式&#xff0c;通过定义一个中介者对象来简化对象间的通信&#xff0c;降低耦合度&#xff0c;并提高系统的模块化&#xff0c;同时提供了实现示例、使用场景、优缺点分析、与其他设计模式的比较&#xff0c;以及最佳…

贪心算法,暴力递归

前缀树 如果想要查询“bc”就可以直接看有没有走向b的路&#xff0c;如果有的话就看c节点上面的e值为1那么就是有这个“bc”&#xff0c;还能看见加过几次&#xff0c;代价很低 如果想看有多少是以“ab”作为前缀的&#xff0c;那么就直接看b上面的p值 贪心算法 哪个会议结束时…

java中final的使用方法

package Test;/*** author gyf* ClassName Test* Date 2024/8/13 16:26* Version V1.0* Description :*/ public class Test {public static void main(String[] args) {// 被final修饰就不能修改变量了final int a 10;System.out.println(a);} } // 若父类用final 修饰 则子类…

基于Java和GeoTools的Shapefile矢量数据缩略图生成实践

目录 前言 一、关于GeoTools的图片生成 1、关于GtRenderer 2、关于 图像生成架构 3、流式计算绘制 二、全球空间预览生成实战 1、pom.xml中关于图像生成依赖 2、样式设置及地图资源绑定 3、图片生成绘制 4、图片生成测试 三、成果验证 1、全球范围生成 2、我国的范…

快速批量替换图片名称为指定名称(附代码)

目录 一、需求二、代码使用方法三、代码四、效果展示 一、需求 深度学习配对训练&#xff0c;有时配对图像的名称需要一致&#xff0c;这里写了一个脚本&#xff0c;快速批量替换图片名称中某些字符串。 二、代码使用方法 使用代码时需要修改的地方见下&#xff1a; 三、代码…

一文1600字从0到1JMeter全流程性能测试实战!

项目背景&#xff1a; 我们的平台为全国某行业监控平台&#xff0c;经过3轮功能测试、接口测试后&#xff0c;98%的问题已经关闭&#xff0c;决定对省平台向全国平台上传数据的接口进行性能测试。 01、测试步骤 1、编写性能测试方案 由于我是刚进入此项目组不久&#xff0c…

[HGAME 2023 week1]Classic Childhood Game

方法一&#xff1a;在控制台输入mota&#xff08;&#xff09; 方法二&#xff1a;查看页面源码发现多个js,一一查看 在./Res/Events.js中发现编码&#xff08;准确来说是字符串&#xff09; \x59\x55\x64\x6b\x61\x47\x4a\x58\x56\x6a\x64\x61\x62\x46\x5a\x31\x59\x6d\x35\x7…

基于MATLAB视觉的静态手势识别系统

一、课题介绍及思路 为了丰富手势识别方法的多样性&#xff0c;提高手势识别的正确率&#xff0c;提出了一种基于手势轮廓像素变化的手势识别方法。在Matlab环境下&#xff0c;设计并开发了一个基于视觉的静态手势识别系统。系统主要由两部分组成&#xff1a;手势分割与手势识…

八股总结----数据库(MySQL和Redis)

1.MySQL部分 11.基本写法 列出数据库&#xff1a;show databases&#xff1b;创建数据库&#xff1a;create database mysql_test&#xff1b;切换数据库&#xff1a;use mysql_test&#xff1b;列出表&#xff1a;show tables&#xff1b;创建表&#xff1a;create table st…

回归预测|基于最大互信息与支持向量机结合的数据回归预测Matlab程序MIC-SVM 多特征输入单输出

回归预测|基于最大互信息与支持向量机结合的数据回归预测Matlab程序MIC-SVM 多特征输入单输出 文章目录 前言回归预测|基于最大互信息与支持向量机结合的数据回归预测Matlab程序MIC-SVM 多特征输入单输出 一、MIC-SVM模型最大信息系数&#xff08;MIC&#xff09;的原理支持向量…

网路安全-防火墙安全区域简介

文章目录 1. 概念介绍1.1 什么是安全区域&#xff1f;1.2 安全区域的分类1.3 安全区域级别1.4 安全区域的作用是什么&#xff1f; 2. 实战2.1 ENSP实验设计1实验目标&#xff1a;实验步骤&#xff1a; 2.2 ENSP实验设计2实验目标&#xff1a;实验步骤&#xff1a; 2.3 实验总结…

线性表【双向循环链表基本定义与操作】(带头结点)

1.双向循环链表的特征与图解 让头结点的 前驱指针 指向 链表的最后一个结点让 最后一个结点 的后继指针 指向 头结点。 2.双向循环链表的重要操作 1.双向循环链表的结构定义 双向循环链表的结构与双向链表完全一致&#xff0c;不同之处在于它的尾结点的next指针指向头结点&am…