20200827 2020力扣第33周雙周賽題解

2021-10-23 22:20:34 字數 2462 閱讀 5982

寫在最後

題目一:千位分隔數

給你乙個整數n,請你每隔三位新增點(即 「.」 符號)作為千位分隔符,並將結果以字串格式返回。

示例 1:

輸入:n = 987

輸出:「987」

示例 2:

輸入:n = 1234

輸出:「1.234」

示例 3:

輸入:n = 123456789

輸出:「123.456.789」

本題直接模擬即可,如果使用棧來實現最好從最後面開始,因為我們拿到的數字不一定是3的倍數。

class

solution

}return sb.

reverse()

.tostring();}}

題目二:可以到達所有點的最少點數目

給你乙個 有向無環圖 , n 個節點編號為 0 到 n-1 ,以及乙個邊陣列 edges ,其中 edges[i] = [fromi, toi] 表示一條從點 fromi 到點 toi 的有向邊。

找到最小的點集使得從這些點出發能到達圖中所有點。題目保證解存在且唯一。

你可以以任意順序返回這些節點編號。

本題的題意即是獲取當前入度為0的所有點的並集即可。

class

solution

for(

int i =

0; i < n; i++)}

return ans;

}}

題目三:得到目標陣列的最少函式呼叫次數

給你乙個與 nums 大小相同且初始值全為 0 的陣列 arr ,請你呼叫以上函式得到整數陣列 nums 。

請你返回將 arr 變成 nums 的最少函式呼叫次數。

答案保證在 32 位有符號整數以內。

}題目四:二維網格圖中探測環

給你乙個二維字元網格陣列 grid ,大小為 m x n ,你需要檢查 grid 中是否存在 相同值 形成的環。

乙個環是一條開始和結束於同乙個格仔的長度 大於等於 4 的路徑。對於乙個給定的格仔,你可以移動到它上、下、左、右四個方向相鄰的格仔之一,可以移動的前提是這兩個格仔有 相同的值 。

同時,你也不能回到上一次移動時所在的格仔。比方說,環 (1, 1) -> (1, 2) -> (1, 1) 是不合法的,因為從 (1, 2) 移動到 (1, 1) 回到了上一次移動時的格仔。

如果 grid 中有相同值形成的環,請你返回 true ,否則返回 false 。

}// 向下搜尋

if(i +

1< h && cur == grid[i +1]

[j])}}

}return

false;}

class

dsu}

public

intfind

(int x)

return parent[x];}

/** * 若合併前,x和y的parent相同,則表示形成環,返回true。

** @param x

* @param y

* @return

*/public

boolean

union

(int x,

int y)

if(parentx < parenty)

else

return

false;}

}}一切都很不確定,但堅持學習是必須要做的事,加油!

力扣 第48 題

c語言中的二維陣列是 一維陣列的陣列 向函式中傳遞的時候,最外層的陣列直接翻譯成指標,傳遞時傳遞其首位址,陣列是傳不進去的。所以s是指標,sizeof s 4 s是乙個長度為16個char的一維陣列,長度是16 當把每一行看作乙個整體,即作為乙個大的陣列元素時,原來的二維陣列也就變成乙個一維陣列了。...

子集(力扣第78題)

題目 給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 分析 子集的大小可以是從0到nums.length,也就是可以為空集,也可以和原始集合一模一樣。此題還...

力扣第165場周賽

a 和 b 在乙個 3 x 3 的網格上玩井字棋。井字棋遊戲的規則如下 玩家輪流將棋子放在空方格 上。第乙個玩家 a 總是用 x 作為棋子,而第二個玩家 b 總是用 o 作為棋子。x 和 o 只能放在空方格中,而不能放在已經被占用的方格上。只要有 3 個相同的 非空 棋子排成一條直線 行 列 對角線...