1#ifndef PROBLEMSCPP_LEETCODE_H
2#define PROBLEMSCPP_LEETCODE_H
16#include <unordered_set>
73 namespace concatenated_words {
84 nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
86 nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
88 nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr};
92 void insert(
const string &str);
94 bool dfs(
TrieNode * ,
const string & ,
int ,
bool )
const;
98 namespace excel_sheet_column_number {
173 static vector<vector<int>>
construct2DArray(vector<int> &original,
int m,
int n);
217 static string dayOfTheWeek(
int day,
int month,
int year);
241 int getResult(
int mouse,
int cat,
int turns);
270 static int maxDepth(
const string &s);
286 static bool checkValid(vector<vector<int>> &matrix);
294 static int minSwaps(vector<int> &nums);
302 static int wordCount(vector<string> &startWords, vector<string> &targetWords);
304 static unsigned int str2bin(
const string & );
312 static char slowestKey(vector<int> &releaseTimes,
string keysPressed);
331 static bool dfs(
unsigned long long n1,
unsigned long long n2,
const char * ,
unsigned short length,
unsigned short current);
338 static unsigned long long str2ui(
const char * ,
unsigned short start,
unsigned short length);
346 static bool equal(
string ,
const char * ,
unsigned short start,
unsigned short length);
360 static string rtrim(
string &s);
387 static bool isEscapePossible(vector<vector<int>> &blocked, vector<int> &source, vector<int> &target);
395 static unsigned int search(unordered_set<point, point_hash> &block_set,
point *source,
point *target,
unsigned int limit);
432 static vector<vector<int>>
kSmallestPairs(vector<int> &nums1, vector<int> &nums2,
int k);
442 static vector<vector<int>>
permute(vector<int> &nums);
473 namespace divide_a_string_into_groups_of_size_k {
476 static vector<string>
divideString(
const string &s,
int k,
char fill);
486 static int minMoves(
int target,
int maxDoubles);
496 static long long mostPoints(vector<vector<int>> &questions);
506 static long long maxRunTime(
int n, vector<int> &batteries);
551 static int minJumps(vector<int> &arr);
575 void insert(
const string &str);
576 [[nodiscard]]
string get_prefix(
string root,
const string &str)
const;
581 static string replaceWords(vector<string> &dictionary,
const string &sentence);
601 static int numberOfArrays(vector<int> &differences,
int lower,
int upper);
622 static vector<vector<int>>
highestRankedKItems(vector<vector<int>> &grid, vector<int> &pricing, vector<int> &start,
int k);
662 static vector<int>
findLonely(vector<int> &nums);
680 static int maximumGood(vector<vector<int>> &statements);
681 static pair<int, unordered_map<int, bool>>
dfs(vector<vector<int>> &statements, unordered_map<int, bool> um, queue<msg> que);
701 void update(
int timestamp,
int price);
702 [[nodiscard]]
int current()
const;
703 [[nodiscard]]
int maximum()
const;
704 [[nodiscard]]
int minimum()
const;
723 static int secondMinimum(
int n, vector<vector<int>> &edges,
int time,
int change);
743 multiset<pair<int, int>>
ms;
747 void add(vector<int> point);
748 [[nodiscard]]
int count(vector<int> point)
const;
772 static bool patternMatching(
const string &pattern,
const string &value);
782 static vector<vector<int>>
highestPeak(vector<vector<int>> &isWater);
822 static string subStrHash(
string s,
int power,
int modulo,
int k,
int hashValue);
833 unordered_map<unsigned int, unsigned int>
parent = unordered_map<unsigned int, unsigned int>();
834 unordered_map<unsigned int, unsigned int>
rank = unordered_map<unsigned int, unsigned int>();
835 unordered_map<unsigned int, unsigned int>
size = unordered_map<unsigned int, unsigned int>();
839 static unsigned int compress(
const string &word);
840 void insert(
unsigned int num);
841 unsigned int find(
unsigned int x);
842 void to_union(
unsigned int x1,
unsigned int x2);
859 static pair<int, int>
dfs(
string s,
int start,
int end);
878 static int find_min(set<
int, greater<>> &fibb,
int k, set<
int, greater<>>::iterator begin);
895 static int get_sum(
int current,
int x,
int y,
int m,
int n, vector<vector<int>> &grid,
bool **occupied);
915 static vector<int>
pivotArray(vector<int> &nums,
int pivot);
925 static int minCostSetTime(
int startAt,
int moveCost,
int pushCost,
int targetSeconds);
926 static int get_cost(
int startAt,
int moveCost,
int pushCost,
const int num[4]);
987 void fix(
int idx)
const;
991 void unfix(
int idx)
const;
999 [[nodiscard]]
bool all()
const;
1003 [[nodiscard]]
bool one()
const;
1007 [[nodiscard]]
int count()
const;
1011 [[nodiscard]]
string toString()
const;
1020 static void sort(
char ch[3],
int a,
int b,
int c);
1021 static int *
get_p(
char ch,
int *a,
int *b,
int *c);
1028 unsigned long long operator()(
const pair<int, int> & )
const;
1033 static vector<int>
gridIllumination(
int n, vector<vector<int>> &lamps, vector<vector<int>> &queries);
1050 static int gcd(
int m,
int n);
1068 static int numEnclaves(vector<vector<int>> &grid);
1088 static bool canTransform(
const string &start,
const string &end);
1145 static vector<int>
luckyNumbers(vector<vector<int>> &matrix);
1153 static int checkWays(vector<vector<int>> &pairs);
1161 static int findCenter(vector<vector<int>> &edges);
1185 unordered_map<status, double, status_hash, status_equal>
um = unordered_map<status, double, status_hash, status_equal>();
1204 static int countPairs(vector<int> &nums,
int k);
1212 static vector<long long>
sumOfThree(
long long num);
1234 this->limit =
limit;
1246 for(; idx > 0; idx -=
lowbit(idx)) {
1255 static long long goodTriplets(vector<int> &nums1, vector<int> &nums2);
1287 static long long coutPairs(vector<int> &nums,
int k);
1323 static constexpr array<int, 10>
primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
1325 static constexpr int mod = 1000000007;
1345 static vector<int>
findBall(vector<vector<int>> &grid);
1381 static int prefixCount(vector<string> &words,
string pref);
1391 static int minSteps(
const string &s,
const string &t);
1401 static long long minimumTime(vector<int> &time,
int totalTrips);
1411 static int minimumFinishTime(vector<vector<int>> &tires,
int changeTime,
int numLaps);
1427 static string convert(
string s,
int numRows);
1480 bool operator()(
const tuple<int, int, int> &s1,
const tuple<int, int, int> &s2)
const {
1481 auto [i1, num1, rev1] = s1;
1482 auto [i2, num2, rev2] = s2;
1492 static vector<int>
sortJumbled(vector<int> &mapping, vector<int> &nums);
1501 unordered_map<int, unordered_set<int>>
nexts;
1505 vector<vector<int>>
getAncestors(
int n, vector<vector<int>> &edges);
1506 void dfs(
bool *dfsd,
int v,
int i);
1536 static long long minimalKSum(vector<int> &nums,
int k);
1605 Node(
int _val, vector<Node *> _children)
1606 :
val(_val),
children(std::move(std::move(_children))) {}
1628 [[nodiscard]]
const vector<TreeNode *> &
get_children()
const;
1651 Node(
int _val, vector<Node *> _children)
1652 :
val(_val),
children(std::move(std::move(_children))) {}
1669 unordered_map<pair<int, int>, pair<int, int>, function<
unsigned int(
const pair<int, int> &)>>
parent;
1670 unordered_map<pair<int, int>, int, function<
unsigned int(
const pair<int, int> &)>>
size;
1671 unordered_map<pair<int, int>, int, function<
unsigned int(
const pair<int, int> &)>>
rank;
1675 pair<int, int>
find(pair<int, int> val);
1676 void merge(pair<int, int> a, pair<int, int> b);
1677 bool same(pair<int, int> a, pair<int, int> b);
1678 [[nodiscard]]
bool contains(pair<int, int> p)
const;
1700 static int digArtifacts(
int n, vector<vector<int>> &artifacts, vector<vector<int>> &dig);
1708 static int maximumTop(vector<int> &nums,
int k);
1716 static long long minimumWeight(
int n, vector<vector<int>> &edges,
int src1,
int src2,
int dest);
1717 static void calc_dist(
int s, vector<pair<int, int>> *graph, vector<long long int> &dist);
1725 static bool validUtf8(vector<int> &data);
1733 static vector<string>
findRestaurant(vector<string> &list1, vector<string> &list2);
1742 static int dfs(
int current,
int target, vector<int> nums);
1758 void inc(
const string &key);
1760 void dec(
const string &key);
1775 static string dfs(
const string &str,
TrieNode *node);
1786 explicit Bank(vector<long long> &balance);
1789 bool transfer(
int account1,
int account2,
long long money);
1792 bool deposit(
int account,
long long money);
1795 bool withdraw(
int account,
long long money);
1851 static vector<int>
maximumBobPoints(
int numArrows, vector<int> &aliceArrows);
1896 static int getSteps(
int curr,
long n);
1904 static vector<vector<int>>
imageSmoother(vector<vector<int>> &img);
1920 static int calPoints(vector<string> &ops);
1938 unsigned long long qmi(
unsigned long long m,
unsigned long long k);
1942 static vector<long long>
kthPalindrome(vector<int> &queries,
int intLength);
1952 static vector<int>
missingRolls(vector<int> &rolls,
int mean,
int n);
1985 static vector<int>
busiestServers(
int k, vector<int> &arrival, vector<int> &load);
2039 static int convertTime(
string current,
string correct);
2049 static vector<vector<int>>
findWinners(vector<vector<int>> &matches);
2075 Encrypter(vector<char> &keys, vector<string> &values, vector<string> &dictionary);
2080 [[nodiscard]]
string encrypt(
const string &word1)
const;
2085 [[nodiscard]]
int decrypt(
const string &word2);
2100 void update(
int index,
int val);
2103 [[nodiscard]]
int sumRange(
int left,
int right)
const;
2111 static vector<bool>
friendRequests(
int n, vector<vector<int>> &restrictions, vector<vector<int>> &requests);
2127 static int findLongestNode(
int u, vector<int> &parent, vector<vector<int>> &adj);
2136 static bool rotateString(
string s,
const string &goal);
2151 Node(
int _val, vector<Node *> _children)
2152 :
val(_val),
children(std::move(std::move(_children))){};
2187 static long long maximumBeauty(vector<int> &flowers,
long long newFlowers,
int target,
int full,
int partial);
2203 static vector<int>
numberOfLines(vector<int> &widths,
string s);
2261 bool addCar(
int carType);
2272 explicit NumArray(vector<int> &nums);
2274 [[nodiscard]]
int sumRange(
int left,
int right)
const;
2282 static int rob(vector<int> &nums);
2324 vector<int>
reset();
2326 [[nodiscard]] vector<int>
shuffle()
const;
2334 static vector<int>
findAnagrams(
string s,
const string &p);
2383 static void dfs(vector<vector<char>> &board,
int x,
int y);
2384 static void solve(vector<vector<char>> &board);
2392 static int dfs(vector<vector<int>> &graph, vector<vector<int>> &ans,
int cur);
2401 static void dfs(set<vector<int>> &s,
const vector<int> ¤t, vector<int> rest);
2402 static vector<vector<int>>
permuteUnique(vector<int> &nums);
2410 static vector<vector<int>>
recurse(vector<int> &candidates,
int target,
int index);
2411 static vector<vector<int>>
combinationSum(vector<int> &candidates,
int target);
2419 static vector<vector<int>>
recurse(vector<int> &candidates,
int target,
int index);
2420 static vector<vector<int>>
combinationSum2(vector<int> &candidates,
int target);
2428 static int rob(vector<int> &nums);
2436 static bool canJump(vector<int> &nums);
2444 static int jump(vector<int> &nums);
2484 static void search(
const TrieNode *tn,
const string &s,
int i, vector<bool> &end);
2485 static bool wordBreak(
const string &s, vector<string> &wordDict);
2517 static int minDistance(
const string &word1,
const string &word2);
2525 static int minDistance(
string word1,
string word2);
2533 static int coinChange(vector<int> &coins,
int amount);
2549 static int maxPoints(vector<vector<int>> &points);
2557 static vector<vector<string>>
groupAnagrams(vector<string> &strs);
2565 static void qsort(vector<int> &nums,
int l,
int r);
2574 static vector<int>
topKFrequent(vector<int> &nums,
int k);
2590 static vector<vector<int>>
merge(vector<vector<int>> &intervals);
2598 static bool search(
const vector<vector<int>> &matrix,
int target,
int x_start,
int x_end,
int y_start,
int y_end);
2599 static bool searchMatrix(vector<vector<int>> &matrix,
int target);
2626 static const unsigned SZ = 1021;
2634 void put(
int key,
int value);
2702 [[nodiscard]]
int get(
int index)
const;
2735 static unsigned missing(vector<int> &nums,
int i);
2744 static int get(vector<vector<int>> &mat,
int i,
int j);
2745 static vector<int>
findPeakGridLR(vector<vector<int>> &mat,
int l,
int r);
2746 static vector<int>
findPeakGrid(vector<vector<int>> &mat);
2754 static int count(vector<int> &sweetness,
int x);
2771 static pair<int, int>
merge(
const vector<int> &vec1,
const vector<int> &vec2);
2772 static vector<int>
minAvailableDuration(vector<vector<int>> &slots1, vector<vector<int>> &slots2,
int duration);
2780 static int countInRange(vector<int> &nums,
int l,
int r);
2789 static int trap(vector<int> &height);
2797 static vector<vector<int>>
findRLEArray(vector<vector<int>> &encoded1, vector<vector<int>> &encoded2);
2822 static int cntMinFlip(vector<int> &nums,
int len);
2839 static bool valid(unordered_map<char, int> &ums,
const unordered_map<char, int> &umt);
2840 static string minWindow(
string s,
const string &t);
2855 size_t operator()(
const pair<int, int> &p)
const;
2859 bool operator()(
const pair<int, int> &p1,
const pair<int, int> &p2)
const;
2864 static vector<vector<int>>
pacificAtlantic(vector<vector<int>> &heights);
2888 static vector<int>
killProcess(vector<int> &pid, vector<int> &ppid,
int kill);
2912 static int openLock(vector<string> &deadends,
const string &target);
2920 static void dfs(
int &edge_cnt,
int &node_cnt, unordered_set<int> &vis,
int node, vector<unordered_set<int>> &g);
2921 static int makeConnected(
int n, vector<vector<int>> &connections);
2937 bool operator()(
const pair<int, Node *> &p1,
const pair<int, Node *> &p2)
const;
2942 static int minCost(vector<vector<int>> &grid);
2950 static void tarjan(
int prev,
int &step, vector<int> &dfn,
int node, vector<unordered_set<int>> &g, vector<int> &low, vector<vector<int>> &ans);
2960 static vector<vector<int>>
getFactors(
int n);
2975 static void dfs(
const vector<vector<bool>> &board,
int line,
int n, vector<vector<string>> &ans);
2976 static bool valid(
const vector<vector<bool>> &board,
int n,
int x,
int y);
2977 static vector<string>
toStringVec(
const vector<vector<bool>> &board);
2987 static bool dfs(
const vector<vector<char>> &board, vector<vector<char>> &ans);
2988 static bool valid(
const vector<vector<char>> &board,
int x,
int y,
char num);
2991 static void solveSudoku(vector<vector<char>> &board);
2999 static bool dfs(
const string &s,
const string &p,
int si,
int pi);
3000 static bool isMatch(
const string &s,
const string &p);
3009 static vector<int>
eval(
const string &expr,
int start,
int end);
3017 static bool isValid(
const string &str);
3036 void Init(
int length);
3037 static int LowBit(
int x);
3039 [[nodiscard]]
int Query(
int pos)
const;
3052 static int maxProfit(vector<int> &prices);
3060 static int maxProfit(vector<int> &prices,
int fee);
3068 static int get_m(
const vector<int> &nums,
int msum);
3069 static int splitArray(vector<int> &nums,
int m);
3076 size_t operator()(
const pair<TreeNode *, bool> &p)
const;
3080 bool operator()(
const pair<TreeNode *, bool> &p1,
const pair<TreeNode *, bool> &p2)
const;
3121 static void dfs(
const vector<string> ¤t,
const string &s, vector<vector<string>> &ans,
int start,
int cursor);
3122 static vector<vector<string>>
partition(
const string &s);
3130 static int minCut(
string s);
3146 static int mincostTickets(vector<int> &days, vector<int> &costs);
3154 static int maxProfit(vector<int> &prices);
3170 static bool canFinish(
int numCourses, vector<vector<int>> &prerequisites);
3178 static vector<int>
findOrder(
int numCourses, vector<vector<int>> &prerequisites);
3188 static constexpr int dirs[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
3194 namespace parallel_courses {
3215 static string alienOrder(vector<string> &words);
3244 [[nodiscard]]
unsigned get_mask()
const;
3264 unordered_map<string, unordered_map<string, vector<int>>>
um;
3271 void checkIn(
int id,
const string &stationName,
int t);
3273 void checkOut(
int id,
const string &stationName,
int t);
3278 double getAverageTime(
const string &startStation,
const string &endStation);
3287 unordered_map<int, int>
um;
3295 void put(
int key,
int value);
3302 unordered_map<string, map<int, string, greater<int>>>
um;
3308 void set(
const string &key,
string value,
int timestamp);
3312 string get(
const string &key,
int timestamp);
3335 auto it =
s.lower_bound({pos});
3336 if(it !=
s.end() && it->l == pos)
3338 auto [l, r, d]{*--it};
3340 s.emplace(l, pos - 1, d);
3341 return s.emplace(pos, r, d).first;
3345 const auto it =
split(r + 1);
3347 s.emplace(l, r, val);
3351 const auto it =
split(r + 1);
3352 return std::all_of(
split(l), it, [](
auto &&n) {
return n.data; });
3363 void addRange(
int left,
int right);
3374 unordered_map<int, int>
um;
3386 void put(
int key,
int value);
3391 namespace leetcode454_4sum_ii {
3393 vector<unordered_map<int, int>>
mem;
3394 vector<unordered_map<int, int>>
vec;
3398 int fourSumCount(vector<int> &nums1, vector<int> &nums2, vector<int> &nums3, vector<int> &nums4);
3414 static int minSwaps(vector<int> &data);
LeetCode 5976. 检查是否每一行每一列都包含全部整数
LeetCode 5977. 最少交换次数来组合所有的 1 II
LeetCode 5978. 统计追加字母可以获得的单词数
LeetCode 1629. 按键持续时间最长的键
LeetCode 747. 至少是其他数字两倍的最大数
LeetCode 5194. 得到目标值的最少行动次数
LeetCode 5983. 同时运行 N 台电脑的最长时间
LeetCode 1220. 统计元音字母序列的数目
LeetCode 5971. 打折购买糖果的最小开销
LeetCode 5973. 价格范围内最高排名的 K 样物品
LeetCode 5990. 找出数组中的所有孤独数字
LeetCode 5992. 基于陈述统计最多好人数
LeetCode 2045. 到达目的地的第二短时间
LeetCode 5981. 分组得分最高的所有下标
LeetCode 5994. 查找给定哈希值的子串
LeetCode 1342. 将数字变成 0 的操作次数
LeetCode 1414. 和为 K 的最少斐波那契数字数目
LeetCode 1725. 可以形成最大正方形的矩形数目
LeetCode 1219. Path with Maximum Gold
LeetCode 5984. 拆分数位后四位数字的最小和
LeetCode 5985. 根据给定数字划分数组
LeetCode 5987. 删除元素后和的最小差值
LeetCode 1405. Longest Happy String
LeetCode 1001. Grid Illumination
LeetCode 2006. Count Number of Pairs With Absolute Difference K
LeetCode 1447. Simplified Fractions
LeetCode 1984. Minimum Difference Between Highest and Lowest of K Scores
LeetCode 1020. Number of Enclaves
LeetCode 1189. “气球” 的最大数量
LeetCode 777. 在LR字符串中交换相邻字符
LeetCode 6005. 使数组变成交替数组的最少操作数
LeetCode 6006. 拿出最少数目的魔法豆
LeetCode 540. Single Element in a Sorted Array
LeetCode 1380. Lucky Numbers in a Matrix
LeetCode 1719. Number Of Ways To Reconstruct A Tree
LeetCode 1791. Find Center of Star Graph
LeetCode 688. Knight Probability in Chessboard
LeetCode 969. Pancake Sorting
LeetCode 5996. 统计数组中相等且可以被整除的数对
LeetCode 5997. 找到和为给定整数的三个连续整数
LeetCode 5998. 拆分成最多数目的偶整数之和
LeetCode 5999. 统计数组中好三元组数目
LeetCode 6012. 统计各位数字之和为偶数的整数个数
LeetCode 6014. 构造限制重复的字符串
LeetCode 6015. 统计可以被 K 整除的下标对数目
LeetCode 917. Reverse Only Letters
LeetCode 1706. Where Will the Ball Fall
LeetCode 537. Complex Number Multiplication
LeetCode 2016. Maximum Difference Between Increasing Elements
LeetCode 553. Optimal Division
LeetCode 6008. 统计包含给定前缀的字符串
LeetCode 6009. 使两字符串互为字母异位词的最少步骤数
LeetCode 1601. Maximum Number of Achievable Transfer Requests
LeetCode 6. ZigZag Conversion
LeetCode 564. Find the Closest Palindrome
LeetCode 2104. Sum of Subarray Ranges
LeetCode 521. Longest Uncommon Subsequence I
LeetCode 6024. 数组中紧跟 key 之后出现最频繁的数字
LeetCode 5217. 将杂乱无章的数字排序
LeetCode 5300. 有向无环图中一个节点的所有祖先
LeetCode 5237. 得到回文串的最少操作次数
LeetCode 6016. Excel 表中某个范围内的单元格
LeetCode 6017. 向数组中追加 K 个整数
LeetCode 6019. 替换数组中的非互质数
LeetCode 2100. Find Good Days to Rob the Bank
LeetCode 2055. Plates Between Candles
LeetCode 798. Smallest Rotation with Highest Score
LeetCode 589. N-ary Tree Preorder Traversal
LeetCode 2049. Count Nodes With the Highest Score
LeetCode 590. N-ary Tree Postorder Traversal
LeetCode 695. Max Area of Island
LeetCode 6031. 找出数组中的所有 K 近邻下标
LeetCode 5227. K 次操作后最大化顶端元素
LeetCode 6032. 得到要求路径的最小带权子图
LeetCode 393. UTF-8 Validation
LeetCode 599. Minimum Index Sum of Two Lists
LeetCode 2044. Count Number of Maximum Bitwise-OR Subsets
LeetCode 432. All O`one Data Structure
LeetCode 720. Longest Word in Dictionary
LeetCode 2043. Simple Bank System
LeetCode 606. Construct String from Binary Tree
LeetCode 6021. Maximize Number of Subsequences in a String
LeetCode 6022. Minimum Operations to Halve Array Sum
LeetCode 6023. Minimum White Tiles After Covering With Carpets
LeetCode 6027. Count Hills and Valleys in an Array
LeetCode 6028. Count Collisions on a Road
LeetCode 6029. Maximum Points in an Archery Competition
LeetCode 2039. The Time When the Network Becomes Idle
LeetCode 653. Two Sum IV - Input is a BST
Remove Colored Pieces if Both Neighbors are the Same Color
K-th Smallest in Lexicographical Order
Factorial Trailing Zeroes
unsigned long long qmi(unsigned long long m, unsigned long long k)
Find Missing Observations
Binary Number with Alternating Bits
Maximize the Confusion of an Exam
Find Servers That Handled Most Number of Requests
Minimum Number of Operations to Convert Time
Find Players With Zero or One Losses
Maximum Candies Allocated to K Children
Range Sum Query - Mutable
Process Restricted Friend Requests
Prime Number of Set Bits in Binary Representation
N-ary Tree Level Order Traversal
Count Numbers with Unique Digits
Number of Lines To Write String
Insert Delete GetRandom O(1)
Projection Area of 3D Shapes
Range Sum Query - Immutable
Lowest Common Ancestor of a Binary Search Tree
Find All Anagrams in a String
Subarray Product Less Than K
Minimum Size Subarray Sum
Populating Next Right Pointers in Each Node II
Shortest Path in Binary Matrix
All Paths From Source to Target
Longest Palindromic Substring
Longest Increasing Subsequence
Number of Longest Increasing Subsequence
Longest Common Subsequence
Delete Operation for Two Strings
Kth Largest Element in an Array
Serialize and Deserialize Binary Tree
Non-overlapping Intervals
Product of Array Except Self
TreeNode(int x, TreeNode *left, TreeNode *right)
bool operator==(const TreeNode &) const
bool operator!=(const TreeNode &) const
ListNode(int x, ListNode *next)
Node(int _val, Node *_left, Node *_right, Node *_next)
static vector< string > findAllConcatenatedWordsInADict(vector< string > &)
bool dfs(TrieNode *, const string &, int, bool) const
void insert(const string &str)
static int titleToNumber(const string &columnTitle)
static string convertToTitle(int columnNumber)
int majorityElement(vector< int > &nums)
static int countQuadruplets(vector< int > &)
static bool isNStraightHand(vector< int > &hand, int groupSize)
static bool checkPerfectNumber(int num)
FriendTreeNode(int x, TreeNode *friend_node)
static void get_sum(FriendTreeNode *)
static TreeNode * convertBST(TreeNode *root)
static void convert(FriendTreeNode *)
static FriendTreeNode * copy(TreeNode *)
static vector< vector< int > > construct2DArray(vector< int > &original, int m, int n)
static int lastRemaining(int)
static bool checkString(const string &)
static int numberOfBeams(vector< string > &)
static int deviceCount(const string &)
static bool asteroidsDestroyed(int mass, vector< int > &asteroids)
static int maximumInvitations(vector< int > &)
static string dayOfTheWeek(int day, int month, int year)
int getResult(int mouse, int cat, int turns)
int dp[MAXN][MAXN][MAXN *2]
int catMouseGame(vector< vector< int > > &graph)
void getNextResult(int mouse, int cat, int turns)
vector< vector< int > > graph
static string modifyString(string s)
static string simplifyPath(const string &path)
static int maxDepth(const string &s)
static vector< int > grayCode(int n)
static bool checkValid(vector< vector< int > > &matrix)
static int minSwaps(vector< int > &nums)
static unsigned int str2bin(const string &)
static int wordCount(vector< string > &startWords, vector< string > &targetWords)
static char slowestKey(vector< int > &releaseTimes, string keysPressed)
static bool dfs(unsigned long long n1, unsigned long long n2, const char *, unsigned short length, unsigned short current)
static bool isAdditiveNumber(string num)
static unsigned long long str2ui(const char *, unsigned short start, unsigned short length)
将字符串的一个子串转换为整数
static bool equal(string, const char *, unsigned short start, unsigned short length)
判断一个字符串与另一个字符串的子串是否相等
static string decodeCiphertext(string encodedText, int rows)
static string rtrim(string &s)
去除字符串右边的空白符 https://blog.csdn.net/tiandyoin/article/details/81508445
bool operator==(const point &p) const
bool operator<(const point &p) const
point(unsigned int x, unsigned int y, int distance, point *target)
size_t operator()(const point &p) const
static bool isEscapePossible(vector< vector< int > > &blocked, vector< int > &source, vector< int > &target)
static unsigned int search(unordered_set< point, point_hash > &block_set, point *source, point *target, unsigned int limit)
在迷宫中以source为起点搜索
static bool increasingTriplet(vector< int > &nums)
static int dominantIndex(vector< int > &nums)
bool operator<(const pair &) const
static vector< vector< int > > kSmallestPairs(vector< int > &nums1, vector< int > &nums2, int k)
static vector< vector< int > > permute(vector< int > &nums)
static int totalMoney(int n)
static vector< string > divideString(const string &s, int k, char fill)
static int minMoves(int target, int maxDoubles)
static long long mostPoints(vector< vector< int > > &questions)
static long long maxRunTime(int n, vector< int > &batteries)
static int countVowelPermutation(int n)
static int findMinDifference(vector< string > &timePoints)
static bool containsNearbyDuplicate(vector< int > &nums, int k)
static bool stoneGameIX(vector< int > &stones)
static int minJumps(vector< int > &arr)
static int removePalindromeSub(string s)
void insert(const string &str)
string get_prefix(string root, const string &str) const
static string replaceWords(vector< string > &dictionary, const string &sentence)
static int minimumCost(vector< int > &cost)
static int numberOfArrays(vector< int > &differences, int lower, int upper)
item(int distance, int price, int row, int col)
bool operator<(const item &) const
static vector< vector< int > > highestRankedKItems(vector< vector< int > > &grid, vector< int > &pricing, vector< int > &start, int k)
static int numberOfWays(string corridor)
static int countElements(vector< int > &nums)
static vector< int > rearrangeArray(vector< int > &nums)
static vector< int > findLonely(vector< int > &nums)
msg(int person, bool good)
static int maximumGood(vector< vector< int > > &statements)
static pair< int, unordered_map< int, bool > > dfs(vector< vector< int > > &statements, unordered_map< int, bool > um, queue< msg > que)
void update(int timestamp, int price)
status(int position, int time)
bool operator<(const status &s) const
static int secondMinimum(int n, vector< vector< int > > &edges, int time, int change)
static int numberOfMatches(int n)
multiset< pair< int, int > > ms
void add(vector< int > point)
int count(vector< int > point) const
static int countValidWords(const string &sentence)
static int numberOfWeakCharacters(vector< vector< int > > &properties)
static bool patternMatching(const string &pattern, const string &value)
static vector< vector< int > > highestPeak(vector< vector< int > > &isWater)
static vector< string > uncommonFromSentences(const string &s1, const string &s2)
static int findFinalValue(vector< int > &nums, int original)
static vector< int > maxScoreIndices(vector< int > &nums)
static string subStrHash(string s, int power, int modulo, int k, int hashValue)
unordered_map< unsigned int, unsigned int > rank
unordered_map< unsigned int, unsigned int > size
unordered_map< unsigned int, unsigned int > parent
static unsigned int compress(const string &word)
void insert(unsigned int num)
vector< int > groupStrings(vector< string > &words)
void to_union(unsigned int x1, unsigned int x2)
unsigned int find(unsigned int x)
static int numberOfSteps(int num)
static string longestNiceSubstring(const string &s)
static pair< int, int > dfs(string s, int start, int end)
static string reversePrefix(string word, char ch)
static int findMinFibonacciNumbers(int k)
static int find_min(set< int, greater<> > &fibb, int k, set< int, greater<> >::iterator begin)
static int countGoodRectangles(vector< vector< int > > &rectangles)
static int get_sum(int current, int x, int y, int m, int n, vector< vector< int > > &grid, bool **occupied)
static int getMaximumGold(vector< vector< int > > &grid)
static int minimumSum(int num)
static vector< int > pivotArray(vector< int > &nums, int pivot)
static int get_cost(int startAt, int moveCost, int pushCost, const int num[4])
static int minCostSetTime(int startAt, int moveCost, int pushCost, int targetSeconds)
static long long minimumDifference(vector< int > &nums)
static int sumOfUnique(vector< int > &nums)
static vector< int > sortEvenOdd(vector< int > &nums)
static long long smallestNumber(long long num)
set< unsigned int > * zero0
Bitset(int size)
用 size 个位初始化 Bitset ,所有位都是 0 。
string toString() const
返回 Bitset 的当前组成情况。注意,在结果字符串中,第 i 个下标处的字符应该与 Bitset 中的第 i 位一致。
bool one() const
检查 Bitset 中 是否 至少一位 的值是 1 。如果满足此条件,返回 true ;否则,返回 false 。
void fix(int idx) const
将下标为 idx 的位上的值更新为 1 。如果值已经是 1 ,则不会发生任何改变。
bool all() const
检查 Bitset 中 每一位 的值是否都是 1 。如果满足此条件,返回 true ;否则,返回 false 。
void flip()
翻转 Bitset 中每一位上的值。换句话说,所有值为 0 的位将会变成 1 ,反之亦然。
set< unsigned int > * one1
int count() const
返回 Bitset 中值为 1 的位的 总数 。
void unfix(int idx) const
将下标为 idx 的位上的值更新为 0 。如果值已经是 0 ,则不会发生任何改变。
static int * get_p(char ch, int *a, int *b, int *c)
static void sort(char ch[3], int a, int b, int c)
static string longestDiverseString(int a, int b, int c)
unsigned long long operator()(const pair< int, int > &) const
static vector< int > gridIllumination(int n, vector< vector< int > > &lamps, vector< vector< int > > &queries)
static int countKDifference(vector< int > &nums, int k)
static vector< string > simplifiedFractions(int n)
static int gcd(int m, int n)
static int minimumDifference(vector< int > &nums, int k)
static int numEnclaves(vector< vector< int > > &grid)
static int maxNumberOfBalloons(const string &text)
static bool canTransform(const string &start, const string &end)
static int countOperations(int num1, int num2)
static int minimumOperations(vector< int > &nums)
static long long minimumRemoval(vector< int > &beans)
static int maximumANDSum(vector< int > &nums, int numSlots)
static int singleNonDuplicate(vector< int > &nums)
static vector< int > luckyNumbers(vector< vector< int > > &matrix)
static int checkWays(vector< vector< int > > &pairs)
static int findCenter(vector< vector< int > > &edges)
status(int k, int row, int column)
unsigned int operator()(const status &) const
bool operator()(const status &, const status &) const
unordered_map< status, double, status_hash, status_equal > um
double knightProbability(int n, int k, int row, int column)
static vector< int > pancakeSort(vector< int > &arr)
static int countPairs(vector< int > &nums, int k)
static vector< long long > sumOfThree(long long num)
static vector< long long > maximumEvenSplit(long long finalSum)
void update(int idx, T delta)
static long long goodTriplets(vector< int > &nums1, vector< int > &nums2)
static int countEven(int num)
static ListNode * mergeNodes(ListNode *head)
static string repeatLimitedString(const string &s, int repeatLimit)
static long long coutPairs(vector< int > &nums, int k)
static bool isOneBitCharacter(vector< int > &bits)
static int longestMountain(vector< int > &arr)
static string pushDominoes(string dominoes)
static int numberOfGoodSubsets(vector< int > &nums)
static constexpr int mask_max
static constexpr int num_max
static constexpr array< int, 10 > primes
static string reverseOnlyLetters(string s)
static vector< int > findBall(vector< vector< int > > &grid)
static string complexNumberMultiply(const string &num1, const string &num2)
static int maximumDifference(vector< int > &nums)
static string optimalDivision(vector< int > &nums)
static int prefixCount(vector< string > &words, string pref)
static int minSteps(const string &s, const string &t)
static long long minimumTime(vector< int > &time, int totalTrips)
static int minimumFinishTime(vector< vector< int > > &tires, int changeTime, int numLaps)
static int maximumRequests(int n, vector< vector< int > > &requests)
static string convert(string s, int numRows)
static string nearestPalindromic(const string &n)
static int addDigits(int num)
static long long subArrayRanges(vector< int > &nums)
static int findLUSlength(const string &a, const string &b)
static int mostFrequent(vector< int > &nums, int key)
bool operator()(const tuple< int, int, int > &s1, const tuple< int, int, int > &s2) const
static vector< int > sortJumbled(vector< int > &mapping, vector< int > &nums)
unordered_map< int, unordered_set< int > > nexts
void dfs(bool *dfsd, int v, int i)
vector< vector< int > > getAncestors(int n, vector< vector< int > > &edges)
unordered_map< int, set< int > > ancestors
static int minMovesToMakePalindrome(string s)
static vector< string > cellsInRange(const string &s)
static long long minimalKSum(vector< int > &nums, int k)
static TreeNode * createBinaryTree(vector< vector< int > > &descriptions)
static vector< int > replaceNonCoprimes(vector< int > &nums)
static vector< int > goodDaysToRobBank(vector< int > &security, int time)
static string convertToBase7(int num)
static vector< int > platesBetweenCandles(string s, vector< vector< int > > &queries)
static int bestRotation(vector< int > &nums)
vector< Node * > children
Node(int _val, vector< Node * > _children)
static vector< int > preorder(Node *root)
TreeNode * get_parent() const
void add_child(TreeNode *node)
const vector< TreeNode * > & get_children() const
vector< TreeNode * > children
static int countHighestScoreNodes(vector< int > &parents)
vector< Node * > children
Node(int _val, vector< Node * > _children)
static vector< int > postorder(Node *root)
unordered_map< pair< int, int >, int, function< unsigned int(const pair< int, int > &)> > size
unordered_map< pair< int, int >, int, function< unsigned int(const pair< int, int > &)> > rank
bool same(pair< int, int > a, pair< int, int > b)
int get_size(pair< int, int > p)
void merge(pair< int, int > a, pair< int, int > b)
bool contains(pair< int, int > p) const
unordered_map< pair< int, int >, pair< int, int >, function< unsigned int(const pair< int, int > &)> > parent
pair< int, int > find(pair< int, int > val)
static int maxAreaOfIsland(vector< vector< int > > &grid)
static vector< int > findKDistantIndices(vector< int > &nums, int key, int k)
static int digArtifacts(int n, vector< vector< int > > &artifacts, vector< vector< int > > &dig)
static int maximumTop(vector< int > &nums, int k)
static void calc_dist(int s, vector< pair< int, int > > *graph, vector< long long int > &dist)
static long long minimumWeight(int n, vector< vector< int > > &edges, int src1, int src2, int dest)
static bool validUtf8(vector< int > &data)
static vector< string > findRestaurant(vector< string > &list1, vector< string > &list2)
static int countMaxOrSubsets(vector< int > &nums)
static int dfs(int current, int target, vector< int > nums)
AllOne()
Initializes the object of the data structure.
string getMaxKey()
Returns one of the keys with the maximal count.
string getMinKey()
Returns one of the keys with the minimum count.
map< int, unordered_set< string > > count_str
void dec(const string &key)
Decrements the count of the string key by 1. If the count of key is 0 after the decrement,...
unordered_map< string, int > str_count
void inc(const string &key)
Increments the count of the string key by 1. If key does not exist in the data structure,...
static string longestWord(vector< string > &words)
static string dfs(const string &str, TrieNode *node)
bool transfer(int account1, int account2, long long money)
Transfers money dollars from the account numbered account1 to the account numbered account2.
bool withdraw(int account, long long money)
Withdraw money dollars from the account numbered account.
bool deposit(int account, long long money)
Deposit money dollars into the account numbered account.
Bank(vector< long long > &balance)
Initializes the object with the 0-indexed integer array balance.
unordered_map< int, long long > accounts
static string tree2str(TreeNode *root)
static long long maximumSubsequenceCount(string text, string pattern)
static int halveArray(vector< int > &nums)
static int minimumWhiteTiles(string floor, int numCarpets, int carpetLen)
static int countHillValley(vector< int > &nums)
static int countCollisions(const string &directions)
static vector< int > maximumBobPoints(int numArrows, vector< int > &aliceArrows)
Node(int num, int patience)
unordered_set< int > linked
static int networkBecomesIdle(vector< vector< int > > &edges, vector< int > &patience)
static bool findTarget(TreeNode *root, int k)
static bool winnerOfGame(string colors)
static int findKthNumber(int n, int k)
static int getSteps(int curr, long n)
static vector< vector< int > > imageSmoother(vector< vector< int > > &img)
static int trailingZeroes(int n)
static int calPoints(vector< string > &ops)
static int minDeletion(vector< int > &nums)
static vector< long long > kthPalindrome(vector< int > &queries, int intLength)
static vector< int > missingRolls(vector< int > &rolls, int mean, int n)
static bool hasAlternatingBits(int n)
static int maxConsecutiveAnswers(string answerKey, int k)
bool operator<(const event &e) const
static vector< int > busiestServers(int k, vector< int > &arrival, vector< int > &load)
static vector< int > selfDividingNumbers(int left, int right)
static bool canReorderDoubled(vector< int > &arr)
static int strongPasswordChecker(const string &password)
static long long numberOfWays(string s)
static long long sumScores(string s)
static int convertTime(string current, string correct)
static vector< vector< int > > findWinners(vector< vector< int > > &matches)
static int maximumCandies(vector< int > &candies, long long k)
Encrypter(vector< char > &keys, vector< string > &values, vector< string > &dictionary)
用 keys、values 和 dictionary 初始化 Encrypter 类。
int decrypt(const string &word2)
统计可以由 word2 解密得到且出现在 dictionary 中的字符串数目
string encrypt(const string &word1) const
按上述加密过程完成对 word1 的加密
unordered_map< string, int > count
NumArray(vector< int > &nums)
Initializes the object with the integer array nums.
void update(int index, int val)
Updates the value of nums[index] to be val.
int sumRange(int left, int right) const
Returns the sum of the elements of nums between indices left and right inclusive (i....
static vector< bool > friendRequests(int n, vector< vector< int > > &restrictions, vector< vector< int > > &requests)
static int countPrimeSetBits(int left, int right)
static vector< int > findMinHeightTrees(int n, vector< vector< int > > &edges)
static int findLongestNode(int u, vector< int > &parent, vector< vector< int > > &adj)
static bool rotateString(string s, const string &goal)
Node(int _val, vector< Node * > _children)
vector< Node * > children
static vector< vector< int > > levelOrder(Node *root)
static bool reachingPoints(int sx, int sy, int tx, int ty)
static int maximumProduct(vector< int > &nums, int k)
static long long maximumBeauty(vector< int > &flowers, long long newFlowers, int target, int full, int partial)
static int countNumbersWithUniqueDigits(int n)
static vector< int > numberOfLines(vector< int > &widths, string s)
static bool checkInclusion(const string &s1, string s2)
int getRandom()
Returns a random element from the current set of elements (it's guaranteed that at least one element ...
bool insert(int val)
Inserts an item val into the set if not present.
unordered_map< int, int > map
RandomizedSet()
Initializes the RandomizedSet object.
bool remove(int val)
Removes an item val from the set if present.
uniform_int_distribution< int > distribution
default_random_engine generator
static int projectionArea(vector< vector< int > > &grid)
int medium
The number of slots for medium parking space
ParkingSystem(int big, int medium, int small)
Initializes object of the ParkingSystem class.
int big
The number of slots for big parking space
bool addCar(int carType)
Checks whether there is a parking space of carType for the car that wants to get into the parking lot...
int small
The number of slots for small parking space
NumArray(vector< int > &nums)
Initializes the object with the integer array nums.
int sumRange(int left, int right) const
Returns the sum of the elements of nums between indices left and right inclusive (i....
static int rob(vector< int > &nums)
static int minimumTotal(vector< vector< int > > &triangle)
static TreeNode * lowestCommonAncestor(TreeNode *root, TreeNode *p, TreeNode *q)
static void copy(TreeNode *tn, TreeNodeP *tnp, int low, int high, TreeNodeP **p, TreeNodeP **q)
vector< int > shuffle() const
Returns a random shuffling of the array.
Solution(vector< int > &nums)
Initializes the object with the integer array nums.
vector< int > reset()
Resets the array to its original configuration and returns it.
static vector< int > findAnagrams(string s, const string &p)
static int numSubarrayProductLessThanK(vector< int > &nums, int k)
static int minSubArrayLen(int target, vector< int > &nums)
static Node * connect(Node *root)
static bool isSubtree(TreeNode *root, TreeNode *subRoot)
static bool equal(TreeNode *tn1, TreeNode *tn2)
static int shortestPathBinaryMatrix(vector< vector< int > > &grid)
static void solve(vector< vector< char > > &board)
static void dfs(vector< vector< char > > &board, int x, int y)
static int dfs(vector< vector< int > > &graph, vector< vector< int > > &ans, int cur)
static vector< vector< int > > allPathsSourceTarget(vector< vector< int > > &graph)
static vector< vector< int > > permuteUnique(vector< int > &nums)
static void dfs(set< vector< int > > &s, const vector< int > ¤t, vector< int > rest)
static vector< vector< int > > combinationSum(vector< int > &candidates, int target)
static vector< vector< int > > recurse(vector< int > &candidates, int target, int index)
static vector< vector< int > > combinationSum2(vector< int > &candidates, int target)
static vector< vector< int > > recurse(vector< int > &candidates, int target, int index)
static int rob(vector< int > &nums)
static bool canJump(vector< int > &nums)
static int jump(vector< int > &nums)
static int uniquePaths(int m, int n)
static string longestPalindrome(string s)
static int numberOfArithmeticSlices(vector< int > &nums)
static int numDecodings(string s)
static void search(const TrieNode *tn, const string &s, int i, vector< bool > &end)
static bool wordBreak(const string &s, vector< string > &wordDict)
static int lengthOfLIS(vector< int > &nums)
static int findNumberOfLIS(vector< int > &nums)
static int longestCommonSubsequence(string text1, string text2)
static int minDistance(const string &word1, const string &word2)
static int minDistance(string word1, string word2)
static int coinChange(vector< int > &coins, int amount)
static int integerBreak(int n)
static int maxPoints(vector< vector< int > > &points)
static vector< vector< string > > groupAnagrams(vector< string > &strs)
static void qsort(vector< int > &nums, int l, int r)
static void sortColors(vector< int > &nums)
static vector< int > topKFrequent(vector< int > &nums, int k)
static int findKthLargest(vector< int > &nums, int k)
static vector< vector< int > > merge(vector< vector< int > > &intervals)
static bool searchMatrix(vector< vector< int > > &matrix, int target)
static bool search(const vector< vector< int > > &matrix, int target, int x_start, int x_end, int y_start, int y_end)
static TreeNode * deserialize(string data)
Decodes your encoded data to tree.
static string serialize(TreeNode *root)
Encodes a tree to a single string.
static int leastInterval(vector< char > &tasks, int n)
MyHashMap()
initializes the object with an empty map.
void put(int key, int value)
inserts a (key, value) pair into the HashMap. If the key already exists in the map,...
void remove(int key)
removes the key and its corresponding value if the map contains the mapping for the key.
array< list< pair< int, int > >, SZ > arr
static vector< vector< int > > generateMatrix(int n)
static int eraseOverlapIntervals(vector< vector< int > > &intervals)
static vector< int > productExceptSelf(vector< int > &nums)
static int subarraySum(vector< int > &nums, int k)
static vector< int > partitionLabels(string s)
static vector< string > findRepeatedDnaSequences(string s)
int get(int index) const
Get the value of the indexth node in the linked list. If the index is invalid, return -1.
void deleteAtIndex(int index)
Delete the indexth node in the linked list, if the index is valid.
void addAtHead(int val)
Add a node of value val before the first element of the linked list. After the insertion,...
void addAtTail(int val)
Append a node of value val as the last element of the linked list.
void addAtIndex(int index, int val)
Add a node of value val before the indexth node in the linked list. If index equals the length of the...
MyLinkedList()
Initializes the MyLinkedList object.
TreeNode * deleteNode(TreeNode *root, int key)
TreeNode * findMinimum(TreeNode *node)
TreeNode * findMaximum(TreeNode *node)
void remove(TreeNode *node)
static unsigned missing(vector< int > &nums, int i)
static int missingElement(vector< int > &nums, int k)
static vector< int > findPeakGridLR(vector< vector< int > > &mat, int l, int r)
static int get(vector< vector< int > > &mat, int i, int j)
static vector< int > findPeakGrid(vector< vector< int > > &mat)
static int count(vector< int > &sweetness, int x)
static int maximizeSweetness(vector< int > &sweetness, int k)
static vector< int > shortestDistanceColor(vector< int > &colors, vector< vector< int > > &queries)
static vector< int > minAvailableDuration(vector< vector< int > > &slots1, vector< vector< int > > &slots2, int duration)
static pair< int, int > merge(const vector< int > &vec1, const vector< int > &vec2)
static int countInRange(vector< int > &nums, int l, int r)
static int findDuplicate(vector< int > &nums)
static int trap(vector< int > &height)
static vector< vector< int > > findRLEArray(vector< vector< int > > &encoded1, vector< vector< int > > &encoded2)
static int getMinUniqueCharCnt(const string &s, int len)
static int lengthOfLongestSubstringTwoDistinct(const string &s)
static int lengthOfLongestSubstringKDistinct(const string &s, int k)
static int cntMinFlip(vector< int > &nums, int len)
static int longestOnes(vector< int > &nums, int k)
static vector< int > maxSlidingWindow(vector< int > &nums, int k)
static string minWindow(string s, const string &t)
static bool valid(unordered_map< char, int > &ums, const unordered_map< char, int > &umt)
static void wallsAndGates(vector< vector< int > > &rooms)
size_t operator()(const pair< int, int > &p) const
bool operator()(const pair< int, int > &p1, const pair< int, int > &p2) const
static vector< vector< int > > pacificAtlantic(vector< vector< int > > &heights)
static vector< int > getLonelyNodes(TreeNode *root)
unordered_set< Node * > children
static vector< int > killProcess(vector< int > &pid, vector< int > &ppid, int kill)
unordered_set< Node * > siblings
static vector< int > distanceK(TreeNode *root, TreeNode *target, int k)
static int openLock(vector< string > &deadends, const string &target)
static int makeConnected(int n, vector< vector< int > > &connections)
static void dfs(int &edge_cnt, int &node_cnt, unordered_set< int > &vis, int node, vector< unordered_set< int > > &g)
unordered_map< Node *, int > siblings
bool operator()(const pair< int, Node * > &p1, const pair< int, Node * > &p2) const
static int minCost(vector< vector< int > > &grid)
static void tarjan(int prev, int &step, vector< int > &dfn, int node, vector< unordered_set< int > > &g, vector< int > &low, vector< vector< int > > &ans)
static vector< vector< int > > criticalConnections(int n, vector< vector< int > > &connections)
static vector< vector< int > > getFactorsWithMin(int n, int minimum)
static vector< vector< int > > getFactors(int n)
static string decodeString(string s)
static bool valid(const vector< vector< bool > > &board, int n, int x, int y)
static vector< string > toStringVec(const vector< vector< bool > > &board)
static void dfs(const vector< vector< bool > > &board, int line, int n, vector< vector< string > > &ans)
static vector< vector< string > > solveNQueens(int n)
static bool valid(const vector< vector< char > > &board, int x, int y, char num)
static bool dfs(const vector< vector< char > > &board, vector< vector< char > > &ans)
static void solveSudoku(vector< vector< char > > &board)
static bool isMatch(const string &s, const string &p)
static bool dfs(const string &s, const string &p, int si, int pi)
static vector< int > diffWaysToCompute(const string &expression)
static vector< int > eval(const string &expr, int start, int end)
static bool isValid(const string &str)
static vector< string > removeInvalidParentheses(const string &s)
static double findMedianSortedArrays(vector< int > &nums1, vector< int > &nums2)
vector< int > countSmaller(vector< int > &nums)
void Discretization(vector< int > &nums)
static int maxProfit(vector< int > &prices)
static int maxProfit(vector< int > &prices, int fee)
static int get_m(const vector< int > &nums, int msum)
static int splitArray(vector< int > &nums, int m)
size_t operator()(const pair< TreeNode *, bool > &p) const
bool operator()(const pair< TreeNode *, bool > &p1, const pair< TreeNode *, bool > &p2) const
int dfs(bool steal, TreeNode *node)
unordered_map< pair< TreeNode *, bool >, int, myhash, myeq > um
static int maximalSquare(vector< vector< char > > &matrix)
static int maximalRectangle(vector< vector< char > > &matrix)
static bool PredictTheWinner(vector< int > &nums)
static vector< vector< string > > partition(const string &s)
static void dfs(const vector< string > ¤t, const string &s, vector< vector< string > > &ans, int start, int cursor)
static bool is_palindromic(const string &s, int start, int end)
static int minCut(string s)
static bool canPartition(vector< int > &nums)
static int mincostTickets(vector< int > &days, vector< int > &costs)
static int maxProfit(vector< int > &prices)
static int calculateMinimumHP(vector< vector< int > > &dungeon)
static bool canFinish(int numCourses, vector< vector< int > > &prerequisites)
static vector< int > findOrder(int numCourses, vector< vector< int > > &prerequisites)
int longestIncreasingPath(vector< vector< int > > &matrix)
static constexpr int dirs[4][2]
unordered_set< node * > pred
static int minimumSemesters(int n, vector< vector< int > > &relations)
static string alienOrder(vector< string > &words)
static vector< int > singleNumber(vector< int > &nums)
unsigned get_mask() const
frame(int x, int y, int lock_left)
unordered_set< char > keys
bool operator<(const frame &f) const
static int shortestPathAllKeys(vector< string > &grid)
static int minKBitFlips(vector< int > &nums, int k)
unordered_map< string, unordered_map< string, vector< int > > > um
unordered_map< int, pair< string, int > > records
UndergroundSystem()=default
void checkOut(int id, const string &stationName, int t)
通行卡 ID 等于 id 的乘客,在时间 t ,从 stationName 站离开
double getAverageTime(const string &startStation, const string &endStation)
平均时间会根据截至目前所有从 startStation 站 直接 到达 endStation 站的行程进行计算,也就是从 startStation 站进入并从 endStation 离开的行程 从 st...
void checkIn(int id, const string &stationName, int t)
通行卡 ID 等于 id 的乘客,在时间 t ,从 stationName 站进入 乘客一次只能从一个站进入
void put(int key, int value)
如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字。
LRUCache(int capacity)
以 正整数 作为容量 capacity 初始化 LRU 缓存
int get(int key)
如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。
unordered_map< int, int > um
TimeMap()=default
初始化数据结构对象
string get(const string &key, int timestamp)
返回先前调用 set(key, value, timestamp_prev) 所存储的值,其中 timestamp_prev <= timestamp 。
unordered_map< string, map< int, string, greater< int > > > um
void set(const string &key, string value, int timestamp)
存储键 key、值 value,以及给定的时间戳 timestamp。
void assign(unsigned l, unsigned r, type val=false)
bool check(unsigned l, unsigned r)
Node(unsigned l, unsigned r=0, type data=false)
bool operator<(const Node &rhs) const
RangeModule()=default
初始化数据结构的对象。
void removeRange(int left, int right)
停止跟踪 半开区间 [left, right) 中当前正在跟踪的每个实数。
void addRange(int left, int right)
添加 半开区间 [left, right),跟踪该区间中的每个实数。添加与当前跟踪的数字部分重叠的区间时,应当添加在区间 [left, right) 中尚未跟踪的任何数字到该区间中。
bool queryRange(int left, int right)
只有在当前正在跟踪区间 [left, right) 中的每一个实数时,才返回 true ,否则返回 false 。
int get(int key)
如果键 key 存在于缓存中,则获取键的值,否则返回 -1 。
unordered_map< int, int > um
map< int, list< int > > tnc
LFUCache(int capacity)
用数据结构的容量 capacity 初始化对象
unordered_map< int, int > cnt
void put(int key, int value)
如果键 key 已存在,则变更其值;如果键不存在,请插入键值对。当缓存达到其容量 capacity 时,则应该在插入新项之前,移除最不经常使用的项。在此问题中,当存在平局(即两个或更多个键具有相同使用频...
int sumCount(int sum, int i)
vector< unordered_map< int, int > > mem
int fourSumCount(vector< int > &nums1, vector< int > &nums2, vector< int > &nums3, vector< int > &nums4)
vector< unordered_map< int, int > > vec
static int maxSubArrayLen(vector< int > &nums, int k)
static int minSwaps(vector< int > &data)