資料結構與演算法---螺旋矩陣、整數反轉
螺旋矩陣
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 {
public List<Integer> spiralOrder(int[][] matrix) {
if(matrix == null) return null;
List<Integer> array = new ArrayList<>();
if(matrix.length == 0) return array;
if(matrix[0].length == 0) return array;
int top = 0;
int bottom = matrix.length - 1;
int left = 0;
int right = matrix[0].length - 1;
while(left <= right && top <= bottom){
for(int i = left; i<=right; i++){
array.add(matrix[top][i]);
}
top++;
if(left > right || top > bottom) break;
for(int i = top; i<=bottom; i++){
array.add(matrix[i][right]);
}
right--;
if(left > right || top > bottom) break;
for(int i = right; i>=left; i--){
array.add(matrix[bottom][i]);
}
bottom--;
if(left > right || top > bottom) break;
for(int i = bottom; i>=top; i--){
array.add(matrix[i][left]);
}
left++;
if(left > right || top > bottom) break;
}
return array;
}
}
整數反轉
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:
假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
思路
1234
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 {
public int reverse(int x) {
long result = 0;
while(x != 0){
result = result * 10 + x % 10;
if(result > Integer.MAX_VALUE) return 0;
if(result < Integer.MIN_VALUE) return 0;
x = x/10;
}
return (int)result;
}
}
或者
class Solution {
public int reverse(int x) {
int result = 0;
while(x != 0){
int pre = result;
result = pre * 10 + x % 10;
if((result - x % 10)/10 != pre) return 0;
x = x/10;
}
return result;
}
}
相關文章
- 螺旋矩陣矩陣
- 資料結構與演算法-反轉排序資料結構演算法排序
- 生成螺旋矩陣(方陣、矩陣)矩陣
- 演算法學習之路|螺旋矩陣演算法矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 54. 螺旋矩陣矩陣
- c# 螺旋矩陣C#矩陣
- 資料結構(一)-稀疏矩陣資料結構矩陣
- 資料結構與演算法——陣列資料結構演算法陣列
- leetcode:螺旋矩陣LeetCode矩陣
- 【資料結構與演算法】——稀疏陣列資料結構演算法陣列
- 資料結構與演算法 | 陣列(Array)資料結構演算法陣列
- 資料結構之陣列和矩陣--矩陣&不規則二維陣列資料結構陣列矩陣
- 力扣-54. 螺旋矩陣力扣矩陣
- 資料結構與演算法學習-陣列資料結構演算法陣列
- TypeScript演算法與資料結構-陣列篇TypeScript演算法資料結構陣列
- 資料結構與演算法:稀疏陣列(一)資料結構演算法陣列
- 資料結構與演算法之稀疏陣列資料結構演算法陣列
- Redis資料結構—整數集合與壓縮列表Redis資料結構
- Java資料結構和演算法(六)—演算法—反轉連結串列Java資料結構演算法
- [Leetcode]59.螺旋矩陣ⅡLeetCode矩陣
- 資料結構與演算法——兩個大整數的乘積問題資料結構演算法
- 資料轉換-整數字節陣列陣列
- js資料結構與演算法 陣列、棧部分JS資料結構演算法陣列
- 資料結構與演算法整理總結---陣列,連結串列資料結構演算法陣列
- Redis資料結構之整數集合Redis資料結構
- 6.5陣列--模擬、偏移量-螺旋矩陣陣列矩陣
- 資料結構與演算法總論 (轉)資料結構演算法
- 角軸與反對稱矩陣矩陣
- 演算法-陣列與矩陣演算法陣列矩陣
- 每日一道演算法:整數反轉演算法
- 資料結構與演算法-資料結構(棧)資料結構演算法
- 資料結構之C語言模擬整數陣列實現資料結構C語言陣列
- 資料結構學習(C++)——稀疏矩陣(十字連結串列【2】) (轉)資料結構C++矩陣
- 資料結構學習(C++)——稀疏矩陣(十字連結串列【1】) (轉)資料結構C++矩陣
- 資料結構與演算法—稀疏陣列和佇列資料結構演算法陣列佇列
- 【資料結構與演算法】字串匹配(字尾陣列)資料結構演算法字串匹配陣列
- 資料結構實驗 二維矩陣的實現資料結構矩陣