毎日のアルゴリズム: 回転マトリックス

毎日のアルゴリズム: 回転マトリックス

[[431855]]

各ピクセルのサイズが 4 バイトである N × N 行列で表される画像が与えられます。画像を 90 度回転させるアルゴリズムを設計してください。

余分なメモリスペースを占有せずにこれを行うことは可能ですか?

例1:

  1. 与えられた行列 =
  2. [
  3. [1,2,3],
  4. [4,5,6],
  5. [7,8,9]
  6. ]、
  7.  
  8. 入力行列をその場で回転して次のようになります。
  9. [
  10. [7,4,1],
  11. [8,5,2],
  12. [9,6,3]
  13. ]

例2:

  1. 与えられた行列 =
  2. [
  3. [5, 1, 9,11],
  4. [ 2, 4, 8,10],
  5. [13、3、6、7]、
  6. [15,14,12,16]
  7. ]、
  8.  
  9. 入力行列をその場で回転して次のようになります。
  10. [
  11. [15,13,​​ 2, 5],
  12. [14, 3, 4, 1],
  13. [12、6、8、9]、
  14. [16, 7,10,11]
  15. ]

アイデア: 対角線上に反転してから、行ごとに反転します

  1. [
  2. [1,2,3],
  3. [4,5,6], =>
  4. [7,8,9]
  5. ]
  6.  
  7. [
  8. [1,4,7],
  9. [2,5,8], =>
  10. [3,6,9]
  11. ]
  12.  
  13. [
  14. [7,4,1],
  15. [8,5,2], =>
  16. [9,6,3]
  17. ]
  1. /**
  2. * @param {number[][]} 行列
  3. * @return {void}しないでください 何も返さない場合は代わりにその場行列を変更します
  4. */
  5. var rotate =関数(行列) {
  6. 定数 n = 行列の長さ;
  7. //対角反転 0,0 n-1,n-1
  8. ( i = 0; i < n; i++ とします) {
  9. (j = 0; j < i; j++)の場合{
  10. swap(行列、[i, j]、[j, i]);
  11. }
  12. }
  13.  
  14. //センターラインを左右反転する
  15. ( i = 0; i < n; i++ とします) {
  16. (j = 0; j < n / 2; j++)の場合{
  17. swap(行列、[i, j]、[i, n - 1 - j]);
  18. }
  19. }
  20.  
  21. 関数swap(行列、[x1, y1]、[x2, y2]) {
  22. 定数tmp = 行列[x1][y1];
  23. 行列[x1][y1] = 行列[x2][y2];
  24. 行列[x2][y2] = tmp;
  25. }
  26. };

リートコード: https://leetcode-cn.com/problems/rotate-matrix-lcci

<<:  AIは病気の予防に役立つ

>>:  機械翻訳:人工知能分野の重要な中核技術

ブログ    
ブログ    
ブログ    

推薦する

深層強化学習について知っておくべきこと

[51CTO.com クイック翻訳] 現在、機械学習(ML)と人工知能(AI)に関連するアルゴリズム...

人間かAIか?両方

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

...

大規模データストレージソリューションの構築: MongoDB の水平拡張の検討

MongoDB は、大規模なデータ ストレージ ソリューションの構築に適した NoSQL データベー...

Python での機械学習 K-means アルゴリズムの実装

K平均法アルゴリズムの紹介K-means は、機械学習でよく使用されるアルゴリズムです。これは教師な...

...

スマート物流の1兆ドル規模の扉が開かれ、物流ロボットがトレンドの先端に立っている

近年、インターネットの急速な発展、電子商取引の加速的な台頭、さまざまな新しいビジネスモデルの急速な実...

がん治療のブレークスルー:AIGCの医薬品開発における役割

AIGC には、がんの治療に役立つ可能性など、驚くべき用途を含め、多くの潜在的な用途があります。 M...

ディープラーニングの未来: ニューラル進化

この記事では主に、ニューロエボリューションがディープラーニングの未来であるという点と、進化的計算手法...

人工知能の 10 大トレンドのうち、予想もしなかったものはどれですか?

[[237644]] 人工知能(AI)は、国家や企業が支配権を争う新たな技術の最前線です。マッキン...

IEEE コンピュータ協会が 2023 年の技術トレンド予測評価を発表

コンピューターサイエンスとエンジニアリングの主要会員コミュニティである IEEE コンピューターソサ...

...

...

スマート製造技術:効率的な生産の未来?

2020年の初め以来、工業および製造業はCOVID-19パンデミックの影響を受けています。工場は、...