力扣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.pswp.cn/news/164305.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164305.shtml
英文地址,請注明出處:http://en.pswp.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;因線上線下渠道相差超千元的價格差飽受爭議。 自橫…