【力扣打卡系列】反转链表

坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day12

反转链表
  • 题目描述

在这里插入图片描述

  • 解题思路
    • 最开始的头节点为空,可以赋值为nil
    • 从前往后依次逆转下一个节点的指向即可
  • 代码参考
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func reverseList(head *ListNode) *ListNode {
    var pre *ListNode= nil
    cur := head
    for cur != nil{
        next :=cur.Next
        cur.Next = pre
        pre = cur
        cur =next
    }
    return pre
}
  • tips
    • 当前第一个节点指向的是头节点head
    • 注意需要单开一个next节点来存储当前节点原来的next值
    • 循环条件为cur != nil,不能省略为cur,因为不是布尔类型的值
    • 最后返回当前最后一个节点(pre),也就是新链表的头节点
反转链表2
  • 题目描述

在这里插入图片描述

  • 解题思路
    • 首先初始化哨兵节点
    • P0:指向开始被反转的节点的前一个未反转的节点的指针
    • right-left+1是被反转的节点个数
    • 最终p0指向下一个节点是已经反转的最后一个节点pre,即反转链表的头节点
    • 原先p0指向下一个节点指向cur
  • 代码参考
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func reverseBetween(head *ListNode, left int, right int) *ListNode {
    guard := &ListNode{Next:head}
    p0 := guard
    for i:=0;i<(left-1);i++{
        p0 = p0.Next
    }
    cur := p0.Next
    var pre *ListNode
    pre = nil
    for i:=0;i<(right-left+1);i++{
        next := cur.Next
        cur.Next = pre
        pre = cur
        cur = next
    }
    p0.Next.Next = cur
    p0.Next = pre
    return guard.Next
}
  • tips
    • 性质:反转结束后,从原来的链表来看
    • pre指向反转这一段的末尾
    • cur指向反转这一段后续的下一个节点
    • 特殊情况:left等于1的时候没有p0
    • 解决:在前面加一个哨兵节点,这样p0就存在了
    • 注意哨兵节点的声明:guard := &ListNode{Next:head},不能先Var再赋值next
    • 注意指定次数的for循环的写法: for i:=0;i<(right-left+1);I++
    • 注意pre的声明及初值,要放在逆转循环体的外面:
      • var pre *ListNode
        pre = nil
    • 注意最后这里勿漏next:
      • p0.Next.Next = cur
        p0.Next = pre
    • 为什么最终返回guard.Next:因为当left=1时,原先的head就被反转了,所以不能返回head
k个一组翻转链表
  • 题目描述
    在这里插入图片描述
  • 解题思路
    • 先拿到链表长度,求出有多少组k
    • 求链表长度n
      • for cur != nil{
        ​ cur = cur.Next
        ​ n++
        ​ }
    • 中间记得保存一下p0.Next的值
  • 代码参考
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func reverseKGroup(head *ListNode, k int) *ListNode {
    n := 0
    guard := &ListNode{Next:head}
    p0 := guard
    cur := head
    for cur != nil{
        cur = cur.Next
        n++
    }
    cur = p0.Next
    var pre *ListNode
    pre = nil
    for num := n/k;num != 0;num--{
        for i:=0;i<k;i++{
            nxt := cur.Next
            cur.Next = pre
            pre = cur
            cur = nxt
        }
        nxt_p0 := p0.Next
        p0.Next.Next = cur
        p0.Next = pre
        p0 = nxt_p0
    }
    return guard.Next
}
  • tips
    • 也是需要一个哨兵节点,用来找到头节点
    • 注意最后要更新p0
      • 需要把nxt_p0 := p0.Next先存下来
    • 顺序不能颠倒!
      • p0.Next.Next = cur
        p0.Next = pre

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

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

相关文章

超越YOLO11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务

D-FINE 在 COCO 数据集上以 78 FPS 的速度取得了 59.3% 的平均精度 (AP)&#xff0c;远超 YOLOv10、YOLO11、RT-DETR v1/v2/v3 及 LW-DETR 等竞争对手&#xff0c;成为实时目标检测领域新的领跑者。目前&#xff0c;D-FINE 的所有代码、权重以及工具已开源&#xff0c;包含了详…

已解决:VS2022一直显示编译中但无法运行的情况

本问题已得到解决&#xff0c;请看以下小结&#xff1a; 关于《VS2022一直显示编译中但无法运行的情况》的解决方案 记录备注报错时间2024年报错版本VS2022报错复现突然VS2022不能启动&#xff0c;一直显示编译中&#xff0c;取消重试无效&#xff0c;重新生成解决方案无效报错…

UML图之对象图详解

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 零、什么是对象图 对象图&#xff08;Object Diagram&#xff09;是UML中一种重要的静态结构图&#xff0c;它用于表示在特定时间点上系统中的对…

微信支付宝小程序SEO优化的四大策略

在竞争激烈的小程序市场中&#xff0c;高搜索排名意味着更多的曝光机会和潜在用户。SEO即搜索引擎优化&#xff0c;对于小程序而言&#xff0c;主要指的是在微信小程序商店中提高搜索排名&#xff0c;从而增加曝光度和用户访问量。有助于小程序脱颖而出&#xff0c;提升品牌知名…

Java面试经典 150 题.P27. 移除元素(002)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public int removeElement(int[] nums, int…

新160个crackme - 088-[KFC]fish‘s CrackMe

运行分析 需破解用户名和RegKey PE分析 C程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 ida函数窗口逐个查看&#xff0c;找到关键函数sub_401440 ida无法动调&#xff0c;需使用OD&#xff0c;启用StrongOD插件才可以动调ida静态分析&#xff0c;逻辑如下&…

[Linux关键词]unmask,mv,dev/pts,stdin stdout stderr,echo

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;大大会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

你知道你的顾客长什么样儿吗 | 顾客画像的魅力

0139岁、亚裔、女性和 Costco 「一位 39 岁的亚裔女性&#xff0c;年收入可达到 12.5 万美金」&#xff0c;这是 Numerator 描绘的 Costco 2023 年的顾客画像。而一个典型的 Costco 会员每两周的周末会去一次 Costco&#xff08;约为每年前往Costco采买30次&#xff09;&…

报表制作神器,轻松应对复杂报表

在企业运营中&#xff0c;面对海量数据和复杂报表的处理&#xff0c;不少公司都希望能有一款便捷、高效的工具来帮忙完成各类报表任务。今天要给大家推荐的是一款备受用户好评的国产报表工具——山海鲸报表&#xff0c;它不仅能处理复杂的数据表&#xff0c;还拥有丰富的可视化…

auto 项目笔记

基础设置 1.设置python目录为根路径 1. merge_with_history debug (1) coomon.yaml 修改 最下边的 root: /mnt/sdb/daimler/EHPV2/Ruiming_InternalDaily (2) 环境变量设置为1时 不走此步骤做的任何处理&#xff0c;直把上步数据接透传出去 2.

亚马逊云免费Amazon CloudFront服务

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 引言一、亚马逊云科技简介二、亚马逊云科技免费资源注册信息准备注册亚马逊云科技账号 三、…

企业应该采用和支持网络安全的几个实践

令人惊讶的是&#xff0c;网络安全可以像遵循最佳实践一样简单&#xff0c;理想情况下应该将其融入企业文化本身。在这篇文章中了解更多。 网络安全的重要性 在当今的网络安全期望中&#xff0c;软件工程师应该优先考虑他们的计算机系统和内部IT网络的安全性。我认为严重依赖…

升降压斩波【电力电子技术5章】

降压斩波&#xff1a; 升压斩波&#xff1a; 升降压斩波&#xff1a;

细说 ThreadPool(线程池)使用与优势以及实现方式

细说 ThreadPool&#xff08;线程池&#xff09;使用与优势https://mp.weixin.qq.com/s?__bizMzkzMTY0Mjc0Ng&mid2247485102&idx1&sndc578203c855e479a5b678b99b0f46b6&chksmc266aabbf51123ade562bf61230c3665886ae6c38fec790d2d9fb83afa805a1402d81086263c#r…

一种将树莓派打造为游戏机的方法——Lakka

什么是Lakka&#xff1f; Lakka是一款Linux发行版&#xff0c;轻量级的&#xff0c;可将小型计算机转变为一台复古游戏机。 图1-Lakka官网&#xff0c;见参考链接[1] Lakka是RetroArch和libretro生态系统下的官方操作系统&#xff0c;前者RetroArch是模拟器、游戏引擎和媒体播…

中医知识图谱之可视化模糊查询+力导向图+环形图的布局切换

后端通过springboot链接neo4j实现 前端通过echarts的关系图组件实现&#xff0c;echarts版本是4.2.1(有点老的版本但是不影响&#xff09; 实现功能是模糊查询中药方剂和药材的关系图谱 1 知识图谱可视化 黄色标识药方方剂、蓝色是药材&#xff0c;支持切换布局、支持模糊搜索…

【春秋云镜】CVE-2023-27179

CVE-2023-27179 CVE-2023-27179 是一个影响 Apache Doris 的漏洞。Apache Doris 是一款用于交互式分析的高性能数据库&#xff0c;特别适用于处理大规模的结构化数据。该漏洞属于权限提升漏洞&#xff0c;允许未授权用户以管理员身份执行敏感操作。 具体细节 漏洞类型&#…

Mybatis使用和原理

Mybatis使用和原理 1、ORM架构2、Spring整合MyBatis使用2.1 添加maven依赖2.2 配置数据源2.3 创建实体类2.4 创建 MyBatis Mapper2.4.1 使用MyBatis注解2.4.2 使用XML方式 2.5 Service 层 3、Spring整合Hibernate使用3.1 添加maven依赖3.2 配置数据源3.3 创建实体类3.4 创建 Re…

C/C++ 矩阵的QR分解

#include <iostream> #include <vector> using namespace std;int main() /* 矩阵A的QR分解*/ {// 动态分配内存int m 3; // 行数int n 3; // 列数// 初始化矩阵Adouble A[3][3] {{1, 2, 2},{2, 1, 2},{1, 2, 1}};double R[3][3] { 0 };double Q[3][3] { 0 };…

Transformer-BiGRU多特征输入时间序列预测(Pytorch)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Transformer-BiGRU多特征输入时间序列预测 可以做风电预测&#xff0c;光伏预测&#xff0c;寿命预测&#xff0c;浓度预测等。 Python代码&#xff0c;基于Pytorch编写 1.多特征输入单步预测&#xff0c;多步预测&a…