前言

就如同標(biāo)題一樣,這篇文章將會(huì)靈活的運(yùn)行Array對(duì)象的一些方法來實(shí)現(xiàn)看上去較復(fù)雜的應(yīng)用。

大家都知道Array實(shí)例有這四個(gè)方法:push、pop、shift、unshift。大家也都知道 push + pop實(shí)現(xiàn)棧, shift + push實(shí)現(xiàn)隊(duì)列。在這里不討論什么先進(jìn)后出、先進(jìn)先出。但一面這個(gè)題將要用到這幾個(gè)方法。

題目

螺旋矩陣這個(gè)名詞,在后臺(tái)語言中可能很熟悉,他是個(gè)二維數(shù)組,他有什么特點(diǎn)呢?請(qǐng)看下圖:

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

以上是一個(gè)從外到內(nèi)的螺旋矩陣,他的排列規(guī)則是從外圍開始走,一圈一圈繞道最里面,就像一條盤旋著的蛇。

分析與解答

進(jìn)入正題,今年9月份騰訊校招在線筆試題就有一個(gè)螺旋矩陣的 題,傳入給定數(shù)字n,打印出n*n的螺旋矩陣,當(dāng)時(shí)本菜鳥并沒有做出來,時(shí)間過后自己在電腦上想,然后恍然大悟明白的其中的奧妙。

雖然博主沒有記錄當(dāng)時(shí)的代碼,但是我是首先定義了個(gè)n*n的二維數(shù)組,得到需要繞幾層,比如上面的是2層,然后就循環(huán)幾次,在內(nèi)部用四個(gè)for循環(huán),分別是上下左右給定義的二維數(shù)組插內(nèi)容,具體的代碼就沒法上了,反正方法很笨,而且并不是本文章的重點(diǎn),下面進(jìn)入本章主題:

前幾天我在codewars上做題,遇到了個(gè)螺旋矩陣的題,它是要求寫一個(gè)函數(shù),給定一個(gè)矩陣二維數(shù)組參數(shù),返回一個(gè)數(shù)組,該數(shù)組的元素順序就是螺旋矩陣的路徑。

例如:

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

function getLinear (spiral) {  //...做一些操作  }var arr = [
    [1,2,3],
    [4,5,6],
    [7,8,9]
]

getLinear(arr)   // 返回 [1,2,3,6,9,8,7,4,
        
		

網(wǎng)友評(píng)論