所有題目源**:git位址
題目
用乙個大小為 m x n 的二維網格 grid 表示乙個箱子。你有 n 顆球。箱子的頂部和底部都是開著的。
箱子中的每個單元格都有乙個對角線擋板,跨過單元格的兩個角,可以將球導向左側或者右側。
將球導向右側的擋板跨過左上角和右下角,在網格中用 1 表示。
將球導向左側的擋板跨過右上角和左下角,在網格中用 -
1 表示。
在箱子每一列的頂端各放一顆球。每顆球都可能卡在箱子裡或從底部掉出來。如果球恰好卡在兩塊擋板之間的 "v" 形圖案,或者被一塊擋導向到箱子的任意一側邊上,就會卡住。
返回乙個大小為 n 的陣列 answer ,其中 answer[i] 是球放在頂部的第 i 列後從底部掉出來的那一列對應的下標,如果球卡在盒子裡,則返回 -
1 。
示例 1:
輸入:grid =[[
1,1,
1,-1
,-1]
,[1,
1,1,
-1,-
1],[
-1,-
1,-1
,1,1
],[1
,1,1
,1,-
1],[
-1,-
1,-1
,-1,
-1]]
輸出:[1,
-1,-
1,-1
,-1]
解釋:示例如圖:
b0 球開始放在第 0 列上,最終從箱子底部第 1 列掉出。
b1 球開始放在第 1 列上,會卡在第 2、3 列和第 1 行之間的 "v" 形裡。
b2 球開始放在第 2 列上,會卡在第 2、3 列和第 0 行之間的 "v" 形裡。
b3 球開始放在第 3 列上,會卡在第 2、3 列和第 0 行之間的 "v" 形裡。
b4 球開始放在第 4 列上,會卡在第 2、3 列和第 1 行之間的 "v" 形裡。
示例 2:
輸入:grid =[[
-1]]
輸出:[-1
]解釋:球被卡在箱子左側邊上。
示例 3:
輸入:grid =[[
1,1,
1,1,
1,1]
,[-1
,-1,
-1,-
1,-1
,-1]
,[1,
1,1,
1,1,
1],[
-1,-
1,-1
,-1,
-1,-
1]]輸出:[0,
1,2,
3,4,
-1]
m == grid.length
n == grid[i]
.length
1<= m, n <=
100grid[i]
[j] 為 1 或 -
1
方案:class
solution
//左側牆壁
else
if(y ==
0&& grid[x]
[y]==-1
)break
;//右側牆壁
else
if(y ==
(col -1)
&& grid[x]
[y]==1)
break
;//右走v字
else
if(grid[x]
[y]==
1&& grid[x]
[y +1]
==-1)
break
;//向右下方走
else
if(grid[x]
[y]==
1&& grid[x]
[y +1]
==1)//左走v字
else
if(y >
0&& grid[x]
[y]==-1
&& grid[x]
[y -1]
==1)break
;//向左下方走
else
if(y >
0&& grid[x]
[y]==-1
&& grid[x]
[y -1]
==-1)
}}return ball;}}
;
複雜度計算 C語言重構 228 彙總區間
所有題目源 題目給定乙個無重複元素的有序整數陣列 nums 返回 恰好覆蓋陣列中所有數字 的 最小有序 區間範圍列表。也就是說,nums 的每個元素都恰好被某個區間範圍所覆蓋,並且不存在屬於某個範圍但不屬於 nums 的數字 x 列表中的每個區間範圍 a,b 應該按如下格式輸出 a b 如果 a b...
C語言重構 1025 除數博弈
所有題目源 git位址 題目愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字 n 在每個玩家的回合,玩家需要執行以下操作 選出任一 x,滿足 0 x n 且 n x 0 用 n x 替換黑板上的數字 n 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利...
C語言重構 328 奇偶鍊錶
所有題目源 git位址 題目給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1...