精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我們一起聊聊順時針打印矩陣

開發 前端
有一個矩陣,如何按照從外向里以順時針的順序依次打印出每一個元素?本文將跟大家分享下這個算法。

梳理思路

當我們遇到一個復雜的問題時,可以通過舉例將它畫出來,這樣就可以更直觀的發現規律。那么我們就先構造一個矩陣出來,如下所示:

const matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
];

順時針訪問一個矩陣,那么它的訪問過程就如下圖所示:

圖片

觀察上圖后,我們可以很明顯的知道可以通過一個循環來打印這個矩陣,每次打印矩陣的一個圈,那么循環的終止條件是什么呢?

接下來,我們就來分析下循環的終止條件。假設矩陣的行數為rows,列數為cols,打印第一圈的左上角坐標是(0,0),第二圈的左上角坐標是(1,1),以此類推,我們注意到左上角的坐標中,行標與列標總是相同的,于是可以在矩陣中選取左上角為(start,start)的一圈作為我們的分析目標。

圖片

我們再來多列舉幾個例子觀察下,例如:

  • 對于5*5的矩陣而言,最后一圈只有1個數字,對應的坐標為(2,2)
  • 對于6*6的矩陣而言,最后一圈有4個數字,其左上角的坐標依然為(2,2)

圖片

據上所述,我們可以發現:5 > 2 * 2、6 > 2 * 2?全部成立,于是可以得出讓循環終止的條件為:cols > start * 2 && rows > start * 2。

接下來,我們來分析下如何實現打印一圈,前面的分析中我們已經知道了打印1圈需要4步,即:

  • 從左到右打印一行
  • 從上到下打印一列
  • 從右到左打印一行
  • 從下到上打印一列

每一步我們根據起始坐標和終止坐標用一個循環就能打印出一行或者一列,但是最后一圈有可能退化成只有一行、只有一列,甚至只有一個數字,因此打印這樣的一圈就不再需要四步。可能只需要三步、兩步甚至一步。

我們來分析下每一步的執行條件:

  • 第一步是必須的,因為打印一圈至少有一步

start作為行坐標

從start位置開始遍歷至終止列號,將其作為列坐標

輸出每一個元素

圖片

  • 第二步要求圈內至少有2行,即:終止行號大于起始行號

從start+1位置遍歷至至終止行號,將其作為行坐標

終止列號作為列坐標

輸出每一個元素

圖片

  • 第三步要求圈內至少有兩行兩列,即:終止行號大于起始行號且終止列號大于起始列號

從終止列號-1位置遍歷至start,將其作為列坐標

終止行號作為行坐標

輸出每一個元素

圖片

  • 第四步要求圈內至少有三行兩列,即:終止行號比起始行號至少大2,同時終止列號大于起始列號

從終止行號-1位置遍歷至start+1位置,將其作為行坐標

start作為列坐標

輸出每一個元素

圖片

實現代碼

經過上面的分析,我們已經有了縝密的邏輯,接下來我們就可以愉快地進行編碼了,如下所示:

// 順時針打印矩陣
export function PrintMatrix<T>(
matrix: Array<Array<T>>,
cols: number,
rows: number
): void {
if (matrix == null || cols == null || rows == null) return;
// 圈數
let start = 0;
while (cols > start * 2 && rows > start * 2) {
// 打印每一圈的數據
PrintMatrixInCircle(matrix, cols, rows, start);
start++;
}
}

// 打印矩陣的一圈
function PrintMatrixInCircle<T>(
matrix: Array<Array<T>>,
cols: number,
rows: number,
start: number
): void {
// 計算當前圈結束點坐標(索引從0開始,所以需要-1)
// 終止列號
const endX = cols - 1 - start;
// 終止行號
const endY = rows - 1 - start;
// 從左到右打印一行
for (let i = start; i <= endX; i++) {
console.log(matrix[start][i]);
}

// 從上到下打印一列
if (start < endY) {
// 此時:
// 最后一列已經在從左到右的打印中讀取了
for (let i = start + 1; i <= endY; i++) {
console.log(matrix[i][endX]);
}
}

// 從右到左打印一行
if (start < endX && start < endY) {
// 此時:
// 最后一列已經在從上到下的打印中讀取了
for (let i = endX - 1; i >= start; i--) {
console.log(matrix[endY][i]);
}
}

// 從下到上打印一列
if (start < endX && start < endY - 1) {
// 此時:
// 最后一列已經在從上到下的打印中讀取了
// 第一列的打印已經在從左到右的打印中讀取了
for (let i = endY - 1; i >= start + 1; i--) {
console.log(matrix[i][start]);
}
}
}

我們用前面所舉的例子來驗證下上述代碼能否正常執行,如下所示:

const matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
];

PrintMatrix(matrix, 4, 4);

示例代碼

本文所用代碼完整版請移步:

  • PrintMatrix.ts
  • printMatrix-test.ts
責任編輯:武曉燕 來源: 神奇的程序員
相關推薦

2021-11-30 14:10:32

順時針打印矩陣

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2023-06-30 08:18:51

敏捷開發模式

2022-05-24 08:21:16

數據安全API

2023-08-10 08:28:46

網絡編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-09-10 21:42:31

2023-07-27 07:46:51

SAFe團隊測試

2022-06-26 09:40:55

Django框架服務

2023-12-28 09:55:08

隊列數據結構存儲

2022-10-28 07:27:17

Netty異步Future

2022-11-12 12:33:38

CSS預處理器Sass

2022-02-14 07:03:31

網站安全MFA

2022-04-06 08:23:57

指針函數代碼

2025-03-27 02:00:00

SPIJava接口

2024-02-26 00:00:00

Go性能工具

2022-07-29 08:17:46

Java對象內存

2022-12-07 13:12:15

2022-01-04 12:08:46

設計接口
點贊
收藏

51CTO技術棧公眾號

国产一区二区三区在线观看| 精品黑人一区二区三区观看时间| 精品美女在线观看视频在线观看| 国产在线一区观看| 欧美激情影音先锋| 亚洲一区二区在线免费| 91伊人久久| 亚洲一区影音先锋| 精品伊人久久97| 免费在线观看毛片网站| 黄色动漫在线观看| 91视频.com| 亚洲www永久成人夜色| 国产精品xxxx喷水欧美| 日韩精品一区二区久久| 亚洲国产欧美在线成人app| 天天操天天爽天天射| 欧美性受xxxx狂喷水| 日日摸夜夜添夜夜添精品视频| 久色乳综合思思在线视频| 久久精品一区二区免费播放| 国产一区二区| 欧洲激情一区二区| 男人用嘴添女人下身免费视频| 黄网站免费在线观看| 久久精品视频一区二区| 国产亚洲欧美另类一区二区三区| 亚洲午夜激情视频| 久久国产精品久久久久久电车| 欧美成人sm免费视频| 四虎成人免费影院| 亚洲激情77| 亚洲第一色在线| 99re6在线观看| 免费成人动漫| 欧美日韩美女视频| 日本福利视频一区| 欧美r级在线| 国内精品视频666| 国产91精品高潮白浆喷水| 美女毛片在线观看| 久久99精品国产自在现线| 制服丝袜亚洲精品中文字幕| 日本888xxxx| 中文字幕资源网在线观看免费| 一区二区三区自拍| 粉嫩av一区二区三区天美传媒| 日本三级在线视频| 国产精品福利一区二区三区| 日本公妇乱淫免费视频一区三区| 无码视频一区二区三区| 精品产国自在拍| 欧美日韩大陆一区二区| 密臀av一区二区三区| av高清不卡| 色综合天天综合网天天看片| 国产极品美女高潮无套久久久| 亚洲美女尤物影院| 精品久久久久久国产91| 和岳每晚弄的高潮嗷嗷叫视频| 精品一性一色一乱农村| 午夜欧美大尺度福利影院在线看| 僵尸世界大战2 在线播放| 9999精品成人免费毛片在线看| 亚洲国产日韩a在线播放| 国产免费裸体视频| 成人免费网站观看| 欧美日韩色婷婷| 97av中文字幕| 国产黄色大片在线观看| 最新成人av在线| 日本老太婆做爰视频| 91jq激情在线观看| 欧美日韩国产一中文字不卡| 国产日韩一区二区在线观看| 经典三级一区二区| 884aa四虎影成人精品一区| 日本在线视频播放| 影视先锋久久| 国产一区二区三区在线看| 国产成人精品视频免费| 中国成人一区| 97视频在线观看播放| 日韩欧美国产另类| 一二三区精品| 国产精品久久久久久久9999| 国产精品无码免费播放| 成人av在线网站| 亚洲va欧美va国产综合剧情| 噜噜噜久久,亚洲精品国产品| 久久夜色精品国产欧美乱极品| 3d蒂法精品啪啪一区二区免费| 久久影视中文字幕| 激情综合五月婷婷| 国产日韩二区| 欧美jizz18性欧美| 亚洲va欧美va国产va天堂影院| 日本va中文字幕| 日韩三级精品| 亚洲网站在线观看| 少妇被狂c下部羞羞漫画| 欧美人与物videos另类xxxxx| 亚洲国产中文字幕在线观看| 亚洲av无码一区二区三区人 | 国产一区二区三区黄视频| 好看的日韩精品| 免费不卡视频| 欧美性xxxxxxx| 亚洲AV无码久久精品国产一区| 性欧美xxxx免费岛国不卡电影| 久久久国产精品免费| 中文字幕一区二区人妻电影| 国产高清不卡一区| 亚洲在线视频一区二区| 无码小电影在线观看网站免费| 欧美一区二区三区日韩| 蜜桃久久精品乱码一区二区| 成人综合视频在线| 污污网站在线免费观看| 日韩理论片在线| 国产无套粉嫩白浆内谢的出处| 91久久偷偷做嫩草影院电| 中文字幕av一区二区三区谷原希美| 亚洲国产精品午夜在线观看| 国产综合色视频| 日韩精品久久久免费观看| h片视频在线观看| 91精品国产免费| 青青青视频在线播放| 国产亚洲一区在线| av蓝导航精品导航| 成人看片免费| 欧美日韩在线播放一区| 久久久久亚洲av成人无码电影| 99综合视频| 国产美女精品久久久| 色屁屁www国产馆在线观看| 欧美福利视频一区| 91禁男男在线观看| 免费观看日韩av| 色一情一乱一伦一区二区三区丨| 波多视频一区| 亚洲老头同性xxxxx| 亚洲第一精品在线观看| 91亚洲精品一区二区乱码| 成年人午夜免费视频| 超碰成人97| 久久久免费观看视频| 肥臀熟女一区二区三区| 亚洲高清免费一级二级三级| 俄罗斯黄色录像| 亚洲女娇小黑人粗硬| 久久频这里精品99香蕉| 日本精品一二区| 亚洲成人免费在线观看| 97人妻精品一区二区三区免费| 国内精品美女在线观看| 成人一区二区在线| 超碰在线网站| 亚洲精品美女久久久久| 亚洲日本韩国在线| 久久久久久黄色| 成年人在线观看视频免费| 国产一区二区精品福利地址| 国产精品尤物福利片在线观看| 99riav国产| 亚洲精品国产无套在线观| 人妻 丝袜美腿 中文字幕| 日韩性xxxx| 一区二区三区中文| 97中文在线观看| 成人超碰在线| 亚洲欧美国产日韩天堂区| 五月婷婷六月婷婷| 中文字幕在线不卡| 91精品国产高清91久久久久久| 亚洲黄色天堂| 日本一区视频在线| 国产日韩在线观看视频| 性日韩欧美在线视频| 免费在线观看一级毛片| 欧美精品自拍偷拍| 青青青在线视频| 99re视频精品| 国产色视频在线播放| 国内激情久久| 茄子视频成人在线观看| 国产区一区二| 欧美一级片一区| 麻豆传媒视频在线| 亚洲精品久久久久| 一级黄色片在线播放| 亚洲电影在线免费观看| 中文字幕在线观看免费高清| 好看的av在线不卡观看| 欧美理论一区二区| 国产精品日本一区二区不卡视频| 性欧美在线看片a免费观看| 午夜免费播放观看在线视频| 精品欧美乱码久久久久久1区2区| 久久久久在线视频| 一区二区三区 在线观看视频 | 岛国成人av| 国产精品偷伦免费视频观看的| 欧美大胆的人体xxxx| 在线免费看av不卡| 无码精品人妻一区二区三区影院 | 欧美一区二区三区成人片在线| 在线视频一区二区三| 久久这里只有精品国产| 国产精品久久久久影视| 人妻无码一区二区三区| 国产麻豆午夜三级精品| 久久久噜噜噜www成人网| 欧美福利网址| 亚洲最新在线| 国产一区二区三区日韩精品| 国产精品入口免费| 精品一区二区三区视频在线播放| 国产精品扒开腿做爽爽爽视频| 国产色婷婷在线| 久久久天堂av| 欧美人在线视频| 污视频在线免费| 日韩欧美国产小视频| 曰批又黄又爽免费视频| 日本韩国欧美一区| 亚洲欧美偷拍视频| 亚洲国产一区二区三区青草影视 | 可以在线观看的av| 亚洲成人久久久| 国产夫绿帽单男3p精品视频| 欧美日韩一本到| 亚洲天堂视频在线播放| 欧美性xxxx18| 免费黄色网址在线| 欧美日韩国产丝袜另类| 日韩手机在线观看| 亚洲福中文字幕伊人影院| 亚洲国产美女视频| 久久久久久黄| 3d动漫一区二区三区| 欧美日本中文| 日韩中文字幕在线不卡| 中文一区一区三区免费在线观看| 尤物一区二区三区| 亚洲高清999| 成人福利视频在线观看| heyzo高清国产精品| 欧美大秀在线观看| 在线中文字幕电影| 色中色综合影院手机版在线观看| 中文字幕在线播放网址| 欧美成人激情视频| 午夜伦理在线视频| 欧美劲爆第一页| 九色91在线| 欧美一区二区.| 欧美成人a交片免费看| 国产精品扒开腿做爽爽爽男男| 欧美xxxx做受欧美护士| 国产精品极品美女粉嫩高清在线| 国产69精品久久| 国产综合色香蕉精品| 国产一区二区三区视频在线| 91青青草免费观看| 欧美激情影院| 日韩精彩视频| 91久久国产| 国产资源在线免费观看| 亚洲精品欧美| www黄色在线| 精品一区二区综合| 国产a√精品区二区三区四区| aaa国产一区| 高清国产在线观看| 亚洲免费伊人电影| 日韩精品视频免费看| 日本韩国视频一区二区| 99久久精品国产一区色| 国产精品99| 九九久久精品一区| 精品捆绑调教一区二区三区| 国产成人亚洲综合91| 成人在线视频国产| 精品一卡二卡三卡四卡日本乱码| 欧美一区二区麻豆红桃视频| 日韩中文在线字幕| 美女诱惑一区| 秋霞午夜鲁丝一区二区| 91色在线porny| 性生交大片免费全黄| 偷拍亚洲欧洲综合| 亚洲综合视频在线播放| 亚洲福利小视频| 超碰在线国产| 久久人人爽人人爽人人片av高清| 精品免费av在线| 成人激情av| 成人精品影院| 国产av人人夜夜澡人人爽麻豆 | 亚洲 欧美 日韩系列| 国产成人精品午夜视频免费| 亚洲av无码一区二区三区人 | 韩日欧美一区二区| 国产精品伦一区二区| 国产精品一区二区三区免费观看| 成人精品久久| 97在线免费公开视频| 国产99久久精品| 网站永久看片免费| 色综合久久中文字幕综合网| www.亚洲黄色| 久久精品国产亚洲7777| 亚洲第一会所001| 国产伦一区二区三区色一情| 亚洲人metart人体| 亚洲综合色在线观看| 2017欧美狠狠色| 日韩激情在线播放| 日韩欧美一卡二卡| 免费看美女视频在线网站| 国产成人在线亚洲欧美| 欧洲亚洲成人| 日韩一级性生活片| 国产高清在线观看免费不卡| 日韩国产第一页| 1区2区3区欧美| 日韩美一区二区| 亚洲精品国产品国语在线| 日韩大片在线永久免费观看网站| 日韩av第一页| 亚洲小说图片视频| 欧洲黄色一级视频| 99久久99久久综合| 精品一区在线视频| 日韩精品一区在线| av大大超碰在线| 成人深夜直播免费观看| 日本一本不卡| 亚洲污视频在线观看| 欧美韩日一区二区三区四区| 一级一片免费看| 亚洲人成电影在线| 91吃瓜网在线观看| 亚洲精品国产成人久久av盗摄| 中文字幕欧美日韩一区二区三区 | 丰满人妻中伦妇伦精品app| 9色porny自拍视频一区二区| 国产第一页第二页| 亚洲精美色品网站| 麻豆mv在线看| 蜜桃91精品入口| 久久久夜精品| 九九九视频在线观看| 欧美日韩精品系列| 麻豆网站在线看| 99精彩视频| 亚洲看片免费| 18禁裸乳无遮挡啪啪无码免费| 日韩欧美aaa| 福利视频在线播放| 成人激情春色网| 欧美日韩免费| 网站免费在线观看| 国产精品嫩草影院com| 一级片免费网站| 欧美成人第一页| 欧美激情极品| 国产视频手机在线播放| 亚洲欧洲日本在线| 成人av一区二区三区在线观看| 国内精品模特av私拍在线观看| 欧美日韩看看2015永久免费| 黄色三级视频片| 亚洲乱码国产乱码精品精98午夜| 丰满少妇一级片| 日本久久久久久| 99久久夜色精品国产亚洲1000部| 国产伦理在线观看| 欧美特黄级在线| 日本网站在线免费观看视频| 超碰在线观看97| 久久精品导航| 成人在线观看高清| 亚洲韩国欧洲国产日产av| 日韩制服一区| 国产精品久久..4399| 亚洲国产成人午夜在线一区| 亚洲AV无码一区二区三区性| 日本一区二区三区四区视频| 911精品美国片911久久久| 丰满少妇一区二区三区| 欧美人与禽zozo性伦| 波多野在线观看| 亚洲免费不卡| 99re这里只有精品首页| 国产精品久久久久久久久久久久久久久久| 欧美高清视频在线| 日韩欧美一区二区三区在线视频|