最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript數組操作之旋轉二維數組

 更新時間:2022年04月26日 16:31:25   作者:掘金安東尼  
這篇文章主要介紹了JavaScript數組操作之旋轉二維數組,主要從兩個方面展開文章介紹,一是通過對數組的操作熟練度;二是(鏡像反轉)比實現一更優(yōu),減少了空間復雜度,內容介紹具有一定的參考價值,需要的小伙伴可以參考一下

一、題目描述

給定一個 n × n 的二維矩陣 matrix 表示一個圖像。請你將圖像順時針旋轉 90 度。

你必須在 原地 旋轉圖像,這意味著你需要直接修改輸入的二維矩陣。請不要 使用另一個矩陣來旋轉圖像。

示例 1:

輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]

輸出:[[7,4,1],[8,5,2],[9,6,3]]

示例 2:

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

輸出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

二、思路與實現

從示例圖中就可以知道:

數組順時針旋轉 90 度之后,其實就是第1列變成第1行,第2列變成第2行,第3列變成第3行......

實現一:

/**
* @param {number[][]} matrix
* @return {void} Do not return anything, modify matrix in-place instead.
*/
var rotate = function (matrix) {
let n = matrix.length;
let res = new Array(n).fill(0).map(() => new Array(n).fill(0));
for (let i = 0; i < n; i++)
for (let j = n - 1; j >= 0; j--) res[i][n - j - 1] = matrix[j][i];
return res;
};

時間復雜度:O(N^2),其中N為matrix的邊長
空間復雜度:O(N^2)。我們需要使用一個和 matrix 大小相同的輔助數組。

還有另外一種思路:

  • 按照左上到右下的對角線進行鏡像對稱
  • 對矩陣的每一行進行反轉

比如這樣:

/**
* @param {number[][]} matrix
* @return {void} Do not return anything, modify matrix in-place instead.
*/
var rotate = function (matrix) {
let n = matrix.length;
// 先沿對角線鏡像對稱二維矩陣
for (let i = 0; i < n; i++) {
for (let j = i; j < n; j++) {
[matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]];
}
}
const reverseRow = (arr) => {
let i = 0,
j = arr.length - 1;
while (i <= j) {
[arr[i], arr[j]] = [arr[j], arr[i]];
i++;
j--;
}
};
// 然后反轉二維矩陣的每一行
for (let row of matrix) {
reverseRow(row);
}
return matrix;
};
  • 時間復雜度跟解法1一樣,但是卻不需要額外的空間復雜度

三、總結

到此這篇關于JavaScript數組操作之旋轉二維數組的文章就介紹到這了,更多相關JS旋轉二維數組內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaScript使用URL.canParse驗證URL的方法詳解

    JavaScript使用URL.canParse驗證URL的方法詳解

    JavaScript誕生以來,一直沒有一種簡單的方法驗證URL,現在JavaScript新增了一個新方法——URL.canParse,文中通過代碼示例和圖文介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • JavaScript 閉包深入理解(closure)

    JavaScript 閉包深入理解(closure)

    最近在網上查閱了不少Javascript閉包(closure)相關的資料,寫的大多是非常的學術和專業(yè)。對于初學者來說別說理解閉包了,就連文字敘述都很難看懂。撰寫此文的目的就是用最通俗的文字揭開Javascript閉包的真實面目。
    2009-05-05
  • js實現簡單的選項卡效果

    js實現簡單的選項卡效果

    本文主要介紹了js實現簡單的選項卡效果的示例代碼,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 詳解微信小程序網絡請求接口封裝實例

    詳解微信小程序網絡請求接口封裝實例

    這篇文章主要介紹了微信小程序網絡請求接口封裝,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 基于jQuery的模仿新浪微博時間的組件

    基于jQuery的模仿新浪微博時間的組件

    廢話不多說,實現原理主要是處理table,生成tr td,其中最重要的是如何找出每月第一天是星期幾,然后就能對應出這個月的余下天數.
    2011-10-10
  • js 下拉菜單點擊旁邊收起實現(踩坑記)

    js 下拉菜單點擊旁邊收起實現(踩坑記)

    這篇文章主要介紹了js 下拉菜單點擊旁邊收起實現(踩坑記),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • BootStrap selectpicker后臺動態(tài)綁定數據的方法

    BootStrap selectpicker后臺動態(tài)綁定數據的方法

    這篇文章主要為大家詳細介紹了BootStrap selectpicker后臺動態(tài)綁定數據的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 預防網頁掛馬的方法總結

    預防網頁掛馬的方法總結

    這篇文章主要介紹了預防網頁掛馬的方法總結的相關資料,這里詳細整理了具體方法,和如何實現,需要的朋友可以參考下
    2016-11-11
  • javascript 仿QQ滑動菜單效果代碼

    javascript 仿QQ滑動菜單效果代碼

    javascript 仿QQ滑動菜單效果代碼,非常漂亮的代碼,學習js的朋友可以參考下代碼風格。
    2010-09-09
  • 購物車選中得到價格實現示例

    購物車選中得到價格實現示例

    本文為大家介紹下購物車如何實現選中得到價格,下面有個不錯的示例,大家可以參考下
    2014-01-01

最新評論

大冶市| 石首市| 浠水县| 临安市| 图们市| 淳化县| 昌平区| 正定县| 涞水县| 观塘区| 高青县| 吕梁市| 阜宁县| 含山县| 日喀则市| 天水市| 名山县| 长治县| 邹城市| 保靖县| 邳州市| 潼关县| 林芝县| 保靖县| 五河县| 屯门区| 咸丰县| 临夏县| 平和县| 永吉县| 西平县| 娱乐| 华容县| 呼伦贝尔市| 桑植县| 会泽县| 兴海县| 渭南市| 清徐县| 克拉玛依市| 广德县|