算法每日一練 (5)

💢歡迎來到張胤塵的技術站
💥技術如江河,匯聚眾志成。代碼似星辰,照亮行征程。開源精神長,傳承永不忘。攜手共前行,未來更輝煌💥

文章目錄

  • 算法每日一練 (5)
    • 旋轉鏈表
      • 題目描述
      • 解題思路
      • 解題代碼
        • `c/c++`
        • `golang`
        • `lua`

官方站點: 力扣 Leetcode

算法每日一練 (5)

旋轉鏈表

題目地址:旋轉鏈表

題目描述

給你一個鏈表的頭節點 head ,旋轉鏈表,將鏈表每個節點向右移動 k 個位置。

示例 1:

在這里插入圖片描述

輸入:head = [1,2,3,4,5], k = 2
輸出:[4,5,1,2,3]

示例 2:
在這里插入圖片描述

輸入:head = [0,1,2], k = 4
輸出:[2,0,1]

提示:

  • 鏈表中節點的數目在范圍 [0, 500]
  • -100 <= Node.val <= 100
  • 0 <= k <= 2 * 109

解題思路

  • 首先考慮邊界條件,由題意可知當出現以下情況時,不需要進行任何處理,直接返回頭節點即可:
    • 當鏈表是空時;
    • 當鏈表中只有一個節點時;
    • 當旋轉次數是0時;
  • 另外對于鏈表的旋轉,如果鏈表形成一個環(循環鏈表),在適當的位置(節點總數 - 移動的步數 k)斷開,那么斷開的位置就是鏈表的尾節點,新的頭節點就是尾節點的下一個節點
  • 首先借助輔助指針變量 t 在循環中計算鏈表節點的數量 cnt,此時當循環結束后,t 變量的位置來到了鏈表的尾節點。
  • 根據之前的分析,t->next = head 將尾節點和頭節點相連后,形成一條循環鏈表。
  • 接著判斷旋轉的次數,當經過 k 次旋轉后,如果節點的位置沒有發生任何變化,則不需要再進行處理,直接返回即可。其中 int n = k % cnt;n == 0 時,表示位置未發生變化。
  • 根據之前分析的結果,利用循環從鏈表當前頭節點開始移動,移動(頭節點移動鏈表節點總數 - 移動的步數 k)后到達新的尾節點位置。
  • 那么新的尾節點的下一個節點就是新的頭節點。
  • 最后返回頭節點即可。

解題代碼

c/c++
#include <vector>struct ListNode
{int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
};class Solution
{
public:ListNode *rotateRight(ListNode *head, int k){if (!head || !head->next || k == 0)return head;int cnt = 1;ListNode *t = head;while (t->next){++cnt;t = t->next;}t->next = head;int n = k % cnt;if (n == 0){t->next = nullptr;return head;}ListNode *nTail = head;int setp = cnt - n - 1;while (setp){nTail = nTail->next;--setp;}head = nTail->next;nTail->next = nullptr;return head;}
};
golang
package maintype ListNode struct {Val  intNext *ListNode
}func rotateRight(head *ListNode, k int) *ListNode {if head == nil || head.Next == nil || k == 0 {return head}cnt := 1t := headfor t.Next != nil {cnt++t = t.Next}t.Next = headn := k % cntif n == 0 {t.Next = nilreturn head}setp := cnt - n - 1nTail := headfor setp != 0 {nTail = nTail.Nextsetp--}head = nTail.NextnTail.Next = nilreturn head
}
lua
local ListNode = {}function ListNode:new(val, next)local obj = {}setmetatable(obj, self)self.__index = selfobj.Val = val or 0obj.Next = next or nilreturn obj
endlocal function rotateRight(head, k)if head == nil or head.Next == nil or k == 0 thenreturn headendlocal cnt = 1local t = headwhile t.Next ~= nil docnt = cnt + 1t = t.Nextendt.Next = headlocal n = k % cntif n == 0 thent.Next = nilreturn headendlocal nTail = headlocal setp = cnt - n - 1while setp ~= 0 donTail = nTail.Nextsetp = setp - 1endhead = nTail.NextnTail.Next = nilreturn head
end

🌺🌺🌺撒花!

如果本文對你有幫助,就點關注或者留個👍
如果您有任何技術問題或者需要更多其他的內容,請隨時向我提問。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70442.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70442.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70442.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

51單片機-按鍵

1、獨立按鍵 1.1、按鍵介紹 輕觸開關是一種電子開關&#xff0c;使用時&#xff0c;輕輕按開關按鈕就可使開關接通&#xff0c;當松開手時&#xff0c;開關斷開。 1.2、獨立按鍵原理 按鍵在閉合和斷開時&#xff0c;觸點會存在抖動現象。P2\P3\P1都是準雙向IO口&#xff0c;…

BFS 和 DFS(深度優先搜索、廣度優先搜索)

深度優先搜索&#xff08;DFS&#xff09;和廣度優先搜索&#xff08;BFS&#xff09;是兩種常用的圖遍歷算法&#xff0c;用于解決圖相關的問題。它們在搜索問題中具有廣泛的應用&#xff0c;如路徑搜索、連通性檢測等。 以下是具體區別&#xff1a; &#xff08;圖片引自&am…

推薦幾款較好的開源成熟框架

一. 若依&#xff1a; 1. 官方網站&#xff1a;https://doc.ruoyi.vip/ruoyi/ 2. 若依SpringBootVueElement 的后臺管理系統&#xff1a;https://gitee.com/y_project/RuoYi-Vue 3. 若依SpringBootVueElement 的后臺管理系統&#xff1a;https://gitee.com/y_project/RuoYi-Cl…

根據音頻中的不同講述人聲音進行分離音頻 | 基于ai的說話人聲音分離項目

0.研究背景 在實際的開發中可能會遇到這樣的問題&#xff0c;老板讓你把音頻中的每個講話人的聲音分離成不同的音頻片段。你可以使用au等專業的音頻處理軟件手動分離。但是這樣效率太慢了&#xff0c;現在ai這么發達&#xff0c;我們能否借助ai之力來分離一條音頻中的不同的說…

本地化部署 DeepSeek:從零到一的完整指南

本地化部署 DeepSeek&#xff1a;從零到一的完整指南 個人主頁&#xff1a;顧漂亮 文章專欄&#xff1a;AI學習 目錄 引言什么是 DeepSeek&#xff1f;為什么選擇本地化部署&#xff1f;DeepSeek 本地化部署的前期準備 硬件需求軟件需求環境配置 DeepSeek 本地化部署步驟 步驟…

使用ArcGIS Pro自動矢量化水系

在地理信息系統&#xff08;GIS&#xff09;領域&#xff0c;自動矢量化是一項至關重要的技術&#xff0c;它能夠將柵格圖像中的要素轉換為矢量數據&#xff0c;從而方便后續的分析和處理。本文將詳細介紹如何使用ArcGIS Pro自動矢量化水系&#xff0c;適用于那些顏色相對統一、…

C++類和對象進階:初始化列表和static成員深度詳解

C類和對象&#xff1a;初始化列表和static成員深度詳解 1. 前言2. 構造函數初始化成員變量的方式2.1 構造函數體內賦值2.2 初始化列表2.2.1 初始化列表的注意事項 2.3 初始化列表的初始化順序 3. 類的靜態成員3.1 引入3.2 靜態成員變量3.3 靜態成員函數3.4 靜態成員的注意事項3…

ubuntu ffmpeg 安裝踩坑

ffmpeg 安裝踩坑 安裝命令: sudo apt update sudo apt install ffmpeg如果以上命令沒有報錯&#xff0c;那么恭喜你很幸運&#xff0c;可以關閉這篇文章了&#xff01; 如果跟我一樣&#xff0c;遇到如下報錯&#xff0c;可以接著往下看&#xff1a; 報錯信息&#xff1a; …

第13章 int指令

目錄 13.1 int 指令13.2 編寫供應用程序調用的中斷例程13.3 對int、iret和棧的深入理解13.4 BIOS和DOS所提供的中斷例程13.5 BIOS和DOS中斷例程的安裝過程13.6 BIOS中斷例程應用13.7 DOS中斷例程應用實驗13 編寫、應用中斷例程 中斷信息可以來自CPU的內部和外部&#xff0c;當C…

最新扣子(Coze)案例教程:全自動DeepSeek 寫影評+批量生成 + 發布飛書,提效10 倍!手把手教學,完全免費教程

&#x1f468;?&#x1f4bb;群里有同學是做影視賽道的博主&#xff0c;聽說最近DeepSeek這么火&#xff0c;咨詢能不能用DeepSeek寫影評&#xff0c;并整理電影數據資料&#xff0c;自動發布到飛書文檔&#xff0c;把每天的工作做成一個自動化的流程。 那今天斜杠君就為大家…

DeepSeek 提示詞:定義、作用、分類與設計原則

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;精通Java編…

鳥語林-論壇系統自動化測試

文章目錄 一、自動化實施步驟1.1編寫Web測試用例1.2 編寫自動化代碼1.2.1 LoginPageTest1) 能否正確打開登錄頁面2) 點擊去注冊能否跳轉注冊頁面3) 模擬用戶登錄&#xff0c;輸入多組登錄測試用例 1.2.2 RegisterPageTest1) 能否成功打開注冊頁面2) 注冊測試用例3) 點擊去登錄按…

DeepSeek模型量化

技術背景 大語言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;&#xff0c;可以通過量化&#xff08;Quantization&#xff09;操作來節約內存/顯存的使用&#xff0c;并且降低了通訊開銷&#xff0c;進而達到加速模型推理的效果。常見的就是把Float16的浮…

本周行情——250222

本周A股行情展望與策略 結合近期盤面特征及市場主線演化&#xff0c;本周A股預計延續結構性分化行情&#xff0c;科技成長與政策催化板塊仍是資金主戰場&#xff0c;但需警惕高標股分歧帶來的波動。以下是具體分析與策略建議&#xff1a; 1. 行情核心驅動因素 主線延續性&…

【JT/T 808協議】808 協議開發筆記 ② ( 終端注冊 | 終端注冊應答 | 字符編碼轉換網站 )

文章目錄 一、消息頭 數據1、消息頭拼接2、消息 ID 字段3、消息體屬性 字段4、終端手機號 字段5、終端流水號 字段 二、消息體 數據三、校驗碼計算四、最終計算結果五、終端注冊應答1、分解終端應答數據2、終端應答 消息體 數據 六、字符編碼轉換網站 一、消息頭 數據 1、消息頭…

使用ezuikit-js封裝一個對接攝像頭的組件

ezuikit-js 是一個基于 JavaScript 的視頻播放庫&#xff0c;主要用于在網頁中嵌入實時視頻流播放功能。它通常用于與支持 RTSP、RTMP、HLS 等協議的攝像頭或視頻流服務器進行交互&#xff0c;提供流暢的視頻播放體驗。 主要功能 多協議支持&#xff1a;支持 RTSP、RTMP、HLS …

一周學會Flask3 Python Web開發-flask3模塊化blueprint配置

鋒哥原創的Flask3 Python Web開發 Flask3視頻教程&#xff1a; 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 我們在項目開發的時候&#xff0c;多多少少會劃分幾個或者幾十個業務模塊&#xff0c;如果把這些模塊的視圖方法都寫在app.py…

DSC數字選擇性呼叫

GMDSS Digital Selective Calling WAVECOM Decoder Online Help 12.0.0 VHF Marine GMDSS/DSC Decode & Scicos Simulation Black Cat Systems &#xff08;一&#xff09;DSC調制方式 DSC&#xff08;Digital Selective Calling&#xff0c;數字選擇性呼叫&#xff0…

科普:你的筆記本電腦中有三個IP:127.0.0.1、無線網 IP 和局域網 IP;兩個域名:localhost和host.docker.internal

三個IP 你的筆記本電腦中有三個IP&#xff1a;127.0.0.1、無線網 IP 和局域網 IP。 在不同的場景下&#xff0c;需要選用不同的 IP 地址&#xff0c;如下為各自的特點及適用場景&#xff1a; 127.0.0.1&#xff08;回環地址&#xff09; 特點 127.0.0.1 是一個特殊的 IP 地…

《AI與NLP:開啟元宇宙社交互動新紀元》

在科技飛速發展的當下&#xff0c;元宇宙正從概念逐步走向現實&#xff0c;成為人們關注的焦點。而在元宇宙諸多令人矚目的特性中&#xff0c;社交互動體驗是其核心魅力之一。人工智能&#xff08;AI&#xff09;與自然語言處理&#xff08;NLP&#xff09;技術的迅猛發展&…