原创 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

原创 LeetCode 295. Find Median from Data Stream (堆)

題目 求一個數組的中位數,但是這個數組是動態增加的,怎麼做呢?可以考慮到用插入排序,每增加一個值,都插入排序一下,最壞的效率是O(n),查詢效率是O(1) 效率太低,會超時。更高明的做法,是維護兩個堆,一個是大堆,一個是小堆,大堆的數字都大

原创 LeetCode 300. Longest Increasing Subsequence (DP)

題目 經典題目,最長遞增子序列。 有O(n^2)效率,還有O(n*logn)效率的。 O(n^2)的效率很好理解的啦,就是大家最常見的那種DP O(n*logn) 的方法是維護一個遞增的棧,這個棧不等於最長遞增子序列。但是數組的長度一定是等

原创 LeetCode 292. Nim Game(博弈論)

題目 題意:地上有一堆石頭,每次只能拿1-3個石頭,兩個人輪流拿,誰拿走最後一個石頭,誰就獲勝。你先手。 題解:如果地上的石頭小於等於3個,先手必贏,當等於4的時候,後手必贏。基於4我們可以推出,當石頭的數=8的時候,後手也必贏,5,6,7

原创 LeetCode 240. Search a 2D Matrix II

題目 O(m+n) class Solution { public: int n,m; bool searchMatrix(vector<vector<int>>& matrix, int target) {

原创 LeetCode 241. Different Ways to Add Parentheses

題目 遞歸,分治,暴力跑就可以了 class Solution { public: vector<int> diffWaysToCompute(string input) { vector<int>

原创 LeetCode 242. Valid Anagram

題目 class Solution { public: int vis[100005]; bool isAnagram(string s, string t) { for(

原创 LeetCode Contest 182

第一題 class Solution { public: int findLucky(vector<int>& arr) { sort(arr.begin(),arr.end());

原创 CodeForces 626 DIV.2 D Present

題目 題解: 現場想到了從結果的二進制的每一位考慮,每一位都是由比它低的低位決定的,但是規律沒找好。 舉個例子,結果的二進制的第3位(從0位開始)上是否爲1,是由0 到 2^4-1 之間的數決定,就是 0000 - 1111 之間所有數兩

原创 CodeForces #626 DIV2

現場只寫出來兩道。 第一題 題意:找到數組任意一個子集的和是偶數 題解:貪心,找到任意一個偶數或者兩個奇數就可以了。 #include <iostream> #include <stdio.h> #include <stdlib.h> #i

原创 LeetCode Contest 179

這次終於四題全過了。 這次比賽也確實比較簡單 第一題 class Solution { public: string generateTheString(int n) { stri

原创 LeetCode 295. Find Median from Data Stream(multiset,heap)

題目 題意:有n個操作,存入數字,和輸出中位數 題解:要確保輸入數字的操作和輸出中位數的操作,都是低於等於Log(n)的效率。 那麼怎麼做呢?我們維護兩個multiset ,內部是一棵紅黑樹。一個樹A 維護的是較大值,樹B維護的是較小值。A