力扣labuladong一刷day15天K个一组翻转链表与回文链表

力扣labuladong一刷day15天K个一组翻转链表与回文链表

一、25. K 个一组翻转链表

题目链接:https://leetcode.cn/problems/reverse-nodes-in-k-group/
思路:k个一组翻转链表,每k个翻转抽取出一个单独的方法reverse,翻转a到b,返回的结果是新的头结点。
然后递归调用reverseKGroup,每次返回的都是新的头结点,新的头结点要接在上一个尾结点的位置也就是未翻转前的head即a。

class Solution {public ListNode reverseKGroup(ListNode head, int k) {if (head == null) return null;ListNode a = head, b = head;for (int i = 0; i < k; i++) {if (b == null) return a;b = b.next;}ListNode newHead = reverse(a, b);a.next = reverseKGroup(b, k);return newHead;}ListNode reverse(ListNode a, ListNode b) {ListNode pre = null, cur = a, nex = b;while (cur != b) {nex = cur.next;cur.next = pre;pre = cur;cur = nex;}return pre;}
}

二、234. 回文链表

题目链接:https://leetcode.cn/problems/palindrome-linked-list/
思路:类比于字符串,如果是判断是否是回文,只需要从两端向中间进行逐个比较,如果是寻找回文子串则要考虑奇数偶数从中间向两端寻找。

这里是判断链表是否是回文链表。只需要用一个全局变量记录head值,然后递归后序遍历,逐个比较。

ListNode left = null;public boolean isPalindrome(ListNode head) {left = head;return reverse(head);}boolean reverse(ListNode right) {if (right == null) return true;boolean res = reverse(right.next);res = res && left.val == right.val;left = left.next;return res;}

但这样其实是多比较了一半,也可以先试用快慢指针找到中点,然后翻转后一半,再来逐个比较,只要右边短的停止了就停止。

class Solution {public boolean isPalindrome(ListNode head) {ListNode slow = head, fast = head, left = head;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;}if (fast != null) slow = slow.next;slow = reverse(slow);while (slow != null) {if (left.val != slow.val) return false;left = left.next;slow = slow.next;}return true;}ListNode reverse(ListNode node) {ListNode pre = null, cur = node, nex = node;while (cur != null) {nex = cur.next;cur.next = pre;pre = cur;cur = nex;}return pre;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题第二十九天--二叉树

前言 问问自己&#xff0c;刷题的效果真的达到了吗&#xff1f; 内容 一、翻转二叉树 226.翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 递归 func invertTree(root *TreeNode) *TreeNode {if rootnil{return root}…

Vue中的$nextTick的作用

在 Vue 中&#xff0c;当某些数据发生变化时&#xff0c;DOM 并不会立即更新。相反&#xff0c;Vue 会在下一个事件循环周期&#xff08;microtask&#xff09;中异步执行更新&#xff0c;这样可以避免频繁的 DOM 操作。然而&#xff0c;有时候我们需要在 DOM 更新后执行一些操…

2024-NeuDS-数据库题目集

一.判断题 1.在数据库中产生数据不一致的根本原因是冗余。T 解析&#xff1a;数据冗余是数据库中产生数据不一致的根本原因&#xff0c;因为当同一数据存储在多个位置时&#xff0c;如果其中一个位置的数据被修改&#xff0c;其他位置的数据就不一致了。因此&#xff0c;在数据…

11.docker的网络-docker0的理解及bridge网桥模式的介绍与实例

1.docker0的基本理解 安装完docker服务后&#xff0c;我们首先查看一下宿主机的网络配置 ifconfig我们可以看到&#xff0c;docker服务会默认在宿主机上创建一个虚拟网桥docker0&#xff0c;该网桥网络的名字称为docker0。它在内核层连通了其他物理或者虚拟网卡&#xff0c;这…

ubuntu22.04系统下载程序和依赖,并拷贝到指定路径下

脚本1 apt install aptitude apt-get -d install xxx #xxx是待下载的安装包 mv /var/cache/apt/archives/* /home/tuners/1apt install aptitude apt-get -d install xxx mv /var/cache/apt/archives/*.deb /home/tuners/1 xxx 为程序包名称 /home/tuners/1为保存程序包的…

从零开始的搭建指南:开发高效的抖音预约服务小程序

预约服务小程序提高了效率&#xff0c;节省了用户时间。下文&#xff0c;小编将与大家一同探讨如何从零开始打造预约服务小程序。 第一步&#xff1a;明确需求和目标 确定你的小程序主要服务领域是什么&#xff1f;是医疗预约、美容美发、餐厅预订还是其他行业&#xff1f;明…

Python 如何开发出RESTful Web接口,DRF框架助力灵活实现!

Django Rest Framework&#xff08;DRF&#xff09;是构建强大且灵活的Web API的优秀工具。它基于Django&#xff0c;提供了一套用于构建Web API的组件和工具&#xff0c;简化了API开发过程&#xff0c;同时保留了Django的优雅和强大。 一、Web应用模式 在开发Web应用时&…

Android组件化搭建学习

什么是组件化&#xff1f; 为什么要用组件化&#xff1f;在项目的开发过程中&#xff0c;随着开发人员的增多及功能的增加&#xff0c;如果提前没有使用合理的开发架构&#xff0c;那么代码会越来臃肿&#xff0c;功能间代码耦合也会越来越严重&#xff0c;这时候为了保证项目…

C# 忽略大小写

在 C# 中&#xff0c;你可以通过以下几种方式来忽略大小写&#xff1a; 使用 ToLower 或 ToUpper 方法将字符串转换为全小写或全大写&#xff0c;然后进行比较。使用 Compare 或 CompareOrdinal 方法&#xff0c;并传入正确的 StringComparer 实例以指示比较应该忽略大小写。使…

Android 开发Java调用Kotlin提示包不存在

在kotlin代码所在module的build.gradle设置 plugins {id org.jetbrains.kotlin.android }

Unity中Shader的Standard材质解析(一)

文章目录 前言一、在Unity中&#xff0c;按一下步骤准备1、在资源管理面板创建一个 Standard Surface Shader2、因为Standard Surface Shader有很多缺点&#xff0c;所以我们把他转化为顶点片元着色器3、整理只保留主平行光的Shader效果4、精简后的最终代码 前言 在Unity中&am…

基于Springboot+Vue选课系统

选课系统要求 (1)数据库表&#xff1a;教师信息表、学生信息表、课程表、选课表 其中&#xff0c;教师信息表、学生信息表和选课表的数据需要提前设置&#xff0c;本题主要操作课程表 (2) 技术架构&#xff1a; 后台使用springboot 前端使用vue-admin-template (3) 考试时间&…

鸿蒙(HarmonyOS)应用开发——安装DevEco Studio安装

前言 HarmonyOS华为开发的操作系统&#xff0c;旨在为多种设备提供统一的体验。它采用了分布式架构&#xff0c;可以在多个设备上同时运行&#xff0c;提供更加流畅的连接和互动。HarmonyOS的目标是提供更高的安全性、更高效、响应更快的用户体验&#xff0c;并通过跨设备功能…

Vue3 响应式数据 reactive使用

ref 与 reactive 是 vue3 提供给我们用于创建响应式数据的两个方法。 reactive 常用于创建引用数据&#xff0c;例如&#xff1a;object、array 等。 reactive 则是通过 proxy 来实现的响应式数据&#xff0c;并配合 reflect 操作的源对象。 reactive 创建引用数据&#xff1…

【实战精选】掌握图像风格迁移:构建基于生成对抗网络的系统

1.研究背景与意义 随着计算机技术的不断发展&#xff0c;图像处理和计算机视觉领域取得了长足的进步。图像风格迁移是其中一个备受关注的研究方向&#xff0c;它可以将一幅图像的风格特征应用到另一幅图像上&#xff0c;从而创造出新的图像。这项技术具有广泛的应用前景&#…

lazada商品详情数据接口(lazada.item_get)

Lazada商品详情数据接口是Lazada电商平台提供的一个API接口&#xff0c;用于获取商品详细信息。通过这个接口&#xff0c;开发者可以获取Lazada平台上商品的丰富信息&#xff0c;包括商品名称、价格、库存、描述、图片等。这个接口使用RESTful风格&#xff0c;并通过HTTP协议进…

经过了多少轮洗牌后,序列中间位置的牌面为9 ← random.shuffle()

【题目描述】 有牌面为1~9的扑克牌&#xff0c;现在进行洗牌&#xff0c;并存于一个序列中。 请输出经过了多少轮洗牌后&#xff0c;序列中间位置的牌面为9。【算法分析】 Python 中使用 random 模块中的 shuffle 函数&#xff0c;可随意排列列表中的元素。 本题中的输出&#…

【基础知识】AB软件RSLinx的版本说明

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 之前对AB的软件了解比较少&#xff0c;在工作中未接触过&#xff0c;最近一次现场勘察时&#xff0c;有很多中控系统都是AB的&#xff0c;借此机会对AB软件有了些许了解。 一、RSLinx是什么软件&#xff1f; RSLinx是…

fork介绍,返回值问题,写时拷贝,进程切换,子进程开始执行的位置,子进程的用途

目录 fork 介绍 fork的返回值问题 介绍 fork()时,系统要做什么 数据是否要独立 如果共享的话,就会出现问题! 写时拷贝 引入 介绍 举例(fork返回值) fork返回的值是什么 创建失败的原因 子进程执行位置从哪里开始 引入 进程切换 子进程执行的位置 子进程的…

烫伤事件屡有发生,觅光推脱责任,称是用户操作失误

提及“双十一”“直播间”等关键词&#xff0c;人们常常将其与“低价”“薅羊毛”等字眼挂钩。而在近日&#xff0c;科技美容品牌AMIRO觅光&#xff08;下称“觅光”&#xff09;却上演了一出“反向薅羊毛”的戏码&#xff0c;因线上线下渠道相差超千元的价格差饱受争议。 自横…