給定一幅由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成功交換
classsolution
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...