首页 > 其他分享 >代码随想录Day4

代码随想录Day4

时间:2024-08-04 21:06:05浏览次数:14  
标签:ListNode cur Day4 随想录 next 链表 curA 节点 代码

24.两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

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

示例 2:

输入:head = []
输出:[]

示例 3:

输入:head = [1]
输出:[1]

提示:

链表中节点的数目在范围 [0, 100] 内
0 <= Node.val <= 100


正解(模拟)

整个交换过程:
步骤

上代码(●'◡'●)
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        ListNode* dummyHead = new ListNode(0); // 设置一个虚拟头结点
        dummyHead->next = head; // 将虚拟头结点指向head,这样方便后面做删除操作
        ListNode* cur = dummyHead;
        while(cur->next != nullptr && cur->next->next != nullptr) {
            ListNode* pre = cur->next; // 记录临时节点
            ListNode* nex = cur->next->next->next; // 记录临时节点

            cur->next = cur->next->next;    // 步骤一
            cur->next->next = pre;          // 步骤二
            cur->next->next->next = nex;   // 步骤三

            cur = cur->next->next; // cur移动两位,准备下一轮交换
        }
        ListNode* result = dummyHead->next;
        delete dummyHead;
        return result;
    }
};

19.删除链表的倒数第N个节点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

示例 1:


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

示例 2:

输入:head = [1], n = 1
输出:[]

示例 3:

输入:head = [1,2], n = 1
输出:[1]

提示:

链表中结点的数目为 sz
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz

进阶:你能尝试使用一趟扫描实现吗?


力扣给的是一个单向链表,所以只能从前往后找;
但题目要求删除倒数第N个元素,所以得另想办法;

正解(双指针)

定义f,s,两个指针,f指针先走N步,然后f,s,一起移动直至f移动到链表末尾;
这时,s指向的就是倒数第N个元素;
思路很简单,写起来。。。也很简单

标签:ListNode,cur,Day4,随想录,next,链表,curA,节点,代码
From: https://www.cnblogs.com/Murder-sans/p/18341228/dmsxl_Day4

相关文章

  • 代码随想录二刷字符串
    代码随想录二刷字符串看leetcode这样一道题目:这道题若是用python库函数直接就秒了。但是那这道题就失去了本身的意义。题目注意事项中也说了输入字符串S可能存在前导空格、尾随空格或者单词间的多个空格。所以首先是对字符串处理。去除其中的空格。这与之前去除数组中去除特定......
  • 重燃代码之光:在PyCharm中恢复自动高亮的秘籍
    重燃代码之光:在PyCharm中恢复自动高亮的秘籍在编程的世界里,代码高亮是一项基本而重要的特性,它不仅增强了代码的可读性,还帮助开发者快速识别不同的代码元素。然而,在PyCharm中,有时可能会遇到代码不自动高亮的问题。本文将详细探讨这一问题的原因,并提供多种解决方案,确保你的Py......
  • 2024 年华数杯全国大学生数学建模竞赛 C 题 老外游中国 第一问代码
    请问352个城市中所有35200个景点评分的最高分(BestScore,简称BS)是 5.0importosimportpandasaspd#数据集所在的文件夹路径data_folder='附件'#初始最高评分设为一个较小的值,确保能找到比它更大的评分max_bs=float('-inf')#获取数据集文件夹中所有......
  • Scalable Diffusion Models with Transformers(DIT)代码笔记
    完整代码来源:DiTDiT模型主要是在diffusion中,使用transformer模型替换了UNet模型,使用class来控制图像生成。根据论文,模型越大,patchsize越小,FID越小。模型越大,参数越多,patchsize越小,参与计算的信息就越多,模型效果越好。模型使用了Imagenet训练,有1000个分类,class_labe......
  • Java代码审计-SQL注入
    Java代码审计-SQL注入前言一、SQL注入简介二、Java主要执行SQL语句的方式三、JDBC方式产生的漏洞1.Statement方式2.PreparedStatement方式四、MyBatis方式产生的漏洞1.两种参数符号造成的SQL注入2.orderby、like、in引发注入五、Hibernate方式产生的漏洞1.简介2.原理......
  • Java代码审计-命令执行
    Java代码审计-命令执行前言一、漏洞简介二、命令连接符三、ProcessBuilder命令执行1.ProcessBuilder简介2.漏洞利用四、Runtimeexec命令执行1.Runtimeexec简介2.漏洞利用五、探索1.代码底层原理2.疑问3.小结六、总结参考前言今天来学一下java代码审计中的命令......
  • 【全网首发】2024华数杯数学建模ABC题选题分析+解题思路代码+成品论文更新
    建议选哪道题?A题特点:数理分析题目此题难度较大与国赛难度较为贴近B题特点B题以运筹学/网络科学,图论、优化问题为主,涉及到的概念多,对基础要求较高,不建议优先选择。常用MATLAB函数例如toposort(有向无环图的拓扑顺序)、isomorphism(计算两个图之间的同构)、centrality(衡量节点......
  • 【仓颉】入门文档代码圆周率估算代码更正
    项目实现前实现后代码组织方式模块/包二级结构包/子包树形结构没有父包的包称为root包,root包及其子包(包括子包的子包)构成的整棵树称为module编译单元包包(每个子包单独编译)访问修饰符public:可修饰顶层和非顶层成员,包内外可见default(不写):仅本包内可见pro......
  • DAY4 前缀和与差分
    本文中将要介绍前缀和与差分的简单知识,全部题目来自acwing,是对y总讲解的简单归纳。题目:acwing795输入一个长度为 n的整数序列。接下来再输入 m 个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l个数到第 r个数的和。输入格式第一行包含两个整数 n和 ......
  • github添加ssh密钥,通过ssh方式推送代码
    左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。公众号:一点sir,关注领取python编程资料很多人在使用github的时候,如果还是使用https的方式推送代码的话,可能会发现推送不上去,官方会建议你使用ssh的方式进行代码推送。通过ssh方式推送代码,速度更快,更高效,而且还不用......