題目位址
給你乙個 m 行 n 列的矩陣 matrix ,請按照 順時針螺旋順序 ,返回矩陣中的所有元素。
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-hpdkehr9-1615821187527)(
示例 1:
輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
輸出:[1,2,3,6,9,8,7,4,5]
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-xzmj4bub-1615821187529)(
示例 2:
輸入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
輸出:[1,2,3,4,8,12,11,10,9,5,6,7]
class
solution
//輸出右邊
for(
int i = top +
1; i <= under; i++
)//判斷是否到了底部
if(left < right&& top < under)
//輸出左
for(
int i = under; i > top; i--)}
//縮圈
left++
; right--
; top++
; under--;}
return ans;}}
;
//按照層次模擬
class
solution
//首先找到四個角落
int row = matrix[0]
.length;
int column = matrix.length;
int left =0;
int top =0;
int right = row -1;
int under = column -1;
//迴圈
list
res =
newarraylist
(row * column)
;while
(left <= right && top <= under)
//輸出右
for(
int i = top +
1; i <= under; i++
)//判斷是否到了底部
if(left < right && top < under)
//輸出左
for(
int i = under; i > top; i--)}
left++
; right--
; top++
; under--;}
return res;}}
}
很久沒寫關於leetcode的題解了,這題屬於leetcode雖然屬於中等難度的題目,解法還是比較簡單的、
1.首先設定上下左右邊界
2.其次向右移動到最右,最右邊移動到右下角,右下角到左下角,再左下角繼續向上輸出,就是首先輸出最外層的元素,再縮小一圈輸出次外層的元素,直到輸出最內層的元素
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-xr406axx-1615821187532)(
這題最重要的地方是四個角的條件判斷
1.從最左邊到右邊的判斷條件
int i = left; i <= right; i++
2.最右邊移動到右下角
int i = top + 1; i <= under; i++
當到了右下角時,這裡需要注意一點,其中1,12
已經輸出過了,需要判斷不能再次輸入(push)
//避免重複的輸入
left < right&& top < under
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-xh35trvf-1615821187535)(
3.右下角到左下角
int i = right - 1; i > left; i--
4.右下角到左下角
int i = under; i > top; i--
Leetcode 45 跳躍遊戲
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...
Leetcode 45 跳躍遊戲
貪心 由區域性最優匯出全域性最優。對於該點能跳到的所有點loc 1 nums loc 考慮跳到之後還能跳多遠k nums loc k 哪個點最遠就跳到哪。學習題解的寫法 貪心的思想不變 還是找目前最有利的選擇來構成全域性最佳!在每一跳內找下一次的最遠距離!maxpos為在考慮範圍內能找到的跳到的最遠...
leetcode 45 跳躍遊戲
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...