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 {
105 namespace excel_sheet_column_title {
112 namespace majority_element {
124 namespace count_special_quadruplets {
131 namespace hand_of_straights {
138 namespace perfect_number {
145 namespace convert_bst_to_greater_tree {
170 namespace convert_1d_array_into_2d_array {
173 static vector<vector<int>>
construct2DArray(vector<int> &original,
int m,
int n);
177 namespace elimination_game {
184 namespace check_if_all_as_appears_before_all_bs {
191 namespace number_of_laser_beams_in_a_bank {
200 namespace destroying_asteroids {
207 namespace maximum_employees_to_be_invited_to_a_meeting {
214 namespace day_of_the_week {
217 static string dayOfTheWeek(
int day,
int month,
int year);
224 namespace cat_and_mouse {
241 int getResult(
int mouse,
int cat,
int turns);
247 namespace replace_all_s_to_avoid_consecutive_repeating_characters {
257 namespace simplify_path {
267 namespace maximum_nesting_depth_of_the_parentheses {
270 static int maxDepth(
const string &s);
275 namespace gray_code {
283 namespace check_if_every_row_and_column_contains_all_numbers {
286 static bool checkValid(vector<vector<int>> &matrix);
291 namespace minimum_swaps_to_group_all_1s_together_ii {
294 static int minSwaps(vector<int> &nums);
299 namespace count_words_obtained_after_adding_a_letter {
302 static int wordCount(vector<string> &startWords, vector<string> &targetWords);
304 static unsigned int str2bin(
const string & );
309 namespace slowest_key {
312 static char slowestKey(vector<int> &releaseTimes,
string keysPressed);
319 namespace additive_number {
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);
351 namespace decode_the_slanted_ciphertext {
360 static string rtrim(
string &s);
365 namespace escape_a_large_maze {
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);
402 namespace increasing_triplet_subsequence {
412 namespace largest_number_at_least_twice_of_others {
420 namespace find_k_pairs_with_smallest_sums {
432 static vector<vector<int>>
kSmallestPairs(vector<int> &nums1, vector<int> &nums2,
int k);
439 namespace permutations {
442 static vector<vector<int>>
permute(vector<int> &nums);
447 namespace calculate_money_in_leetcode_bank {
457 namespace linked_list_random_node {
473 namespace divide_a_string_into_groups_of_size_k {
476 static vector<string>
divideString(
const string &s,
int k,
char fill);
483 namespace minimum_moves_to_reach_target_score {
486 static int minMoves(
int target,
int maxDoubles);
493 namespace solving_questions_with_brainpower {
496 static long long mostPoints(vector<vector<int>> &questions);
503 namespace maximum_running_time_of_n_computers {
506 static long long maxRunTime(
int n, vector<int> &batteries);
511 namespace coun_vowels_permutation {
522 namespace minimum_time_difference {
530 namespace contains_duplicate_ii {
538 namespace stone_game_ix {
548 namespace jump_game_iv {
551 static int minJumps(vector<int> &arr);
556 namespace remove_palindromic_subsequences {
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);
588 namespace minimum_cost_of_buying_candies_with_discount {
598 namespace count_the_hidden_sequences {
601 static int numberOfArrays(vector<int> &differences,
int lower,
int upper);
608 namespace k_highest_ranked_items_within_a_price_range {
622 static vector<vector<int>>
highestRankedKItems(vector<vector<int>> &grid, vector<int> &pricing, vector<int> &start,
int k);
629 namespace number_of_ways_to_divide_a_long_corridor {
639 namespace count_elements_with_strictly_smaller_and_greater_elements {
649 namespace rearrange_array_elements_by_sign {
659 namespace find_all_lonely_numbers_in_the_array {
662 static vector<int>
findLonely(vector<int> &nums);
669 namespace maximum_good_people_based_on_statements {
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);
688 namespace stock_price_fluctuation {
701 void update(
int timestamp,
int price);
702 [[nodiscard]]
int current()
const;
703 [[nodiscard]]
int maximum()
const;
704 [[nodiscard]]
int minimum()
const;
711 namespace second_minimum_time_to_reach_destination {
723 static int secondMinimum(
int n, vector<vector<int>> &edges,
int time,
int change);
728 namespace count_of_matches_in_tournament {
741 namespace detect_squares {
743 multiset<pair<int, int>>
ms;
747 void add(vector<int> point);
748 [[nodiscard]]
int count(vector<int> point)
const;
753 namespace number_of_valid_words_in_a_sentence {
761 namespace the_number_of_weak_characters_in_the_game {
769 namespace pattern_matching_lcci {
772 static bool patternMatching(
const string &pattern,
const string &value);
779 namespace map_of_highest_peak {
782 static vector<vector<int>>
highestPeak(vector<vector<int>> &isWater);
789 namespace uncommon_words_from_two_sentences {
799 namespace keep_multiplying_found_values_by_two {
809 namespace all_divisions_with_the_highest_score_of_a_binary_array {
819 namespace find_substring_with_given_hash_value {
822 static string subStrHash(
string s,
int power,
int modulo,
int k,
int hashValue);
829 namespace groups_of_strings {
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);
847 namespace number_of_steps_to_reduce_a_number_to_zero {
855 namespace longest_nice_substring {
859 static pair<int, int>
dfs(
string s,
int start,
int end);
864 namespace reverse_prefix_of_word {
874 namespace find_the_minimum_number_of_fibonacci_numbers_whose_sum_is_k {
878 static int find_min(set<
int, greater<>> &fibb,
int k, set<
int, greater<>>::iterator begin);
883 namespace number_of_rectangles_that_can_form_the_largest_square {
891 namespace path_with_maximum_gold {
895 static int get_sum(
int current,
int x,
int y,
int m,
int n, vector<vector<int>> &grid,
bool **occupied);
902 namespace minimum_sum_of_four_digit_number_after_splitting_digits {
912 namespace partition_array_according_to_given_pivot {
915 static vector<int>
pivotArray(vector<int> &nums,
int pivot);
922 namespace minimum_cost_to_set_cooking_time {
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]);
933 namespace minimum_difference_in_sums_after_removal_of_elements {
943 namespace sum_of_unique_elements {
953 namespace sort_even_and_odd_indices_independently {
963 namespace smallest_value_of_the_rearranged_number {
973 namespace design_bitset {
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;
1016 namespace longest_happy_string {
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);
1026 namespace grid_illumination {
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);
1038 namespace count_number_of_pairs_with_absolute_difference_k {
1046 namespace simplified_fractions {
1050 static int gcd(
int m,
int n);
1057 namespace minimum_difference_between_highest_and_lowest_of_k_scores {
1065 namespace number_of_enclaves {
1068 static int numEnclaves(vector<vector<int>> &grid);
1075 namespace maximum_number_of_balloons {
1085 namespace swap_adjacent_in_lr_string {
1088 static bool canTransform(
const string &start,
const string &end);
1095 namespace count_operations_to_obtain_zero {
1105 namespace minimum_operations_to_make_the_array_alternating {
1115 namespace removing_minimum_number_of_magic_beans {
1125 namespace maximum_and_sum_of_array {
1133 namespace single_element_in_a_sorted_array {
1142 namespace lucky_numbers_in_a_matrix {
1145 static vector<int>
luckyNumbers(vector<vector<int>> &matrix);
1150 namespace number_of_ways_to_reconstruct_a_tree {
1153 static int checkWays(vector<vector<int>> &pairs);
1158 namespace find_center_of_star_graph {
1161 static int findCenter(vector<vector<int>> &edges);
1166 namespace knight_probability_in_chessboard {
1185 unordered_map<status, double, status_hash, status_equal>
um = unordered_map<status, double, status_hash, status_equal>();
1193 namespace pancake_sorting {
1201 namespace count_equal_and_divisible_pairs_in_an_array {
1204 static int countPairs(vector<int> &nums,
int k);
1209 namespace find_three_consecutive_integers_that_sum_to_a_given_number {
1212 static vector<long long>
sumOfThree(
long long num);
1217 namespace maximum_split_of_positive_even_integers {
1225 namespace count_good_triplets_in_an_array {
1234 this->limit =
limit;
1246 for(; idx > 0; idx -=
lowbit(idx)) {
1255 static long long goodTriplets(vector<int> &nums1, vector<int> &nums2);
1260 namespace count_integers_with_even_digit_sum {
1268 namespace merge_nodes_in_between_zeros {
1276 namespace construct_string_with_repeat_limit {
1284 namespace count_array_pairs_divisible_by_k {
1287 static long long coutPairs(vector<int> &nums,
int k);
1294 namespace leetcode717_1_bit_and_2_bit_characters {
1304 namespace longest_mountain_in_array {
1312 namespace push_dominoes {
1320 namespace the_number_of_good_subsets {
1323 static constexpr array<int, 10>
primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
1325 static constexpr int mod = 1000000007;
1334 namespace reverse_only_letters {
1342 namespace where_will_the_ball_fall {
1345 static vector<int>
findBall(vector<vector<int>> &grid);
1350 namespace complex_number_multiplication {
1358 namespace maximum_difference_between_increasing_elements {
1368 namespace optimal_division {
1378 namespace counting_words_with_a_given_prefix {
1381 static int prefixCount(vector<string> &words,
string pref);
1388 namespace minimum_number_of_steps_to_make_two_strings_anagram_ii {
1391 static int minSteps(
const string &s,
const string &t);
1398 namespace minimum_time_to_complete_trips {
1401 static long long minimumTime(vector<int> &time,
int totalTrips);
1408 namespace minimum_time_to_finish_the_race {
1411 static int minimumFinishTime(vector<vector<int>> &tires,
int changeTime,
int numLaps);
1416 namespace maximum_number_of_achievable_transfer_requests {
1424 namespace zigzag_conversion {
1427 static string convert(
string s,
int numRows);
1432 namespace find_the_closest_palindrome {
1440 namespace add_digits {
1448 namespace sum_of_subarray_ranges {
1458 namespace longest_uncommon_subsequence_i {
1468 namespace most_frequent_number_following_key_in_an_array {
1478 namespace sort_the_jumbled_numbers {
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);
1499 namespace all_ancestors_of_a_node_in_a_directed_acyclic_graph {
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);
1513 namespace minimum_number_of_moves_to_make_palindrome {
1523 namespace cells_in_a_range_on_an_excel_sheet {
1533 namespace append_k_integers_with_minimal_sum {
1536 static long long minimalKSum(vector<int> &nums,
int k);
1543 namespace create_binary_tree_from_descriptions {
1553 namespace replace_non_coprime_numbers_in_array {
1563 namespace find_good_days_to_rob_the_bank {
1579 namespace plates_between_candles {
1587 namespace smallest_rotation_with_highest_score {
1595 namespace n_ary_tree_preorder_traversal {
1605 Node(
int _val, vector<Node *> _children)
1606 :
val(_val),
children(std::move(std::move(_children))) {}
1616 namespace count_nodes_with_the_highest_score {
1628 [[nodiscard]]
const vector<TreeNode *> &
get_children()
const;
1641 namespace n_ary_tree_postorder_traversal {
1651 Node(
int _val, vector<Node *> _children)
1652 :
val(_val),
children(std::move(std::move(_children))) {}
1664 namespace max_area_of_island {
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;
1689 namespace find_all_k_distant_indices_in_an_array {
1697 namespace count_artifacts_that_can_be_extracted {
1700 static int digArtifacts(
int n, vector<vector<int>> &artifacts, vector<vector<int>> &dig);
1705 namespace maximize_the_topmost_element_after_k_moves {
1708 static int maximumTop(vector<int> &nums,
int k);
1713 namespace minimum_weighted_subgraph_with_the_required_paths {
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);
1722 namespace utf_8_validation {
1725 static bool validUtf8(vector<int> &data);
1730 namespace minimum_index_sum_of_two_lists {
1733 static vector<string>
findRestaurant(vector<string> &list1, vector<string> &list2);
1738 namespace count_number_of_maximum_bitwise_or_subsets {
1742 static int dfs(
int current,
int target, vector<int> nums);
1747 namespace all_oone_data_structure {
1758 void inc(
const string &key);
1760 void dec(
const string &key);
1771 namespace longest_word_in_dictionary {
1775 static string dfs(
const string &str,
TrieNode *node);
1780 namespace simple_bank_system {
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);
1800 namespace construct_string_from_binary_tree {
1808 namespace maximize_number_of_subsequences_in_a_string {
1816 namespace minimum_operations_to_halve_array_sum {
1824 namespace minimum_white_tiles_after_covering_with_carpets {
1832 namespace count_hills_and_valleys_in_an_array {
1840 namespace count_collisions_on_a_road {
1848 namespace maximum_points_in_an_archery_competition {
1851 static vector<int>
maximumBobPoints(
int numArrows, vector<int> &aliceArrows);
1856 namespace the_time_when_the_network_becomes_idle {
1874 namespace two_sum_iv_input_is_a_bst {
1882 namespace remove_colored_pieces_if_both_neighbors_are_the_same_color {
1892 namespace k_th_smallest_in_lexicographical_order {
1896 static int getSteps(
int curr,
long n);
1901 namespace image_smoother {
1904 static vector<vector<int>>
imageSmoother(vector<vector<int>> &img);
1909 namespace factorial_trailing_zeroes {
1917 namespace baseball_game {
1920 static int calPoints(vector<string> &ops);
1927 namespace minimum_deletions_to_make_array_beautiful {
1937 namespace find_palindrome_with_fixed_length {
1938 unsigned long long qmi(
unsigned long long m,
unsigned long long k);
1942 static vector<long long>
kthPalindrome(vector<int> &queries,
int intLength);
1949 namespace find_missing_observations {
1952 static vector<int>
missingRolls(vector<int> &rolls,
int mean,
int n);
1957 namespace binary_number_with_alternating_bits {
1965 namespace maximize_the_confusion_of_an_exam {
1973 namespace find_servers_that_handled_most_number_of_requests {
1985 static vector<int>
busiestServers(
int k, vector<int> &arrival, vector<int> &load);
1990 namespace self_dividing_numbers {
1998 namespace array_of_doubled_pairs {
2006 namespace strong_password_checker {
2016 namespace number_of_ways_to_select_buildings {
2026 namespace sum_of_scores_of_built_strings {
2036 namespace minimum_number_of_operations_to_convert_time {
2039 static int convertTime(
string current,
string correct);
2046 namespace find_players_with_zero_or_one_losses {
2049 static vector<vector<int>>
findWinners(vector<vector<int>> &matches);
2056 namespace maximum_candies_allocated_to_k_children {
2066 namespace encrypt_and_decrypt_strings {
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);
2090 namespace range_sum_query_mutable {
2100 void update(
int index,
int val);
2108 namespace process_restricted_friend_requests {
2111 static vector<bool>
friendRequests(
int n, vector<vector<int>> &restrictions, vector<vector<int>> &requests);
2116 namespace prime_number_of_set_bits_in_binary_representation {
2124 namespace minimum_height_trees {
2127 static int findLongestNode(
int u, vector<int> &parent, vector<vector<int>> &adj);
2133 namespace rotate_string {
2136 static bool rotateString(
string s,
const string &goal);
2141 namespace n_ary_tree_level_order_traversal {
2151 Node(
int _val, vector<Node *> _children)
2152 :
val(_val),
children(std::move(std::move(_children))){};
2164 namespace reaching_points {
2174 namespace maximum_product_after_k_increments {
2184 namespace maximum_total_beauty_of_the_gardens {
2187 static long long maximumBeauty(vector<int> &flowers,
long long newFlowers,
int target,
int full,
int partial);
2192 namespace count_numbers_with_unique_digits {
2200 namespace number_of_lines_to_write_string {
2203 static vector<int>
numberOfLines(vector<int> &widths,
string s);
2208 namespace permutation_in_string {
2216 namespace insert_delete_getrandom_o1 {
2238 namespace projection_area_of_3d_shapes {
2246 namespace design_parking_system {
2261 bool addCar(
int carType);
2266 namespace range_sum_query_immutable {
2272 explicit NumArray(vector<int> &nums);
2279 namespace house_robber {
2282 static int rob(vector<int> &nums);
2287 namespace triangle {
2290 static int minimumTotal(vector<vector<int>> &triangle);
2295 namespace lowest_common_ancestor_of_a_binary_search_tree {
2316 namespace shuffle_an_array {
2324 vector<int>
reset();
2326 [[nodiscard]] vector<int>
shuffle()
const;
2331 namespace find_all_anagrams_in_a_string {
2334 static vector<int>
findAnagrams(
string s,
const string &p);
2339 namespace subarray_product_less_than_k {
2347 namespace minimum_size_subarray_sum {
2355 namespace populating_next_right_pointers_in_each_node_ii {
2363 namespace subtree_of_another_tree {
2372 namespace shortest_path_in_binary_matrix {
2380 namespace surrounded_regions {
2383 static void dfs(vector<vector<char>> &board,
int x,
int y);
2384 static void solve(vector<vector<char>> &board);
2389 namespace all_paths_from_source_to_target {
2392 static int dfs(vector<vector<int>> &graph, vector<vector<int>> &ans,
int cur);
2398 namespace permutations_ii {
2401 static void dfs(set<vector<int>> &s,
const vector<int> ¤t, vector<int> rest);
2402 static vector<vector<int>>
permuteUnique(vector<int> &nums);
2407 namespace combination_sum {
2410 static vector<vector<int>>
recurse(vector<int> &candidates,
int target,
int index);
2411 static vector<vector<int>>
combinationSum(vector<int> &candidates,
int target);
2416 namespace combination_sum_ii {
2419 static vector<vector<int>>
recurse(vector<int> &candidates,
int target,
int index);
2420 static vector<vector<int>>
combinationSum2(vector<int> &candidates,
int target);
2425 namespace house_robber_ii {
2428 static int rob(vector<int> &nums);
2433 namespace jump_game {
2436 static bool canJump(vector<int> &nums);
2441 namespace jump_game_ii {
2444 static int jump(vector<int> &nums);
2449 namespace unique_paths {
2457 namespace longest_palindromic_substring {
2465 namespace arithmetic_slices {
2473 namespace decode_ways {
2481 namespace word_break {
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);
2490 namespace longest_increasing_subsequence {
2498 namespace number_of_longest_increasing_subsequence {
2506 namespace longest_common_subsequence {
2514 namespace delete_operation_for_two_strings {
2517 static int minDistance(
const string &word1,
const string &word2);
2522 namespace edit_distance {
2525 static int minDistance(
string word1,
string word2);
2530 namespace coin_change {
2533 static int coinChange(vector<int> &coins,
int amount);
2538 namespace integer_break {
2546 namespace max_points_on_a_line {
2549 static int maxPoints(vector<vector<int>> &points);
2554 namespace group_anagrams {
2557 static vector<vector<string>>
groupAnagrams(vector<string> &strs);
2562 namespace sort_colors {
2565 static void qsort(vector<int> &nums,
int l,
int r);
2571 namespace top_k_frequent_elements {
2574 static vector<int>
topKFrequent(vector<int> &nums,
int k);
2579 namespace kth_largest_element_in_an_array {
2587 namespace merge_intervals {
2590 static vector<vector<int>>
merge(vector<vector<int>> &intervals);
2595 namespace search_a_2d_matrix_ii {
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);
2604 namespace serialize_and_deserialize_binary_tree {
2616 namespace task_scheduler {
2624 namespace design_hashmap {
2626 static const unsigned SZ = 1021;
2634 void put(
int key,
int value);
2645 namespace spiral_matrix_ii {
2653 namespace non_overlapping_intervals {
2661 namespace product_of_array_except_self {
2669 namespace subarray_sum_equals_k {
2677 namespace partition_labels {
2685 namespace repeated_dna_sequences {
2693 namespace design_linked_list {
2702 [[nodiscard]]
int get(
int index)
const;
2719 namespace delete_node_in_a_bst {
2732 namespace missing_element_in_sorted_array {
2735 static unsigned missing(vector<int> &nums,
int i);
2741 namespace find_a_peak_element_ii {
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);
2751 namespace divide_chocolate {
2754 static int count(vector<int> &sweetness,
int x);
2760 namespace shortest_distance_to_target_color {
2768 namespace meeting_scheduler {
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);
2777 namespace find_the_duplicate_number {
2780 static int countInRange(vector<int> &nums,
int l,
int r);
2786 namespace trapping_rain_water {
2789 static int trap(vector<int> &height);
2794 namespace product_of_two_run_length_encoded_arrays {
2797 static vector<vector<int>>
findRLEArray(vector<vector<int>> &encoded1, vector<vector<int>> &encoded2);
2802 namespace longest_substring_with_at_most_two_distinct_characters {
2811 namespace longest_substring_with_at_most_k_distinct_characters {
2819 namespace max_consecutive_ones_iii {
2822 static int cntMinFlip(vector<int> &nums,
int len);
2828 namespace sliding_window_maximum {
2836 namespace minimum_window_substring {
2839 static bool valid(unordered_map<char, int> &ums,
const unordered_map<char, int> &umt);
2840 static string minWindow(
string s,
const string &t);
2845 namespace walls_and_gates {
2853 namespace pacific_atlantic_waterflow {
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);
2869 namespace find_all_the_lonely_nodes {
2877 namespace kill_process {
2888 static vector<int>
killProcess(vector<int> &pid, vector<int> &ppid,
int kill);
2893 namespace all_nodes_distance_k_in_binary_tree {
2909 namespace open_the_lock {
2912 static int openLock(vector<string> &deadends,
const string &target);
2917 namespace number_of_operations_to_make_network_connected {
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);
2926 namespace minimum_cost_to_make_at_least_one_valid_path_in_a_grid {
2937 bool operator()(
const pair<int, Node *> &p1,
const pair<int, Node *> &p2)
const;
2942 static int minCost(vector<vector<int>> &grid);
2947 namespace critical_connections_in_a_network {
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);
2956 namespace factor_combinations {
2960 static vector<vector<int>>
getFactors(
int n);
2965 namespace decode_string {
2973 namespace n_queens {
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);
2985 namespace sudoku_solver {
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);
2996 namespace regular_expression_matching {
2999 static bool dfs(
const string &s,
const string &p,
int si,
int pi);
3000 static bool isMatch(
const string &s,
const string &p);
3005 namespace different_ways_to_add_parentheses {
3009 static vector<int>
eval(
const string &expr,
int start,
int end);
3014 namespace remove_invalid_parentheses {
3017 static bool isValid(
const string &str);
3023 namespace median_of_two_sorted_arrays {
3031 namespace count_of_smaller_numbers_after_self {
3036 void Init(
int length);
3037 static int LowBit(
int x);
3039 [[nodiscard]]
int Query(
int pos)
const;
3049 namespace best_time_to_buy_and_sell_stock_with_cooldown {
3052 static int maxProfit(vector<int> &prices);
3057 namespace best_time_to_buy_and_sell_stock_with_transaction_fee {
3060 static int maxProfit(vector<int> &prices,
int fee);
3065 namespace split_array_largest_sum {
3068 static int get_m(
const vector<int> &nums,
int msum);
3069 static int splitArray(vector<int> &nums,
int m);
3074 namespace house_robber_iii {
3076 size_t operator()(
const pair<TreeNode *, bool> &p)
const;
3080 bool operator()(
const pair<TreeNode *, bool> &p1,
const pair<TreeNode *, bool> &p2)
const;
3093 namespace maximal_square {
3101 namespace maximal_rectangle {
3109 namespace predict_the_winner {
3117 namespace palindrome_partitioning {
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);
3127 namespace palindrome_partitioning_ii {
3130 static int minCut(
string s);
3135 namespace partition_equal_subset_sum {
3143 namespace minimum_cost_for_tickets {
3146 static int mincostTickets(vector<int> &days, vector<int> &costs);
3151 namespace best_time_to_buy_and_sell_stock_iii {
3154 static int maxProfit(vector<int> &prices);
3159 namespace dungeon_game {
3167 namespace course_schedule {
3170 static bool canFinish(
int numCourses, vector<vector<int>> &prerequisites);
3175 namespace course_schedule_ii {
3178 static vector<int>
findOrder(
int numCourses, vector<vector<int>> &prerequisites);
3183 namespace longest_increasing_path_in_a_matrix {
3188 static constexpr int dirs[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
3194 namespace parallel_courses {
3212 namespace alien_dictionary {
3215 static string alienOrder(vector<string> &words);
3220 namespace single_number_iii {
3228 namespace shortest_path_to_get_all_keys {
3244 [[nodiscard]]
unsigned get_mask()
const;
3254 namespace minimum_number_of_k_consecutive_bit_flips {
3262 namespace design_underground_system {
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);
3283 namespace lru_cache {
3287 unordered_map<int, int>
um;
3295 void put(
int key,
int value);
3300 namespace time_based_key_value_store {
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);
3317 namespace range_module {
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; });
3372 namespace lfu_cache {
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);
3403 namespace maximum_size_subarray_sum_equals_k {
3411 namespace minimum_swaps_to_group_all_1s_together {
3414 static int minSwaps(vector<int> &data);
unsigned long long qmi(unsigned long long m, unsigned long long k)
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)
去除字符串右边的空白符
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)