C語言重構 1706 球會落何處

2021-10-21 11:26:42 字數 2231 閱讀 7891

所有題目源**: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...