原创 [LeetCode](面試題21)調整數組順序使奇數位於偶數前面

題目 輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有奇數位於數組的前半部分,所有偶數位於數組的後半部分。 示例: 輸入:nums = [1,2,3,4] 輸出:[1,3,2,4] 注:[3,1,2,4] 也是正

原创 [LeetCode]215. 數組中的第K個最大元素

題目 在未排序的數組中找到第 k 個最大的元素。請注意,你需要找的是數組排序後的第 k 個最大的元素,而不是第 k 個不同的元素。 示例 1: 輸入: [3,2,1,5,6,4] 和 k = 2 輸出: 5 示例 2: 輸入:

原创 [LeetCode]1014. 最佳觀光組合

題目 給定正整數數組 A,A[i] 表示第 i 個觀光景點的評分,並且兩個景點 i 和 j 之間的距離爲 j - i。 一對景點(i < j)組成的觀光組合的得分爲(A[i] + A[j] + i - j):景點的評分之和減去它們

原创 [LeetCode]343. 整數拆分

題目 給定一個正整數 n,將其拆分爲至少兩個正整數的和,並使這些整數的乘積最大化。 返回你可以獲得的最大乘積。 示例 1: 輸入: 2 輸出: 1 解釋: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 輸入: 10 輸

原创 [LeetCode]1028. 從先序遍歷還原二叉樹

題目 我們從二叉樹的根節點 root 開始進行深度優先搜索。 在遍歷中的每個節點處,我們輸出 D 條短劃線(其中 D 是該節點的深度),然後輸出該節點的值。(如果節點的深度爲 D,則其直接子節點的深度爲 D + 1。根節點的深度爲

原创 [LeetCode](面試題32 - III)從上到下打印二叉樹 III

題目 請實現一個函數按照之字形順序打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右到左的順序打印,第三行再按照從左到右的順序打印,其他行以此類推。 例如: 給定二叉樹: [3,9,20,null,null,15,7],

原创 [LeetCode]297. 二叉樹的序列化與反序列化

題目 序列化是將一個數據結構或者對象轉換爲連續的比特位的操作,進而可以將轉換後的數據存儲在一個文件或者內存中,同時也可以通過網絡傳輸到另一個計算機環境,採取相反方式重構得到原數據。 請設計一個算法來實現二叉樹的序列化與反序列化。這

原创 [LeetCode](面試題18)刪除鏈表的節點

題目 給定單向鏈表的頭指針和一個要刪除的節點的值,定義一個函數刪除該節點。 返回刪除後的鏈表的頭節點。 注意:此題對比原題有改動 示例 1: 輸入: head = [4,5,1,9], val = 5 輸出: [4,1,9] 解釋

原创 [LeetCode](面試題37)序列化二叉樹

題目 請實現兩個函數,分別用來序列化和反序列化二叉樹。 示例: 你可以將以下二叉樹: 1 / \ 2 3 / \ 4 5 序列化爲 "[1,2,3,null,null,4,5]"

原创 [LeetCode](面試題12)矩陣中的路徑

題目 請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格子。例如,在下

原创 [LeetCode](面試題32 - II)從上到下打印二叉樹 II

題目 從上到下按層打印二叉樹,同一層的節點按從左到右的順序打印,每一層打印到一行。 例如: 給定二叉樹: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15

原创 牛客網OJ系統的常見輸入輸出——Java語言描述

一、A+B(1) 題目描述 計算a+b 輸入描述: 輸入包括兩個正整數a,b(1 <= a, b <= 10^9),輸入數據包括多組。 輸出描述: 輸出a+b的結果 示例1 輸入 1 5 10 20 輸出 6 30 代碼

原创 [LeetCode](面試題14- I)剪繩子

題目 給你一根長度爲 n 的繩子,請把繩子剪成整數長度的 m 段(m、n都是整數,n>1並且m>1),每段繩子的長度記爲 k[0],k[1]...k[m-1] 。請問 k[0]*k[1]*...*k[m-1] 可能的最大乘積是多少

原创 [LeetCode](面試題33)二叉搜索樹的後序遍歷序列

題目 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷結果。如果是則返回 true,否則返回 false。假設輸入的數組的任意兩個數字都互不相同。 參考以下這顆二叉搜索樹: 5 / \ 2 6

原创 [LeetCode]67. 二進制求和

題目 給你兩個二進制字符串,返回它們的和(用二進制表示)。 輸入爲 非空 字符串且只包含數字 1 和 0。 示例 1: 輸入: a = "11", b = "1" 輸出: "100" 示例 2: 輸入: a = "1010",