牛客网刷题笔记四 链表节点k个一组翻转
NC50 链表中的节点每k个一组翻转
题目:
思路:
这种题目比较习惯现在草稿本涂涂画画链表处理过程。整体思路是赋值新的链表,用游离指针遍历原始链表进行翻转操作,当游离个数等于k时,就将翻转后的链表接到新的链表后,如最后个数不满k,则将原始链表剩余节点接到新的链表后。
游离的过程中,每次将当前游离的头节点赋为最新遍历的节点,同时将前一个节点链接到下一个节点。
这个代码写的过程中有点绕,过程有些bug,写了个打印链表的函数调试了下。
代码
class Solution:def reverseKGroup(self , head: ListNode, k: int) -> ListNode:def printList(h):## 打印链表result = []t = hwhile t:result.append(t.val)t = t.nextprint(result)# write code hereif not head or not head.next or k == 1:return headnewHead = ListNode(head.val) ## 最终输出的头节点newTail = ListNode(head.val) ## 每次翻转完成确定尾节点curHead = ListNode(head.val) ## 当前游离的头节点curNode = curHead ## 当前游离节点curTail = curHeadoriNextNode = head.next ## 原始节点顺序oriCurHead = head ## 记录原始链表中每次遍历的组里的头节点count = 1switchTime = 0 ## 成功翻转的组数while curNode:# print(f'{switchTime}次交换的{count}位')if count < k and oriNextNode:## 可以继续遍历的情况curNode = ListNode(oriNextNode.val) ## 游离原始链表的节点curNode.next = curHead ## 将最新的节点指向当前游离组里的头节点,实现翻转curHead = curNode ## 最新节点为头节点oriNextNode = oriNextNode.next if oriNextNode else None ## 继续遍历原始链表count+=1elif count == k:## 成功翻转的情况count = 1switchTime += 1if switchTime == 1:newHead = curHead ## 第一次翻转,获取翻转后的头节点newTail = curTailelse:newTail.next = curHead ## 除了第一次翻转,其余均用翻转后的尾节点做关联指向下一组节点newTail = curTailcurHead = ListNode(oriNextNode.val) if oriNextNode else None ## 获取下一组的头节点curNode = curHeadcurTail = curHeadoriCurHead = oriNextNode ## 获取下一组的原始头节点oriNextNode = oriNextNode.next if oriNextNode else Noneelif switchTime >= 1:## 无法继续遍历,且有翻转过的情况newTail.next = oriCurHeadreturn newHeadelse:## 一次翻转都未成功的情况return head# printList(newHead)# printList(curHead)# printList(head) return newHead
相关文章:
牛客网刷题笔记四 链表节点k个一组翻转
NC50 链表中的节点每k个一组翻转 题目: 思路: 这种题目比较习惯现在草稿本涂涂画画链表处理过程。整体思路是赋值新的链表,用游离指针遍历原始链表进行翻转操作,当游离个数等于k时,就将翻转后的链表接到新的链表后&am…...
【数据结构】图<简单认识图>
对于下面的内容,大家着重观察和理解图即可,可以直接绕过一些文字性的概念,对图有一个大概的认识。 图 简单认识图图的定义有向图和无向图完全图无向完全图有向完全图 图的基本存储结构邻接矩阵存储邻接矩阵的优点 网络的邻接矩阵邻接表无向图…...
Git介绍和基础命令解析
Git基本操作指令 工作区和暂存区 Git管理的文件分为:工作区(本地的文件夹),版本库(.git文件夹),版本库又分为暂存区stage和暂存区分支master(仓库) 工作区>>>>暂存区>>>>仓库 git add把文件从工作区>>>…...
力扣hot100 和为 K 的子数组 前缀和
👨🏫 题目地址 🍻 AC code class Solution {public int subarraySum(int[] nums, int k){int ans 0;int n nums.length;int[] s new int[n 1];// 前缀和s[0] 0;s[1] nums[0];for (int i 2; i < n; i)s[i] s[i - 1] nums[i - 1…...
6.12找树左下角的值(LC513-M)
算法: 这道题适合用迭代法,层序遍历:按层遍历,每次把每层最左边的值保存、更新到result里面。 看看Java怎么实现层序遍历的(用队列): /*** Definition for a binary tree node.* public clas…...
【精选】框架初探篇之——MyBatis的CRUD及配置文件
MyBatis增删改查 MyBatis新增 新增用户 持久层接口添加方法 void add(User user);映射文件添加标签 <insert id"add" parameterType"com.mybatis.pojo.User">insert into user(username,sex,address) values(# {username},# {sex},# {address}) <…...
ES8语法async与await
async和await两种语法结合可以让异步代码像同步代码一样。 一、async函数 async函数的返回值为Promise对象promise对象的结果由async函数执行的返回值决定 async function fn() {// 返回一个字符串return 字符串;// 返回的结果不是一个Promise类型的对象…...
c#处理SQLSERVER 中image数量类型为空
项目场景: DataRow dataRow dataTable.Rows[i]; var pxpicture dataRow ["pxImage"];if (pxpicture!null){byte[] pic (byte[])pxpicture;acs.Add("pxpicture", Convert.ToBase64String(pic));}问题描述 代码执行出现错误: 无…...
五子棋游戏
import pygame #导入pygame模块 pygame.init()#初始化 screen pygame.display.set_mode((750,750))#设置游戏屏幕大小 running True#建立一个事件 while running:#事件运行for event in pygame.event.get():if event.type pygame.QUIT:#当点击事件后退出running False #事…...
vue+SpringBoot的图片上传
前端VUE的代码实现 直接粘贴过来element-UI的组件实现 <el-uploadclass"avatar-uploader"action"/uploadAvatar" //这个action的值是服务端的路径,其他不用改:show-file-list"false":on-success"handleAvatarSuccess"…...
FFmepg 核心开发库及重要数据结构与API
文章目录 前言一、FFmpeg 核心开发库二、FFmpeg 重要数据结构与 API1、简介2、FFmpeg 解码流程①、FFmpeg2.x 解码流程②、FFmpeg4.x 解码流程 3、FFMpeg 中比较重要的函数以及数据结构①、数据结构②、初始化函数③、音视频解码函数④、文件操作⑤、其他函数 三、FFmpeg 流程1…...
训练 CNN 对 CIFAR-10 数据中的图像进行分类
1. 加载 CIFAR-10 数据库 import keras from keras.datasets import cifar10# 加载预先处理的训练数据和测试数据 (x_train, y_train), (x_test, y_test) cifar10.load_data() 2. 可视化前 24 个训练图像 import numpy as np import matplotlib.pyplot as plt %matplotlib …...
香港科技大学广州|智能制造学域博士招生宣讲会—天津大学专场
时间:2023年12月07日(星期四)15:30 地点:天津大学卫津路校区26楼B112 报名链接:https://www.wjx.top/vm/mmukLPC.aspx# 宣讲嘉宾: 汤凯教授 学域主任 https://facultyprofiles.hkust-gz.edu.cn/faculty-p…...
滑动窗口练习(二)— 子数组中满足max -min <= sum的个数
题目 给定一个整型数组arr,和一个整数num 某个arr中的子数组sub,如果想达标,必须满足: sub中最大值 – sub中最小值 < num, 返回arr中达标子数组的数量 暴力对数器 暴力对数器方法主要是用来和另一个方法互相校验正…...
用xlwings新建一个excel并同时生成多个sheet
新建一个excel并同时生成多个sheet,要实现如下效果: 一般要使用数据透视表来快速实现。 今天记录用xlwings新建一个excel并同时生成多个sheet。 import xlwings as xw # 打开excel,参数visible表示处理过程是否可视,add_book表示是否打开新的Excel程序…...
诺威信,浪潮云,微众区块链
目录 诺威信B隐私计算平台 浪潮云=星火连-澳优码 HyperChain 产品介绍 CA认证即电子认证服务...
Redux在React中的使用
Redux在React中的使用 1.构建方式 采用reduxjs/toolkitreact-redux的方式 安装方式 npm install reduxjs/toolkit react-redux2.使用 ①创建目录 创建store文件夹,然后创建index和对应的模块,如上图所示 ②编写counterStore.js 文章以counterStore…...
Go 数字类型
一、数字类型 1、Golang 数据类型介绍 Go 语言中数据类型分为:基本数据类型和复合数据类型基本数据类型有: 整型、浮点型、布尔型、字符串复合数据类型有: 数组、切片、结构体、函数、map、通道(channel)、接口 2、…...
时间序列预测 — Informer实现多变量负荷预测(PyTorch)
目录 1 实验数据集 2 如何运行自己的数据集 3 报错分析 1 实验数据集 实验数据集采用数据集4:2016年电工数学建模竞赛负荷预测数据集(下载链接),数据集包含日期、最高温度℃ 、最低温度℃、平均温度℃ 、相对湿度(平均) 、降雨…...
2023年金融信创行业研究报告
第一章 行业概况 1.1 定义 金融信创是指在金融行业中应用的信息技术,特别是那些涉及到金融IT基础设施、基础软件、应用软件和信息安全等方面的技术和产品。这一概念源于更广泛的“信创 (信息技术应用创新)”,即通过中国国产信息技术替换海外信息技术&a…...
ClearerVoice-Studio语音增强效果对比:FRCRN与MossFormer2在低SNR表现
ClearerVoice-Studio语音增强效果对比:FRCRN与MossFormer2在低SNR表现 1. 引言:语音增强的技术挑战与实际需求 在日常工作和生活中,我们经常遇到这样的场景:重要的线上会议录音充满键盘敲击声和空调噪音,电话采访的音…...
远离 8 种有毒人际关系,守住自身能量与运势
身处社会中,若长期接触 “有毒的人”,个人能量会被持续吞噬,运势也会受负面影响,这 8 类有毒的人际关系需果断远离。不赚钱的人会成为发展的阻碍,甚至心生异心拖垮他人,赚钱后需减少与其交集。不能滋养自己…...
Chord在科研视频处理中的应用:实验过程帧级语义标注与行为时序建模
Chord在科研视频处理中的应用:实验过程帧级语义标注与行为时序建模 1. 引言:科研视频分析的挑战与机遇 在科学研究领域,特别是生物学、心理学、医学和工程学等学科中,实验过程视频记录已成为不可或缺的研究手段。研究人员通过视…...
Linux平台总线驱动开发与设备树应用详解
1. Linux总线设备驱动模型概述在Linux内核开发中,总线设备驱动模型是一个非常重要的架构设计。作为一名长期从事Linux驱动开发的工程师,我深刻体会到这种设计模式带来的好处。它完美体现了软件工程中的"分离"思想,让驱动开发变得更…...
Kandinsky-5.0-I2V-Lite-5s惊艳案例分享:宠物/人像/产品图5秒动态化成果集
Kandinsky-5.0-I2V-Lite-5s惊艳案例分享:宠物/人像/产品图5秒动态化成果集 1. 开篇:让静态图片动起来的魔法 你有没有想过,随手拍的照片能自己动起来?Kandinsky-5.0-I2V-Lite-5s就是这样一个神奇的AI工具。它能把你的宠物照片、…...
区域电网含风光火储多类型联合调度与 IEEE39 系统潮流及电能质量分析研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
终极Qwen-Agent DevOps集成指南:AI助手的持续集成与部署全流程解析
终极Qwen-Agent DevOps集成指南:AI助手的持续集成与部署全流程解析 【免费下载链接】Qwen-Agent Agent framework and applications built upon Qwen>3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc. 项目地址: https:/…...
Claude Code 编程哲学正在改变一切:从“理解代码”到“跑通代码”
目录为什么传统 Coding Agent 开始失效向量化代码理解的瓶颈在哪里Claude Code 为什么选择“终端调试范式”CodeGraph:节省 Token,但解决不了核心问题真正的转变:从“看懂代码”到“跑通代码”这套范式对工程实践意味着什么一、为什么传统 Co…...
OpenAI Agents SDK 中文实战指南:从入门到多代理协作
1. 为什么你需要OpenAI Agents SDK 第一次接触这个SDK时,我正为一个客户设计智能客服系统。传统方案需要写大量if-else逻辑判断用户意图,而Agents SDK的多代理协作机制让我眼前一亮——就像组建了一支各有所长的AI团队,数学问题自动转交数学专…...
基于STM32的简易示波器设计与实现
1. 项目概述 这个基于STM32的开源简易示波器项目,是我最近用正点原子精英板完成的一个实用工具开发。作为一个嵌入式开发者,我经常需要观察各种信号波形,但专业示波器价格昂贵且不便携。于是决定自己动手做一个成本低廉、功能实用的简易示波器…...
