原创 LeetCode 2040. Kth Smallest Product of Two Sorted Arrays

題目 題意: 兩個拍排好序的數組,a, b 問你第k小的兩個數組的元素乘積是多大。 題解: 兩個數組的元素乘積最小是-10^5 * 10^5 最大是10^5 * 10^5 我們可以在這個範圍內做二分,那麼問題的關鍵就是能不能給你一個數,讓你

原创 LeetCode 1931. Painting a Grid With Three Different Colors(DP)

題目 題解,動態規劃 因爲m 最大隻有5,所以我們可以枚舉5個相鄰的塊,最多有多少種可能, 然後分析每個是否能與其他幾個並排,然後就是簡單的BP了 class Solution { public: int dp[50][5];

原创 LeetCode 1803. Count Pairs With XOR in a Range (二叉樹)

題目 在一個數組裏面找到兩個數異或的結果在某個範圍之內。 這種題目,就要用二叉樹, 代碼寫的又臭又長。。 struct Node { int value; int left; int right; int num; int

原创 LeetCode 1766. Tree of Coprimes

題目 題意: 對於樹上的每個節點,找出與它的值互質的最近的祖先節點。 題解: 由於節點上的值在1-50之間,所以算互質很好算,事先算法。然後就是深度優先遍歷樹的時候維護路徑上的節點的位置,利用1-50這個小範圍,快速找到與當前節點值互質的值

原创 LeetCode 1739. Building Boxes

https://leetcode.com/problems/building-boxes/ 題意:在一個邊長是n的立方體中放n個方塊,方塊可以疊加,但是被疊加的在下方的方塊八面必須挨着牆或者別的方塊。 問最底部最少可以放多少個方塊。 這是一

原创 1745. Palindrome Partitioning IV (迴文樹)

題目 題意:判斷一個字符串是否可以由三個迴文串組成 題解:利用強大的迴文樹,計算出以每個字符爲結尾的迴文串,然後從字符串的最後一個字符開始,遞歸判斷。 struct Tree { int next[4005][30]; int fail

原创 1755. Closest Subsequence Sum

題目 題意:從一個數組找出一個子集,使得子集的和給定的目標最相近。 題解:數組的長度爲40,找出全部子集一共有240種可能性,如果把一個數組平均分成兩部分,分別算出兩部分的所有子集和,每部分有220種可能, 然後再二分查找答案。 遇到這種在

原创 LeetCode 1723. Find Minimum Time to Finish All Jobs

題目 題意:將n個數分成k組,使得k組中的最大值最小。 題解:暴力DFS,但是要注意兩個地方剪枝,首先在DFS的過程中判斷當前的最大值是不是已經超過了已有答案。 第二個剪枝的地方比較triky,由於我們對k組沒有順序要求的,所以當剩下的組都

原创 LeetCode 1632. Rank Transform of a Matrix

題目 拖了兩個月,終於這這道題目AC了。 思路是貪心,將所有的元素從小到大排序。並且維護兩個數組,一個數組代表每一行的當前已經填上的最大的rank,比如nrank[0]=2 表示第0行,目前已經填到了rank=2,下一個再填就一定是>=2的

原创 LeetCode 1547. Minimum Cost to Cut a Stick(動態規劃)

題目 區間DP,由於棍子長100萬,所以我們在cuts之間做區間DP。 那麼狀態轉移方程就是很簡單直白的區間DP dp[i][j] = min { dp[i][k-1] + cost(k) + dp[k+1][j]} i<=k<=j cos

原创 LeetCode 1546. Maximum Number of Non-Overlapping Subarrays With Sum Equals Target(動態規劃)

題目 題意:在一個數組中,找到最多的不相交的子序列,每個子序列的和等於target。 題解:動態規劃 dp[i]表示從0到i的子數組的答案。維護前綴數組sums[],我們維護一個記錄前綴和的map,map[x]表示前綴和是x距離當前i最近的

原创 LeetCode 354 Russian Doll Envelopes (動態規劃)

題目 一道好題目,把最長遞增子序列擴展到二維,但是這道題和最長遞增子序列是有區別的,它不要求是序列,只是在數組中找到一組最長的組合,不要求順序在初始中相同。 這是個二維的最長遞增子序列,由於沒有順序限制,所以我們把第一維進行排序,然後對第二

原创 個人站點大開發!--起始篇

鑑於現在,工作比較閒。業餘時間比較多,比如這篇博文就是上班時間寫的。我想好好開發一下個人站點。 之前本人自己於業餘時間搭建了一個人網站,http://oj.kanghekeji.cn 是一個在線OJ刷題網站。 目前採用前後端分離,所謂前後端

原创 LeetCode 309. Best Time to Buy and Sell Stock with Cooldown (DP)

題目 動態規劃 dp[i][0] 表示當天什麼都不操作 dp[i][1] 表示當天買進 dp[i][2] 表示當天賣出 狀態轉移就好寫出了 class Solution { public: long long int dp[1000

原创 LeetCode 301. Remove Invalid Parentheses ( DP )

題目 刪除最少的括號,讓所有括號匹配起來。 大部分都是用DFS,或者BFS。我用的DP,也可以過 dp[i][j] :means it need remove at least dp[i][j] characters to get vail