矩陣系列算法題

1.轉(zhuǎn)圈打印矩陣

【題目】給定一個(gè)整型矩陣matrix,請(qǐng)按照轉(zhuǎn)圈的方式打印它。例如:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
打印結(jié)果為:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,
10
【要求】額外空間復(fù)雜度為O(1)。
【思路】以圈為單位,獲取左上角和右下角的點(diǎn)的坐標(biāo),依次打印,然后更新左上角和右下角的坐標(biāo),以此往復(fù)。

2.將矩陣按順時(shí)針方向旋轉(zhuǎn)90°

【要求】不要額外空間,原地旋轉(zhuǎn)
【思路】分圈旋轉(zhuǎn)

3.“之”字形打印矩陣

【題目】給定一個(gè)矩陣matrix,按照“之”字形的方式打印這個(gè)矩陣,例如:
1 2 3 4
5 6 7 8
9 10 11 12
“之”字形打印的結(jié)果為:1,2,5,9,6,3,4,7,10,11,8,12
【要求】額外空間復(fù)雜度為O(1)。
【思路】兩個(gè)指針a和b,a和b每次走一步,a向右走,到達(dá)邊界后往下走,b向下走,到達(dá)邊界后往右走。用一個(gè)bool值標(biāo)記打印方向。

4.在行列都排好序的矩陣中找數(shù)

【題目】給定一個(gè)有N*M的整型矩陣matrix和一個(gè)整數(shù)K,matrix的每一行和每一列都是排好序的。實(shí)現(xiàn)一個(gè)函數(shù),判斷K是否在matrix中。
例如:
0 1 2 5
2 3 4 7
4 4 4 8
5 7 7 9
如果K為7,返回true;如果K為6,返回false。
【要求】時(shí)間復(fù)雜度為O(N+M),額外空間復(fù)雜度為O(1)。
【思路】從右上角(或者左上角)開始一一進(jìn)行比較,先往左,再往下走,依次淘汰行和列。

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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