原创 leetcode 378. 有序矩陣中第K小的元素【優先隊列】【二分】

題目鏈接:378. 有序矩陣中第K小的元素 給定一個 n x n 矩陣,其中每行和每列元素均按升序排序,找到矩陣中第 k 小的元素。 請注意,它是排序後的第 k 小元素,而不是第 k 個不同的元素。 示例: matrix = [

原创 leetcode 74. 搜索二維矩陣【二分】

題目鏈接:74. 搜索二維矩陣 編寫一個高效的算法來判斷 m x n 矩陣中,是否存在一個目標值。該矩陣具有如下特性: 每行中的整數從左到右按升序排列。 每行的第一個整數大於前一行的最後一個整數。 示例 1: 輸入: matrix

原创 一維數組與二維數組下標的轉換

設一維數組下標爲index,二維數組長度爲m * n,則: 一維數組轉換爲二維數組 row = index / n col = index % n 二維數組轉換爲一維數組 index = col + row * n

原创 Java 文件IO流

相對路徑: windows系統中一般用反斜槓 \ 來表示路徑。兩個反斜槓 \\是因爲需要轉義。 相對路徑是相對於項目根目錄的路徑,例如項目名稱爲programme,裏面有src文件,src文件裏有java1包,那麼相對路徑和絕對路

原创 洛谷P1091 合唱隊形【線性DP】

題目鏈接:P1091 合唱隊形 程序說明: f[i]表示 i 左側的最長上升子序列,g[i]表示 i 右側的最長上升子序列。合唱隊形的總人數爲 f[i] + g[i] - 1。總人數減去合唱隊形人數的最大值,就是出列的同學的最小

原创 洛谷P1387 最大正方形【DP】

題目鏈接:P1387 最大正方形 程序說明: 參考了Ice_teapoy大佬的題解 第一個題解。f[i][j]表示a[i][j]左上角的最大正方形邊長。f[i][j] 由 f[i - 1][j],f[i][j - 1],f[i

原创 整數劃分【DP】

題目鏈接:900. 整數劃分 一個正整數n可以表示成若干個正整數之和,形如:n=n1+n2+…+nk,其中n1≥n2≥…≥nk,k≥1。 我們將這樣的一種表示稱爲正整數n的一種劃分。 現在給定一個正整數n,請你求出n共有多少種不同

原创 洛谷P1020 導彈攔截【LIS 貪心+二分】

題目鏈接:P1020 導彈攔截 程序說明: 第一個問題是求最長非上升子序列。upper_bound和lower_bound只能對非遞減序列進行查找,由題可知 f 數組是單調遞減的,因此需要在upper_bound函數中多一個參數

原创 leetcode 695. 島嶼的最大面積【DFS】

題目鏈接:695. 島嶼的最大面積 給定一個包含了一些 0 和 1 的非空二維數組 grid 。 一個 島嶼 是由一些相鄰的 1 (代表土地) 構成的組合,這裏的「相鄰」要求兩個 1 必須在水平或者豎直方向上相鄰。你可以假設 gr

原创 蒙德里安的夢想【狀態壓縮DP】

題目鏈接:291. 蒙德里安的夢想 求把NM的棋盤分割成若干個12的的長方形,有多少種方案。 例如當N=2,M=4時,共有5種方案。當N=2,M=3時,共有3種方案。 如下圖所示:(圖在鏈接裏.) 輸入格式 輸入包含多組測試用例

原创 Java 常用集合類

ArrayList 可變數組。List接口可以指向ArrayList實例化對象的引用,因此以下兩種聲明方式都可以。 List<Integer> arr = new ArrayList<Integer>(); //或者 ArrayL

原创 leetcode 121. 買賣股票的最佳時機【線性DP】

題目鏈接:121. 買賣股票的最佳時機 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出股

原创 leetcode 365. 水壺問題【最大公約數】

題目鏈接:365. 水壺問題 有兩個容量分別爲 x升 和 y升 的水壺以及無限多的水。請判斷能否通過使用這兩個水壺,從而可以得到恰好 z升 的水? 如果可以,最後請用以上水壺中的一或兩個來盛放取得的 z升 水。 你允許: 裝滿任意

原创 leetcode 994. 腐爛的橘子【BFS】

題目鏈接:994. 腐爛的橘子 在給定的網格中,每個單元格可以有以下三個值之一: 值 0 代表空單元格; 值 1 代表新鮮橘子; 值 2 代表腐爛的橘子。 每分鐘,任何與腐爛的橘子(在 4 個正方向上)相鄰的新鮮橘子都會腐爛。 返

原创 第十屆藍橋杯省賽Java A組 迷宮【BFS】

【問題描述】 下圖給出了一個迷宮的平面圖,其中標記爲 1 的爲障礙,標記爲 0 的爲可以通行的地方。 010000 000100 001001 110000 迷宮的入口爲左上角,出口爲右下角,在迷宮中,只能從一個位置走到這 個它