劍指Offer算法題解20-29

20 表示數(shù)值的字符串? 馬上解題

題目描述

true:"+100","5e2","-123","3.1416","-1E-16"

false:"12e","1a3.14","1.2.3","+-5","12e+4.3"

解題思路

使用正則表達(dá)式進(jìn)行匹配。

[]? : 字符集合

()? : 分組

?? : 重復(fù) 0 ~ 1 次

+? : 重復(fù) 1 ~ n 次

*? : 重復(fù) 0 ~ n 次

.? : 任意字符

\\. : 轉(zhuǎn)義后的 .

\\d : 數(shù)字


21 調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面? 馬上解題

題目描述

需要保證奇數(shù)和奇數(shù),偶數(shù)和偶數(shù)之間的相對(duì)位置不變。

解題思路

方法一:創(chuàng)建一個(gè)新數(shù)組,時(shí)間復(fù)雜度 O(N),空間復(fù)雜度 O(N)。

方法二:使用冒泡思想,每次都當(dāng)前偶數(shù)上浮到當(dāng)前最右邊。時(shí)間復(fù)雜度 O(N2),空間復(fù)雜度 O(1),時(shí)間換空間。

代碼

方法一:

方法二:


22 鏈表中倒數(shù)第 K 個(gè)結(jié)點(diǎn)? 馬上解題

解題思路

設(shè)鏈表的長(zhǎng)度為 N。設(shè)置兩個(gè)指針 P1 和 P2,先讓 P1 移動(dòng) K 個(gè)節(jié)點(diǎn),則還有 N - K 個(gè)節(jié)點(diǎn)可以移動(dòng)。此時(shí)讓 P1 和 P2 同時(shí)移動(dòng),可以知道當(dāng) P1 移動(dòng)到鏈表結(jié)尾時(shí),P2 移動(dòng)到第 N - K 個(gè)節(jié)點(diǎn)處,該位置就是倒數(shù)第 K 個(gè)節(jié)點(diǎn)。

代碼


23 鏈表中環(huán)的入口結(jié)點(diǎn)? 馬上解題

題目描述

一個(gè)鏈表中包含環(huán),請(qǐng)找出該鏈表的環(huán)的入口結(jié)點(diǎn)。要求不能使用額外的空間。

解題思路

使用雙指針,一個(gè)指針 fast 每次移動(dòng)兩個(gè)節(jié)點(diǎn),一個(gè)指針 slow 每次移動(dòng)一個(gè)節(jié)點(diǎn)。因?yàn)榇嬖诃h(huán),所以?xún)蓚€(gè)指針必定相遇在環(huán)中的某個(gè)節(jié)點(diǎn)上。假設(shè)相遇點(diǎn)在下圖的 z1 位置,此時(shí) fast 移動(dòng)的節(jié)點(diǎn)數(shù)為 x+2y+z,slow 為 x+y,由于 fast 速度比 slow 快一倍,因此 x+2y+z=2(x+y),得到 x=z。

在相遇點(diǎn),slow 要到環(huán)的入口點(diǎn)還需要移動(dòng) z 個(gè)節(jié)點(diǎn),如果讓 fast 重新從頭開(kāi)始移動(dòng),并且速度變?yōu)槊看我苿?dòng)一個(gè)節(jié)點(diǎn),那么它到環(huán)入口點(diǎn)還需要移動(dòng) x 個(gè)節(jié)點(diǎn)。在上面已經(jīng)推導(dǎo)出 x=z,因此 fast 和 slow 將在環(huán)入口點(diǎn)相遇。

代碼

24?反轉(zhuǎn)鏈表? 馬上解題

代碼

(1)遞歸

(2)頭插法

25?合并兩個(gè)排序的鏈表? 馬上解題

題目描述

代碼

(1)遞歸

(

(2)迭代

26 樹(shù)的子結(jié)構(gòu)? 馬上解題

題目描述

代碼


27 二叉樹(shù)的鏡像? 馬上解題

題目描述

代碼


28 對(duì)稱(chēng)的二叉樹(shù)? 馬上解題

題目描述

代碼


29 順時(shí)針打印矩陣? 馬上解題

題目描述

下圖的矩陣順時(shí)針打印結(jié)果為:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10

代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容