程式設計師面試金典 面試題 01 07 旋轉矩陣

2022-04-02 02:45:10 字數 829 閱讀 8134

給定一幅由n × n矩陣表示的影象,其中每個畫素的大小為4位元組,編寫一種方法,將影象旋轉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]

]我們可以利用先上下交換,倒置一下,然後再對角線將元素交換。由於題目要求不占用額外空間,我們就不能利用臨時變數來儲存交換值,可以利用異或的性質來將兩個元素交換。

例如我們想交換兩個變數a,b分別等於x,y

首先a = a ^ b = x ^ y

然後b = b ^ a = y ^ x ^ y = x此時b已經拿到了a原來的值。

最後a = a ^ b = x ^ y ^ x = y成功交換

class

solution

i++;

j--;

}//對角交換

for(i = 0; i < matrix.length; ++i)}}

}

程式設計師面試金典 面試題 01 07 旋轉矩陣

給你一幅由 n n 矩陣表示的影象,其中每個畫素的大小為 4 位元組。請你設計一種演算法,將影象旋轉 90 度。不占用額外記憶體空間能否做到?示例 1 給定 matrix 1,2,3 4,5,6 7,8,9 原地旋轉輸入矩陣,使其變為 7,4,1 8,5,2 9,6,3 示例 2 給定 matrix...

程式設計師面試金典 面試題 08 09 括號

括號。設計一種演算法,列印n對括號的所有合法的 例如,開閉一一對應 組合。說明 解集不能包含重複的子集。例如,給出 n 3,生成結果為 dfs搜尋,如果當前左括號用超了,右括號用超了,或者右括號的數量大於左括號的數量直接返回。而如果左右括號剛好用盡,代表生成乙個結果,記錄下來。然後就是遞迴,新增左括...

程式設計師面試金典 面試題 08 13 堆箱子

堆箱子。給你一堆n個箱子,箱子寬 wi 高hi 深di。箱子不能翻轉,將箱子堆起來時,下面箱子的寬度 高度和深度必須大於上面的箱子。實現一種方法,搭出最高的一堆箱子。箱堆的高度為每個箱子高度的總和。輸入使用陣列 wi,di,hi 表示每個箱子。示例1 輸入 box 1,1,1 2,2,2 3,3,3...