1. 程式人生 > >Arithmetic problem | 在原地順時針90度旋轉矩陣影象

Arithmetic problem | 在原地順時針90度旋轉矩陣影象

題目如下:

給定一個N×N的二維矩陣表示影象,90度順時針旋轉影象。

樣例

給出一個矩形[[1,2],[3,4]],90度順時針旋轉後,返回[[3,1],[4,2]]


解題思路:

旋轉一個矩陣,要是允許額外空間的話會顯得簡單不少。但要求在原地進行顯然要跟兩數交換扯上一定關係。如圖:


從上圖可以分析出,d33-->d30需要3步交換,1:d33<-->a03,2:b00<-->a03,3:c30<-->b00。矩陣是nXn,因此遍歷使用兩個指標索引向中間逼近即可完成所有層遍歷。其餘的只需要遍歷某一層的a-d的個數進行交換操作即可。

思路程式碼實現如下:

void Method(vector<vector<int> > &matrix)
{
	int p_left = -1, p_right = matrix.size();
	while (p_left++ < p_right--)
	{
		for (int i = p_left; i < p_right; ++i)
			matrix[p_right][p_right - i] = (matrix[i][p_right] ^ matrix[p_right][p_right - i]) ^ (matrix[i][p_right] = matrix[p_right][p_right - i]),
			matrix[i][p_right] = (matrix[p_left][i] ^ matrix[i][p_right]) ^ (matrix[p_left][i] = matrix[i][p_right]),
			matrix[p_left][i] = (matrix[p_right - i][p_left] ^ matrix[p_left][i]) ^ (matrix[p_right - i][p_left] = matrix[p_left][i]);
	}
}


相關推薦

Arithmetic problem | 在原地時針90旋轉矩陣影象

題目如下: 給定一個N×N的二維矩陣表示影象,90度順時針旋轉影象。 樣例 給出一個矩形[[1,2],[3,4]],90度順時針旋轉後,返回[[3,1],[4,2]] 解題思路: 旋轉一個矩陣

android開發直播將yvu420時針逆時針各旋轉90

做android手機直播的時候遇到在Camera的回到onPreviewFrame獲得的資料幀傳輸到jni層,但是視訊方向是有問題的,所以在網上找了許多yuv分量旋轉的程式碼,最後適用的這兩個還是比較不錯的,     /**      * 視訊順時針旋轉90      *

unity 跟隨滑鼠 時針或逆時針旋轉

private bool m_IsFirst = true;//用於記錄第一幀按下滑鼠時滑鼠的位置,便於計算     private Vector3 m_CurrentPos;//記錄當前幀滑鼠所在位置     private bool m_IsClock

90旋轉行列轉換之一

/*--行列互換的通用儲存過程(原著:鄒建):將指定的表,按指定的欄位進行行列互換*/createproc p_zj @tbname sysname, --要處理的表名@fdname sysname, --做為轉換的列名@new_fdname sysname=''--為轉換後的列指定列名asde

python 矩陣時針旋轉90

# 4*4矩陣旋轉90度 def matrix_transposition(data): for index,row in enumerate(data): for col in range(index,len(row)): temp =

陣列4——二維陣列1——將矩陣時針旋轉90

【定義】 二維陣列也稱為矩陣(Matrix),關於矩陣的演算法經常在各種考試及面試中出現,它主要考查被測試者的邏輯思維能力、下標的靈活應用及對C語言的掌握程度,這種題目通常有較高的難度,通常需要二重迴圈實現。經典的矩陣演算法有將矩陣旋轉90度、魔方陣、拉丁方陣、蛇形方陣、內螺旋矩陣、外螺旋矩

LeetCode——Rotate Image(二維陣列時針旋轉90

問題: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up:  Could you do this

矩陣時針旋轉90 leetCode:Rotate Image

一個影象用矩陣表示,將這個影象順時針旋轉90度,也就是將矩陣順時針旋轉90度。演算法要求不使用額外的空間複雜度,in-place演算法。 觀察了一下矩陣的轉置,發現可以通過以此交換矩陣兩行,然後再求轉置的方式獲得。思路如下: 1、設矩陣有n行,則分別將i=0.1....(n

2015創發科技校園招聘筆試題——把矩陣時針旋轉90

第一種方法http://blog.csdn.net/friendan/article/details/8824682   第二種方法http://www.nowamagic.net/librarys/veda/detail/1044 #define n 4 //矩陣順時

文字時針旋轉90(縱向)&古詩詞排版

-a vertica com bubuko eight mage 旋轉 古詩詞 align 1.文字旋轉90度 width: 100px; height: 200px; line-height: 100px; text-align: center; writi

二維陣列(矩陣時針旋轉90°

1.先轉置 2.後調換列元素     public void rotate(int[][] matrix){        //矩陣轉置程式碼        &n

矩陣時針旋轉90°、180°、270°

問題及程式碼: /* * Copyright (c) 2014, 煙臺大學計算機學院 * All rights reserved. * 檔名稱:sdoj.cpp * 作 者:李楠 * 完成日期:2015年2月7日 * 版 本 號:v1.0 * * 問題描述:矩陣A在順

矩陣旋轉90)輸出:

iostream math cin bottom i++ scripts html fontsize name 對於一個給定的 3\times 33×3 矩陣,請將其順時針旋轉 90度後輸出。 輸入格式 每次程序運行時,你的程序僅需要輸入三行,第 i行輸入三個整數 a_i

day4 二維數組旋轉90

維數 div 而已 tro alt logs ron mage 重要 二維數組的旋轉其實就是數組裏面的元素對調的情況;下面有一個4×4的二維數組,[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]],現在要

時針旋轉矩陣

編寫 eight pre ret -c article ++ nbsp 初始 題目描述 有一個NxN整數矩陣,請編寫一個算法,將矩陣順時針旋轉90度。 給定一個NxN的矩陣,和矩陣的階數N,請返回旋轉後的NxN矩陣,保證N小於等於300。 測試樣例: [[1,2,3],

Office 超級錄屏如何旋轉視頻90之後保存

設置 mage alt 添加 點擊 如何 轉換 微軟 輸出 打開視頻轉換專家 ?添加視頻後點擊編輯,然後在旋轉的地方設置旋轉,應用 ?輸出可以正常播放 ?Office 超級錄屏如何旋轉視頻90度之後保存

《程序員代碼面試指南》第八章 數組和矩陣問題 將正方形矩陣時針轉動90

http 正方 println package 技術 指南 eat ack desc 題目 將正方形矩陣順時針轉動90 java代碼 package com.lizhouwei.chapter8; /** * @Description: 將正方形矩陣順時針轉動90 *

實現二維數組時針旋轉的功能

style bsp 維數 spa [] time 二維 sting div 用GO實現二維數組的順時針旋轉,總體思想為,確定好正方形二維數組的邊界,從邊開始旋轉,轉完整個邊界之後把二維數組向內縮小一個邊界,找到邊界,繼續旋轉(交換).... 例如: { 1, 2, 3,

AndroidOpenCV攝像頭預覽旋轉90問題

將下圖檔案中的  deliverAndDrawFrame 方法 修改為 protected void deliverAndDrawFrame(CvCameraViewFrame frame){    Mat modified; 

蘋果手機(ios)拍照上傳圖片旋轉90問題---java後臺處理

需要先匯入包 metadata-extractor-2.3.1.jar 地址 https://github.com/drewnoakes/metadata-extractor/releases?after=2.7.0 xmpcore-5.1.2.jar 依賴包 maven下載 med