【力扣题】关于单链表和数组习题

 🌈 个人主页:白子寰
🔥 分类专栏:python从入门到精通,魔法指针,进阶C++,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~
💡 坚持创作博文(平均质量分82+),分享更多关于深度学习、C/C++,python领域的优质内容!(希望得到您的关注~)  

 

目录

反转链表

题目要求

示例 

解法:双指针法 

思路

 图解

代码 

轮转数组

题目要求

示例

解法

方法一:数组方法

【时间复杂度O(n)】

方法二:memcpy法

【时间和空间复杂度O(n)】 

代码

方法一

方法二


 

反转链表

206.反转链表icon-default.png?t=N7T8https://leetcode.cn/problems/reverse-linked-list/description/

题目要求

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 

解法:双指针法 

思路

创建结点:temp,prev = NULL,cur = head

while使用cur遍历循环链表

        temp指向头cur的下一个节点(保存cur的下一个结点)

        cur的下一个节点指向prev(翻转操作)

        更新prev,cur指针

如此循环,直到cur指向空指针(如下面图解)

最后返回prev

 图解

代码 

typedef struct ListNode LTNode;
struct ListNode* reverseList(struct ListNode* head) {
    LTNode* temp;
    LTNode* prev = NULL;
    LTNode* cur = head;
    while(cur)
    {
        //保存cur的下一个结点
        temp = cur->next;
        //翻转
        cur->next = prev;
        //更新结点
        prev = cur;
        cur = temp;
    }
    return prev;
}


轮转数组

189.轮转数组icon-default.png?t=N7T8https://leetcode.cn/problems/rotate-array/

题目要求

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

示例

解法

方法一:数组方法

时间复杂度O(n)

方法二:memcpy法

【时间和空间复杂度O(n)】 

代码

方法一

void Reverse(int* a,int left,int right)
{
    while(left < right)
    {
        int tmp = a[left];
        a[left] = a[right];
        a[right] = tmp;

        ++left;
        --right;
    }
}
void rotate(int* nums, int numsSize, int k) {
    k %= numsSize;

    //前n-k个逆置
    Reverse(nums,0,numsSize-k-1);
    //后k个逆置
    Reverse(nums,numsSize-k,numsSize-1);
    //全部逆置
    Reverse(nums,0,numsSize-1);
}

方法二

void rotate(int* nums, int numsSize, int k) {
    k %= numsSize;
    int n = numsSize;
    int tmp[numsSize];

    //前n-k个逆置
    memcpy(tmp,nums+n-k,sizeof(int)*(k));
    //后k个逆置
    memcpy(tmp+k,nums,sizeof(int)*(n-k));
    //全部逆置
    memcpy(nums,tmp,sizeof(int)*(n));
}

 

***********************************************************分割线*****************************************************************************
完结!!!
感谢浏览和阅读。

等等等等一下,分享最近喜欢的一句话:

“当我在追光,我与光同航”。

我是白子寰,如果你喜欢我的作品,不妨你留个点赞+关注让我知道你曾来过。
你的点赞和关注是我持续写作的动力!!! 
好了划走吧。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯-单片机基础20——第14届省赛真题代码详解

网上传言说14届最难&#xff0c;实际做下来感觉确实是这样的 本试题&#xff0c;需要将矩阵键盘短接&#xff0c;J3的555定时器输出口与P34短接 1.比赛题目 2.编程的大致思路 首先&#xff0c;完成基础代码与数码管的不同窗口&#xff0c;定义大部分要用到的变量&#xff0c…

Qt/QML编程之路:HVAC control(51)

空调控制是智能座舱的重要组成部分。传统汽车里,空调控制一般通过机械按钮实现,比如内循环、空调on/off开关、空调风量调节、专门的前挡风玻璃吹风加热等,出风口可以手动调节。 过去很多年一直是机械按键,随着新能源汽车的大势所趋,空调控制方式也逐渐被颠覆。 现在这些控…

【自然语言】使用词袋模型,TF-IDF模型和Word2Vec模型进行文本向量化

一、任务目标 python代码写将 HarryPorter 电子书作为语料库&#xff0c;分别使用词袋模型&#xff0c;TF-IDF模型和Word2Vec模型进行文本向量化。 1. 首先将数据预处理&#xff0c;Word2Vec 训练时要求考虑每个单词前后的五个词汇&#xff0c;地址为 作为其上下文 &#xf…

如何开辟动态二维数组(C语言)

1. 开辟动态二维数组 C语言标准库中并没有可以直接开辟动态二维数组的函数&#xff0c;但我们可以通过动态一维数组来模拟动态二维数组。 二维数组其实可以看作是一个存着"DataType []"类型数据的一维数组&#xff0c;也就是存放着一维数组地址的一维数组。 所以&…

CRMEB 多商户和多店版的区别

&#xff08;1&#xff09;两个系统根本属性不同 CRMEB多商户是一款B2B2C多业态商家入驻平台系统&#xff0c;通俗点说&#xff0c;就是一个商城系统有多个商家运营各自的店铺。 多商户系统具有联营、自营、招商、混合等多种运营模式&#xff0c;主要用来构建类似京东、淘宝的…

【二分算法】

17. 二分查找&#xff08;easy&#xff09; 算法流程&#xff1a; 算法代码&#xff1a; int search(int* nums, int numsSize, int target) {// 初始化 left 与 right 指针int left 0, right numsSize - 1;// 由于两个指针相交时&#xff0c;当前元素还未判断&#xff0c;因…

2024最新仿默往IM即时通讯系统源码(PC+WEB+IOS+Android)客户端

简介: 2024最新仿默往IM即时通讯系统源码(PC+WEB+IOS+Android)客户端 系统功能配置灵活、海量并发、稳定可靠、数据安全,2小时快速部署、数据安全、单聊群聊、系统通知等通信功能,支持App、PC、Web等多端快速接入。 群功能:设置群二维码,群公告,昵称,头像,群共享文件…

零基础教程|四步学会自制宣传手册

在当今竞争激烈的市场中&#xff0c;一本精美而引人注目的宣传手册是吸引客户和推广产品的重要工具。但对于许多人来说&#xff0c;制作宣传手册似乎是一项艰巨的任务&#xff0c;特别是对于零基础的人来说。然而&#xff0c;通过以下四个简单的步骤&#xff0c;您也可以轻松学…

解决redis乱码问题

目录 1.问题 2.查看redis序列化机制 3.设置redis的序列化器 1.问题 在使用redis最为缓存时&#xff0c;发现key乱码问题 这是由于redis的序列化机制导致的 2.查看redis序列化机制 3.设置redis的序列化器 Configuration Data public class RedisConfig {/*** redis序列化*…

应急响应-战前反制主机HIDSElkeid蜜罐系统HFish

知识点 战前-反制-平台部署其他更多项目&#xff1a; https://github.com/birdhan/SecurityProduct HIDS&#xff1a;主机入侵检测系统&#xff0c;通常会有一个服务器承担服务端角色&#xff0c;其他主机就是客户端角色&#xff0c;客户端加入到服务端的检测范围里&#xff…

【漏洞复现】通天星CMSV6车载视频监控平台MobileAction文件读取漏洞

Nx01 产品简介 通天星车载视频监控平台软件拥有多种语言版本&#xff0c;应用于公交车车载视频监控、校车车载视频监控、大巴车车载视频监控、物流车载监控、油品运输车载监控等公共交通上。 Nx02 漏洞描述 通天星CMSV6车载视频监控平台MobileAction文件读取漏洞&#xff0c;攻…

C语言---顺序表(二)

文章目录 前言1.准备工作2.代码的实现2.1.顺序表的创建、销毁和打印2.2.顺序表的扩容、头插\删、尾插\删2.2.1.扩容2.2.2.尾插2.2.3.头插2.2.3.尾删2.2.4.头删 2.3.指定位置之前插入/删除数据/查找数据2.3.1.指定位置之前插入数据2.3.2.指定位置之前删除数据2.3.3.查找特定数据…

ChatGPT基础(二) ChatGPT的使用和调优

文章目录 ChatGPT的特性采用关键词进行提问给ChatGPT指定身份提升问答质量的策略1.表述方式上的优化2.用"继续"输出长内容3.营造场景4.由浅入深&#xff0c;提升问题质量5.预设回答框架和风格 ChatGPT的特性 1.能够联系上下文进行回答 ChatGPT回答问题是有上下文的&…

Samba实现windows和Linux共享文件,环境搭建

​ 搭建步骤 安装sambad sudo apt-get install samba samba-common 创建samba用户和密码 此处使用 Linux 账号和密码作为 samba 的账号和密码。Linux 账号为 shelmean shelmeanmachine:[~] $ sudo smbpasswd -a shelmean New SMB password: Retype new SMB password: Add…

MongoDB副本集部署(windows)

环境准备 本教程演示mongodb4.4 副本集部署&#xff08;一主两从&#xff0c;伪分布式&#xff09; 节点配置主节点localhost:27017从节点1localhost:27018从节点2localhost:27019 每一个节点&#xff08;实例&#xff09;都创建对应的数据文件&#xff08;data&#xff09;…

记一次空迭代器导致的崩溃分析

一. 崩溃代码&#xff1a; class EasySelect::Impl { public:Impl() default;std::vector<int> waitForReadable ();void addFd (int fd);void removeFd (int fd);void stopWait ();private:std::vector<int> m_fds;std::mutex m_fdsMutex;std::mutex m_pipeMute…

MySQL数据导出导出的三种办法(13/16)

数据导入导出 基本概述 目前常用的有3中数据导入与导出方法&#xff1a; 使用mysqldump工具&#xff1a; 优点&#xff1a; 简单易用&#xff0c;只需一条命令即可完成数据导出。可以导出表结构和数据&#xff0c;方便完整备份。支持过滤条件&#xff0c;可以选择导出部分数据…

python知识点汇总(十一)

python知识点总结 1、当Python退出时&#xff0c;是否会清除所有分配的内存&#xff1f;2、Python的优势有哪些&#xff1f;3、什么是元组的解封装4、Python中如何动态获取和设置对象的属性&#xff1f;5、创建删除操作系统上的文件6、主动抛出异常7、help() 函数和 dir() 函数…

数据结构-----枚举、泛型进阶(通配符?)

文章目录 枚举1 背景及定义2 使用3 枚举优点缺点4 枚举和反射4.1 枚举是否可以通过反射&#xff0c;拿到实例对象呢&#xff1f; 5 总结 泛型进阶1 通配符 ?1.1 通配符解决什么问题1.2 通配符上界1.3 通配符下界 枚举 1 背景及定义 枚举是在JDK1.5以后引入的。主要用途是&am…