演算法題 18 畫素翻轉 牛客網 CC150

2022-04-22 21:27:24 字數 917 閱讀 9017

演算法題 18 畫素翻轉 牛客網 cc150_p114

有一副由nxn矩陣表示的影象,這裡每個畫素用乙個int表示,請編寫乙個演算法,在不占用額外記憶體空間的情況下(即不使用快取矩陣),將影象順時針旋轉90度。

給定乙個nxn的矩陣,和矩陣的階數n,請返回旋轉後的nxn矩陣,保證n小於等於500,影象元素小於等於256。

測試樣例:

[[1,2,3],[4,5,6],[7,8,9]],3
返回:[[7,4,1],[8,5,2],[9,6,3]]

解題**:

#

-*- coding:utf-8 -*-

class

transform:

deftransformimage(self, mat, n):

#write code here

#layer表示從外圍到裡面共有多少層

#總共有layer=0,1,2,...,(n+1)//2層

for layer in range(0,(n+1)//2+1):

first=layer

last=n-layer-1

for i in

range(first,last):

offset=i-first

#儲存上邊

top=mat[first][i]

#從左到上

mat[first][i]=mat[last-offset][first]

#從下到左

mat[last-offset][first]=mat[last][last-offset]

#從右到下

mat[last][last-offset]=mat[i][last]

#從上到右

mat[i][last]=top

return mat

牛客網C C 刷題

x x 含義很有意思 當乙個偶數與它的負值按位與時,結果是能被這個偶數整除的最大的2的n次冪 當乙個奇數與它的負值按位與時結果一定是1.變數初始化的時候不能使用連等 8d 左對齊8個位置,08d左對齊8個位置,但是右邊不可以補零 8d 右對齊8個位置,08d右對齊8個位置,左邊補零 這裡不明白,將 ...

牛客網程式設計題1

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。思路 本題最初想簡單的求模算出等於1的位數,但是發現負數不行。其實簡單的做法應該是與 1相與,如果為 1,則原來為 1,迴圈移位判斷。但注意,要左移,要是右移,對於負數會一直在高位補 1,導致結果不準確。class solution ...

牛客網刷題(1)重點錯題

1 在32位機器中,如下 void example char acwelcome void main 結果為 4 陣列名作為函式傳參是作為指標使用的。2 下面的程式可以從0 n 1中隨機等概率的輸出m個不重複的數。這裡我們假設n遠大於m knuth int n,int m 選項 rand n i m...