54. 螺旋矩陣
給定乙個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。
示例 1:輸入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
輸出: [1,2,3,6,9,8,7,4,5]
示例 2:輸入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
輸出: [1,2,3,4,8,12,11,10,9,5,6,7]
需要定義四個變數:
top、bottom、left、right
需要注意的地方:行數為奇數或偶數
class
solution
top++;if
(left > right || top > bottom)
break
;for
(int i = top; i<=bottom; i++
) right--;if
(left > right || top > bottom)
break
;for
(int i = right; i>=left; i--
) bottom--;if
(left > right || top > bottom)
break
;for
(int i = bottom; i>=top; i--
) left++;if
(left > right || top > bottom)
break;}
return array;
}}
7. 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:1234假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
1234 % 10 = 4得到個位數4
1234 / 10 = 123得到剩餘的數
123 % 10 = 3得到個位數
result = (((4 * 10) + 3) * 10 + 2) * 10 + 1
result = 4000 + 300 + 20 + 1 = 4321
關於溢位,可以使用long型別,然後返回的時候再強轉為int
class
solution
return
(int
)result;
}}
或者
class
solution
return result;
}}
資料結構與演算法 反轉鍊錶
定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null限制 0 節點個數 5000 本題最簡單的方法是用棧。但如果考慮到使空間複雜度最小,可以使用前後雙指標法 definition for singly l...
資料結構與演算法 二 陣列反轉 reverse
前面我們提到了陣列,現在我們就以陣列來實現反轉 如我們定義乙個陣列 int array 反轉無疑就是將陣列下標第0個元素與下標最後乙個元素互換,然後是第1個元素與倒數第2個元素的互換,依次類推 我們設想陣列長度為基數或偶數都沒有問題 我們需要乙個方法,在方法中就做一件事情,那就是交換元素,在交換元素...
資料結構與演算法 09 矩陣快速冪
為什麼要寫矩陣快速冪呢,因為快速冪我已經寫過了,只要過載一下運算子就好了 乙個字 懶 絕對不是我懶啊。struct matrix 此處傳reference matrix operator const matrix x,const matrix y return r 矩陣快速冪 給定 n times ...