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

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

反转链表
  • 题目描述

在这里插入图片描述

  • 解题思路
    • 最开始的头节点为空,可以赋值为nil
    • 从前往后依次逆转下一个节点的指向即可
  • 代码参考
/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func reverseList(head *ListNode) *ListNode {var pre *ListNode= nilcur := headfor cur != nil{next :=cur.Nextcur.Next = prepre = curcur =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 := guardfor i:=0;i<(left-1);i++{p0 = p0.Next}cur := p0.Nextvar pre *ListNodepre = nilfor i:=0;i<(right-left+1);i++{next := cur.Nextcur.Next = prepre = curcur = next}p0.Next.Next = curp0.Next = prereturn 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 := 0guard := &ListNode{Next:head}p0 := guardcur := headfor cur != nil{cur = cur.Nextn++}cur = p0.Nextvar pre *ListNodepre = nilfor num := n/k;num != 0;num--{for i:=0;i<k;i++{nxt := cur.Nextcur.Next = prepre = curcur = nxt}nxt_p0 := p0.Nextp0.Next.Next = curp0.Next = prep0 = nxt_p0}return guard.Next
}
  • tips
    • 也是需要一个哨兵节点,用来找到头节点
    • 注意最后要更新p0
      • 需要把nxt_p0 := p0.Next先存下来
    • 顺序不能颠倒!
      • p0.Next.Next = cur
        p0.Next = pre

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

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

相关文章

Spring Boot——配置文件

1. 配置文件的格式 Spring Boot 的配置文件有以下三种&#xff1a; application.propertiesapplication.ymlapplication.yaml yml 是 yaml 的简写&#xff0c;使用方法是一样的 当应用程序启动时&#xff0c;Spring Boot 会自动从 classpath 路径找到并加载 application.prop…

申请CNAS软件测试资质,如何选择测试工具最具性价比?

CNAS官方认可文件中对软件测试实验室需要配备的软件测试设备有如下要求&#xff1a; 1、软件测试设备可包括测试工具软件以及计算机系统、网络系统、适配器、测试输入和结果输出等硬件设备。当利用计算机或自动设备对软件测试数据进行采集、处理、记录、报告、存储或检索时&am…

ssm048电子竞技管理平台的设计与实现+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;电子竞技管理平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本电子竞技管理平台…

Android启动流程_Init阶段

前言 本文将会介绍 Android 启动流程&#xff0c;将基于 Android 10 代码逻辑介绍原生启动过程。 bootloader 上电 -> 加载 recovery 镜像或者 boot 镜像 -> linux kernel 启动 -> 加载 init 进程 -> 加载 zygote 进程 -> systemserver 进程 -> 系统启动 …

国标GB28181网页直播平台EasyGBS国标GB28181软件的应急管理与安全生产解决方案

在当今社会&#xff0c;安全生产和应急管理已经成为各行各业不可或缺的重要部分。全面提高安全生产管理水平、构建责任全覆盖、监管全过程、监管全方位的综合治理体系已成为社会发展的必然趋势。国标GB28181网页直播平台EasyGBS作为一款基于国标GB28181协议的视频融合管理平台&…

Python | Leetcode Python题解之第523题连续的子数组和

题目&#xff1a; 题解&#xff1a; class Solution:def checkSubarraySum(self, nums, k):d {0: -1}pre 0for index, num in enumerate(nums):pre numrem pre % ki d.get(rem, index)if i index:d[rem] indexelif i < index - 2:return Truereturn False

C++练习题

//C输出 "Hello, World!" #include <iostream> using namespace std; int main() { //printf("Hello World!"); cout<<"Hello World!"<<endl; return 0; } //C输出整数 #include <iostream> using names…

ChatGPT「AI搜索」正式上线:AI搜索要变天了?「速看体验与对比」

随着人工智能的发展&#xff0c;传统搜索引擎难以满足用户日益复杂的信息需求&#xff0c;AI搜索工具就因此诞生。10月31日&#xff0c;OpenAI发布了新的「ChatGPT Search」功能&#xff0c;为其智能聊天系统引入了实时网络搜索。借助这一功能&#xff0c;ChatGPT可以通过自然的…

Docker安装MySQL8.0

文章目录 1、通过Docker运行msyql82、进入容器配置mysql远程连接3、通过Navicat远程访问mysql 1、通过Docker运行msyql8 mkdir -p /home/mysql8/data /home/mysql8/config /home/mysql8/logsdocker run -d \ --name mysql8 \ --privilegedtrue \ --restartalways \ -p 3310…

JAVA基础:数据类型与运算符 (习题笔记)

1.输入自己的名字&#xff0c;年龄和性别&#xff0c;分别用不同的变量接收&#xff0c;并将输入的信息做输出。 public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.println("请输入你的名字&#xff1a;");String name i…

Windows 笔记本WiFi 功能消失解决办法

Windows 笔记本用户在使用 WiFi 时遇到功能突然消失的问题确实比较常见。这通常不是病毒造成的&#xff0c;而是其他几个常见原因所导致的。以下是一些可能的原因及解决方案&#xff1a; 视频教程【win10系统无网络&#xff0c;无wifi解决办法】 https://www.bilibili.com/vid…

opencv学习笔记(6):图像预处理(直方图、图像去噪)

3.直方图 直方图是用来表现图像中亮度分布的&#xff0c;给出的是图像中某个亮度或者某个范围亮度下共有几个像素&#xff0c;即统计一幅图某个亮度像素的数量。 直方图不能反映某一灰度值像素在图像中的位置&#xff0c;失去了图像的空间信息。图像直方图由于其计算代价较小&a…

【面试经典150】day 11

目录 1.无重复字符的最长子串 2.串联所有单词的子串 3.最小覆盖子串 4.有效的数独 ​​​​​​​ 1.无重复字符的最长子串 class Solution {public int lengthOfLongestSubstring(String s) {//定义哈希表Map<Character,Integer> dictnew HashMap<>();int ret…

linux-应用层操作GPIO

GPIO 同样也是通过 sysfs 方式进行操控&#xff0c;进入到/sys/class/gpio 目录下&#xff0c; export&#xff1a;用于将指定编号的 GPIO 引脚导出。在使用 GPIO 引脚之前&#xff0c;需要将其导出&#xff0c;导出成功之后才能使用它。注意 export 文件是只写文件&#xff…

【C++】C/C++内存管理

目录 1. C/C内存分布 2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3. C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 3.3new空间申请错误的处理 4. operator new与operator delete函数 4.1 operator new与operator d…

2024年10款专业的PDF合并工具帮你实现高效办公。

合并 PDF 文件还是有很多的优点的&#xff0c;比如能够方便查阅和管理&#xff0c;无需文件之间来回切换&#xff1b;方便系统的整理和分析文件&#xff1b;可以优化阅读体验并且节省存储空间等等。为了帮助大家进行文件合并&#xff0c;我还搜集了一些好用的工具在这里分享。 …

【JavaEE初阶 — 多线程】认识线程

目录 认识线程&#xff08;Thread&#xff09; 1 线程是什么? 2 为什么要有线程 3 进程和线程的区别 区别一 区别二 区别三 区别四 4. Java的线程和操作系统线程的关系 5.创建第一个多线程程序 引入Thread类 重写run() start()与run()区别 降低多线程对CPU的占用…

SpringBoot技术在商场应急管理中的创新应用

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

第三十四章 Vue路由进阶之声明式导航(导航高亮)

目录 一、导航高亮 1.1. 基于语法 1.2. 主要代码 二、声明式导航的两个类名 2.1. 声明式导航类名匹配方式 2.2. 声明式导航类名样式自定义 ​2.3. 核心代码 一、导航高亮 1.1. 基于语法 在Vue中通过VueRouter插件&#xff0c;我们可以非常简单的实现实现导航高亮效果…

基于Multisim数控直流稳压电源电路(含仿真和报告)

【全套资料.zip】数控直流稳压电源电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.输出直流电压调节范围5-12V。 2.输出电流0-500mA。 3.输出直流电压能步进调节&#xff0c;步…