演算法題 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...