LeetCode--38.外觀數列

前言:之前我不是說,我后續可能會講一下遞歸嗎,現在它來了,這道題會用到回溯的方法,并且比較純粹哦

解題思路:

? ? ? ? 1.獲取信息:(下面這些信息差不多是力扣上面的題目信息了,所以我這一環節在這次題解中的意義不大)

? ? ? ? ? ? ? ? 外觀數列是一個數位字符串序列,由遞歸公式定義:

  • countAndSay(1) = "1"
  • countAndSay(n)?是?countAndSay(n-1)?的行程長度編碼。

? ? ? ? ? ? ? ? 行程長度編碼(RLE)是一種字符串壓縮方法,其工作原理是通過將連續相同字符(重復兩次或更多次)替換為字符重復次數(運行長度)和字符的串聯。例如,要壓縮字符串?"3322251"?,我們將?"33"?用?"23"?替換,將?"222"?用?"32"?替換,將?"5"?用?"15"?替換并將?"1"?用?"11"?替換。因此壓縮后字符串變為?"23321511"

? ? ? ? ? ? ? ? 要求給定一個整數n,返回外觀數列的第n個元素,即返回遞歸公式代入n后的值

? ? ? ? 2.分析題目:

? ? ? ? ? ? ? ? 它給出了遞歸公式,就是提醒你,可以使用遞歸來解決這道題

? ? ? ? ? ? ? ? 并且說明了行程長度編碼壓縮字符串的原理,更方便你理解了嘛

? ? ? ? ? ? ? ? 現在來講一下遞歸:(你可以結合我下面代碼來進行理解)

? ? ? ? ? ? ? ? 我們都知道,那些使用遞歸的題中,一般一個函數里面是嵌套著一個相同的函數對吧

? ? ? ? ? ? ? ? 例如 Find()函數里面套一個Find()函數

? ? ? ? ? ? ? ? 這就是遞歸的關鍵之一,你可以理解成,里面套著的那個函數是開啟外面這個函數的“鑰匙”

? ? ? ? ? ? ? ? 現在,外面里面有了一個嵌套的函數對吧,那么在代碼執行到那個嵌套的函數時,我們知道,代碼是一段一段執行的,對吧,那么在執行完這個嵌套的函數之前,下面的代碼它是不會執行的對吧,所以在獲取到“鑰匙”之前,下面的代碼是不會進行操作的

? ? ? ? ? ? ? ? 那么,你是不是可以講它看作是一個深入的過程,它在深入到一定程度后,就會結束,即:獲取到“鑰匙”,就會開始執行下面的代碼,即開始執行外部函數

? ? ? ? ? ? ? ? 那么它深入地程度,你可以來進行規定,比如設置一個條件,滿足這個條件就返回,就可以返回較淺的層面

? ? ? ? ? ? ? ? 這樣的話,就有了很多鉆空子的操作,我舉一個現實的例子來抽象地說一下吧

? ? ? ? ? ? ? ? 比如一個車間需要加工一把椅子,老板給你說,讓你安排一下,做好了就把自己白富美的女兒嫁給你,讓你走上人生巔峰

? ? ? ? ? ? ? ? 你現在要做一把椅子,你知道需要椅子的腿,椅子的靠背,椅子的墊子來組成椅子

? ? ? ? ? ? ? ? 你沒有這些東西,你就算知道怎么把它們組合起來,也不能操作,因為巧婦難為無米之炊(這就是我說的,缺少“鑰匙”,你不能進行外部函數下面的代碼操作)

? ? ? ? ? ? ? ? 這個時候就需要這些東西對吧,那你就需要再加一個更深層次的步驟,將自己的需求傳遞給這個更深層次的部門

? ? ? ? ? ? ? ? 這個更深層次的部門的操作就是將木材加工成上述東西,但是又沒有木材,也不能開啟它們的操作

? ? ? ? ? ? ? ? 需要木材,我們知道,木材就是這次加工的最底線了,對吧,這個底線是人為規定的,意思就是我們希望它是底線,那就是底線,這里就是我說的,深入到一定程度時,需要一個條件來阻止它繼續深入,你可以理解成,這個工廠才是你考慮得范圍,至于木材怎么來的,你不用管,你只用管你該管的范圍,即:題目要求的范圍

? ? ? ? ? ? ? ? 現在我們取得了木材,那么就返回到了較淺的步驟,就是加工木材的步驟,工人獲取了木材,即:“鑰匙”,那就可以進行后續操作了,它們進行后續操作了之后,就返回他們加工的東西

? ? ? ? ? ? ? ? 我現在獲得了組合椅子需要的東西,現在我就可以進行我下面的操作了,我完成了之后,就是結果了,可以交給老板驗貨

? ? ? ? ? ? ? ? 迎娶白富美,走上人生巔峰,畢竟,人人都想成為達叔,軟飯硬吃

? ? ? ? 3.示例查驗:?

? ? ? ? ? ? ? ? 你可以結合示例,來品味一下遞歸,(上面說的,其實比較偏向回溯,但遞歸的核心思想還是不會變的)

? ? ? ? 4.嘗試編寫代碼:

? ? ? ? ? ? ? ? (1)回溯法

? ? ? ? ? ? ? ? ? ? ? ? 思路就不過多闡述了,這道題比較純粹,就直接上代碼了

class Solution {
public:string countAndSay(int n) {if(n==1)return "1";string str=countAndSay(n-1),res;int num=1,size=str.size();for(int i=1;i<=size;i++){if(i==size){res+=(num+'0');res+=str[i-1];break;}if(str[i]==str[i-1])num++;else{res+=(num+'0');res+=str[i-1];num=1;}}return res;}
};

? ? ? ? ? ? ? ? (2)打表嘛

? ? ? ? ? ? ? ? ? ? ? ? 思路:給出了n的范圍是1到30,那你直接把1到30每個數得到的結果列舉出來,輸入n后,直接返回對應結果就可以了,這里就不寫代碼了,太麻煩了

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

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

相關文章

服務器的安裝與安全設置

1&#xff1a;安裝操作系統 1、創建虛擬機Win49&#xff08;49為序號&#xff09;&#xff0c;并安裝Windows Server 2019操作系統 參考配置&#xff1a;安裝系統的分區大小為20GB&#xff0c;其余分區暫不劃分&#xff0c; 文件系統格式為NTFS&#…

Sensodrive SensoJoint機器人力控關節模組抗振動+Sensodrive力反饋系統精準對接

Sensodrive成立于2003年&#xff0c;起源于德國航空航天中心&#xff08;DLR&#xff09;的LBR項目。公司由一批傳感器技術專家創立&#xff0c;專注于高精度工業扭矩傳感器的研發。憑借二十余年的技術積累&#xff0c;Sensodrive將DLR輕型機器人扭矩技術引入工業領域&#xff…

【AI實踐】Mac一天熟悉AI模型智能體應用(百煉版)

25.6.29增加Gummy 實時/一句話語音識別25.6.28增加Qwen TTS本地音頻和實時播報 背景 準備環境 MacOS M1電腦&#xff08;其他M系列芯片也可以&#xff09; 為了方便python的使用環境&#xff0c;使用Miniconda&#xff1a;下載鏈接&#xff1a;Download Anaconda Distribution…

WEB安全--Java安全--jsp webshell免殺1

1.1、BCEL ClassLoader 介紹&#xff08;僅適用于BCEL 6.0以下&#xff09;&#xff1a; BCEL&#xff08;Apache Commons BCEL?&#xff09;是一個用于分析、創建和操縱Java類文件的工具庫&#xff1b;BCEL的類加載器在解析類名時會對ClassName中有$$BCEL$$標識的類做特殊處…

Valkey與Redis評估對比:開源替代方案的技術演進

#作者&#xff1a;朱雷 文章目錄 1 概述1.1內存數據結構存儲核心特性1.2主流內存數據結構存儲設計與適用場景1.3目前主流內存數據結構存儲對比 2 Valkey 說明2.1 哨兵架構設計2.2 集群架構設計2.3 valkey 使用企業和業內生態? 3 評估指標4 評估結果 1 概述 內存數據結構存儲…

華為云Flexus+DeepSeek征文 | 基于華為云ModelArts Studio安裝NoteGen AI筆記應用程序

華為云FlexusDeepSeek征文 | 基于華為云ModelArts Studio安裝NoteGen AI筆記應用程序 引言一、ModelArts Studio平臺介紹華為云ModelArts Studio簡介ModelArts Studio主要特點 二、NoteGen介紹NoteGen簡介主要特點 三、安裝NoteGen工具下載NoteGen軟件安裝NoteGen工具 四、開通…

BUUCTF在線評測-練習場-WebCTF習題[BJDCTF2020]Easy MD51-flag獲取、解析

解題思路 打開靶場&#xff0c;有個提交框&#xff0c;輸入后url會出現我們提交的參數password http://a48577ed-9a1c-4751-aba0-ae99f1eb8143.node5.buuoj.cn:81/leveldo4.php?password123 查看源碼并沒用發現什么貓膩&#xff0c;抓包在響應頭發現了貓膩 hint: select * …

面向對象三大特性深度解析:封裝、繼承與多態

面向對象三大特性深度解析&#xff1a;封裝、繼承與多態 思維導圖概覽 #mermaid-svg-v2u0XIzKotjyXYei {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-v2u0XIzKotjyXYei .error-icon{fill:#552222;}#mermaid-svg-v2…

mmap映射物理內存之三invalid cache

目錄 流程設計 invalid 命令 內核態invalid 內核態invalid&#xff0c;用戶態mmap物理地址 PAN機制 PAN機制歷程 硬件支持 ARMv8.1-PAN 特性 Linux 內核的適配 軟件模擬 PAN&#xff08;SW PAN&#xff09; 背景 Linux 的實現 總結 前述刷新cache的流程也同樣可…

記憶化搜索(dfs+memo)無環有向圖

這是一道可以當作板子的極簡記憶化搜索 建立a 是鄰接表&#xff0c;其中 a[x] 存儲從節點 x 出發能到達的所有節點。 b[x] 記錄從節點 x 出發的所有邊的權重之和。根據數學原理&#xff0c;我們很容易發現&#xff0c;一個根&#xff08;起點&#xff09;的期望&#xff0c;等…

使用AI豆包寫一個車輛信息管理頁面

記錄一個基本的車輛信息管理頁面&#xff0c;由豆包撰寫完成&#xff0c;只需要微調頁面即可。 主要功能是車輛信息的查詢、新增、編輯&#xff0c;項目用到了uniapp、vue3、ts、uni-ui、z-paging 頁面效果如下&#xff1a; 以上界面均由豆包生成&#xff0c;完成度非常高&am…

《HarmonyOSNext應用防崩指南:30秒定位JS Crash的破案手冊》

《HarmonyOSNext應用防崩指南&#xff1a;30秒定位JS Crash的破案手冊》 ##Harmony OS Next ##Ark Ts ##教育 本文適用于教育科普行業進行學習&#xff0c;有錯誤之處請指出我會修改。 &#x1f4a5; 哇哦&#xff01;JS Crash崩潰日志完全解析手冊 當你的應用突然閃退時&am…

閱讀筆記(3) 單層網絡:回歸(下)

閱讀筆記(3) 單層網絡:回歸(下) 該筆記是DataWhale組隊學習計劃&#xff08;共度AI新圣經&#xff1a;深度學習基礎與概念&#xff09;的Task03 以下內容為個人理解&#xff0c;可能存在不準確或疏漏之處&#xff0c;請以教材為主。 1. 為什么書上要提到決策理論&#xff1f; …

Mac OS系統每次開機啟動后,提示:輸入密碼來解鎖磁盤“Data”,去除提示的解決方法

問題描述&#xff1a; Mac mini外接了一個磁盤&#xff08;EX_Mac&#xff09;為默認使用的系統盤&#xff0c;內置的硬盤&#xff08;Macintosh HD&#xff09;為Mac mini自帶的系統盤 外置硬盤系統每次開機都會掛載內置磁盤&#xff0c;同時會提示需要輸入密碼來解鎖磁盤“…

CSS Flex 布局中flex-shrink: 0使用

flex-shrink: 0 是 CSS Flexbox 布局中的一個關鍵屬性&#xff0c;用于禁止彈性項目&#xff08;flex item&#xff09;在容器空間不足時被壓縮。以下是詳細解釋和示例&#xff1a; 核心作用 當容器的可用空間小于所有彈性項目的總寬度&#xff08;或高度&#xff09;時&#…

WHERE 子句中使用子查詢:深度解析與最佳實踐

&#x1f50d; WHERE 子句中使用子查詢&#xff1a;深度解析與最佳實踐 在 WHERE 子句中使用子查詢是 SQL 的高階技巧&#xff0c;可實現動態條件過濾。以下是全面指南&#xff0c;涵蓋語法、類型、陷阱及優化策略&#xff1a; &#x1f4dc; 一、基礎語法結構 SELECT 列 FR…

從0到1:不文明現象隨手拍小程序開發日記(一)

前期調研 不文明現象隨手拍小程序&#xff1a;在城市的快速發展進程中&#xff0c;不文明現象時有發生&#xff0c;為了有效解決這一問題&#xff0c;提升城市文明程度&#xff0c; 市民若發現不文明行為&#xff0c;如亂扔垃圾、隨地吐痰、破壞公共設施、違規停車等&#xff…

STM32F103之SPI軟件讀寫W25Q64

一、W25Q64簡介 1.1 簡介 W25Q64(Nor flash)、 24位地址&#xff0c;64Mbit/8MByte、是一種低成本、小型化、使用簡單的非易失性存儲器&#xff0c;常用于數據存儲、字庫存儲、固件程序存儲等場景 時鐘頻率&#xff1a;最大80MHz(STM32F103系統時鐘為72MHz…

vue3+element-plus 組件功能實現 上傳功能

一、整體功能概述 這段代碼實現了一個基于 Vue 3 和 Element Plus 組件庫的文件導入及預覽功能模塊。主要包含了一個主導入對話框&#xff08;用于上傳文件、展示文件相關信息、進行導入操作等&#xff09;以及一個用于預覽文件內容的預覽對話框。支持導入特定格式&#xff08;…

OpenCV中創建Mat對象

第1章 創建Mat對象 1.1. 創建空的 Mat 對象 cv::Mat mat; 1.2. 創建灰度圖像 // 創建一個 3 行 4 列、8位無符號單通道矩陣&#xff08;相當于灰度圖&#xff09; cv::Mat mat(3, 4, CV_8UC1); 1.3. 創建彩色圖像 // 創建三通道矩陣&#xff08;相當于彩色圖像&#xff0…