├── .idea ├── misc.xml ├── modules.xml ├── uiDesigner.xml ├── vcs.xml └── workspace.xml ├── LeetCode.iml ├── README.md ├── images ├── _011_Container_With_Most_Water.jpg ├── _042_Trapping_Rain_Water.png ├── _043_Multiply_Strings.jpg ├── _309_Best_Time_to_Buy_and_Sell_Stock_with_Cooldown.png └── _714_Best_Time_to_Buy_and_Sell_Stock_with_Transaction_Fee.png ├── out └── production │ └── LeetCode │ └── algorithm │ ├── _001_Two_Sum │ └── Solution.class │ ├── _002_Add_Two_Numbers │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _003_Longest_Substring_Without_Repeating_Characters │ └── Solution.class │ ├── _004_Median_of_Two_Sorted_Arrays │ └── Solution.class │ ├── _005_Longest_Palindromic_Substring │ └── Solution.class │ ├── _007_Reverse_Integer │ └── Solution.class │ ├── _008_String_to_Integer │ └── Solution.class │ ├── _009_Palindrome_Number │ └── Solution.class │ ├── _011_Container_With_Most_Water │ └── Solution.class │ ├── _012_Integer_to_Roman │ └── Solution.class │ ├── _013_Roman_to_Integer │ └── Solution.class │ ├── _014_Longest_Common_Prefix │ └── Solution.class │ ├── _015_3Sum │ └── Solution.class │ ├── _016_3Sum_Closest │ └── Solution.class │ ├── _017_Letter_Combinations_of_a_Phone_Number │ └── Solution.class │ ├── _019_Remove_Nth_Node_From_End_of_List │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _020_Valid_Parentheses │ └── Solution.class │ ├── _021_Merge_Two_Sorted_Lists │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _022_Generate_Parentheses │ └── Solution.class │ ├── _023_Merge_k_Sorted_Lists │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _024_Swap_Nodes_in_Pairs │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _025_Reverse_Nodes_in_k_Group │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _027_Remove_Element │ └── Solution.class │ ├── _028_Implement_strStr │ └── Solution.class │ ├── _031_Next_Permutation │ └── Solution.class │ ├── _032_Longest_Valid_Parentheses │ └── Solution.class │ ├── _033_Search_in_Rotated_Sorted_Array │ └── Solution.class │ ├── _034_Find_First_and_Last_Position_of_Element_in_Sorted_Array │ └── Solution.class │ ├── _035_Search_Insert_Position │ └── Solution.class │ ├── _038_Count_and_Say │ └── Solution.class │ ├── _039_Combination_Sum │ └── Solution.class │ ├── _040_Combination_Sum_ll │ └── Solution.class │ ├── _041_First_Missing_Positive │ └── Solution.class │ ├── _042_Trapping_Rain_Water │ └── Solution.class │ ├── _043_Multiply_Strings │ └── Solution.class │ ├── _045_Jump_Game_II │ └── Solution.class │ ├── _046_Permutations │ ├── Solution.class │ └── Solution2.class │ ├── _047_Permutations_II │ └── Solution.class │ ├── _048_Rotate_Image │ └── Solution.class │ ├── _049_Group_Anagrams │ └── Solution.class │ ├── _050_Pow │ └── Solution.class │ ├── _053_Maximum_Subarray │ └── Solution.class │ ├── _054_Spiral_Matrix │ └── Solution.class │ ├── _055_Jump_Game │ └── Solution.class │ ├── _056_Merge_Intervals │ └── Solution.class │ ├── _059_Spiral_Matrix_II │ └── Solution.class │ ├── _062_Unique_Paths │ └── Solution.class │ ├── _064_Minimum_Path_Sum │ └── Solution.class │ ├── _067_Add_Binary │ └── Solution.class │ ├── _069_Sqrt_x │ └── Solution.class │ ├── _070_Climbing_Stairs │ └── Solution.class │ ├── _072_Edit_Distance │ └── Solution.class │ ├── _075_Sort_Colors │ └── Solution.class │ ├── _076_Minimum_Window_Substring │ └── Solution.class │ ├── _077_Combinations │ └── Solution.class │ ├── _078_Subsets │ └── Solution.class │ ├── _079_Word_Search │ └── Solution.class │ ├── _083_Remove_Duplicates_from_Sorted_List │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _084_Largest_Rectangle_in_Histogram │ └── Solution.class │ ├── _091_Decode_Ways │ └── Solution.class │ ├── _093_Restore_IP_Addresses │ └── Solution.class │ ├── _094_Binary_Tree_Inorder_Traversal │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _095_Unique_Binary_Search_Trees_II │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _096_Unique_Binary_Search_Trees │ └── Solution.class │ ├── _098_Validate_Binary_Search_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _101_Symmetric_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _102_Binary_Tree_Level_Order_Traversal │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _103_Binary_Tree_Zigzag_Level_Order_Traversal │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _104_Maximum_Depth_of_Binary_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _105_Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _108_Convert_Sorted_Array_to_Binary_Search_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _109_Convert_Sorted_List_to_Binary_Search_Tree │ ├── Solution$ListNode.class │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _110_Balanced_Binary_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _111_Minimum_Depth_of_Binary_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _112_Path_Sum │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _113_Path_Sum_II │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _114_Flatten_Binary_Tree_to_Linked_List │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _116_Populating_Next_Right_Pointers_in_Each_Node │ ├── Solution$Node.class │ └── Solution.class │ ├── _121_Best_Time_to_Buy_and_Sell_Stock │ └── Solution.class │ ├── _122_Best_Time_to_Buy_and_Sell_Stock_II │ └── Solution.class │ ├── _123_Best_Time_to_Buy_and_Sell_Stock_III │ └── Solution.class │ ├── _124_Binary_Tree_Maximum_Path_Sum │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _125_Valid_Palindrome │ └── Solution.class │ ├── _127_Word_Ladder │ └── Solution.class │ ├── _128_Longest_Consecutive_Sequence │ └── Solution.class │ ├── _130_Surrounded_Regions │ └── Solution.class │ ├── _131_Palindrome_Partitioning │ └── Solution.class │ ├── _134_Gas_Station │ └── Solution.class │ ├── _135_Candy │ └── Solution.class │ ├── _136_Single_Number │ └── Solution.class │ ├── _138_Copy_List_with_Random_Pointer │ ├── Solution$Node.class │ └── Solution.class │ ├── _139_Word_Break │ └── Solution.class │ ├── _140_Word_Break_II │ └── Solution.class │ ├── _141_Linked_List_Cycle │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _142_Linked_List_Cycle_II │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _143_Reorder_List │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _144_Binary_Tree_Preorder_Traversal │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _145_Binary_Tree_Postorder_Traversal │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _148_Sort_List │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _152_Maximum_Product_Subarray │ └── Solution.class │ ├── _153_Find_Minimum_in_Rotated_Sorted_Array │ └── Solution.class │ ├── _154_Find_Minimum_in_Rotated_Sorted_Array_II │ └── Solution.class │ ├── _155_Min_Stack │ └── MinStack.class │ ├── _160_Intersection_of_Two_Linked_Lists │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _169_Majority_Element │ └── Solution.class │ ├── _179_Largest_Number │ ├── Solution$1.class │ └── Solution.class │ ├── _190_Reverse_Bits │ └── Solution.class │ ├── _198_House_Robber │ └── Solution.class │ ├── _199_Binary_Tree_Right_Side_View │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _200_Number_of_Islands │ ├── Solution.class │ ├── Solution2.class │ └── UnionFind.class │ ├── _202_Happy_Number │ └── Solution.class │ ├── _205_Isomorphic_Strings │ └── Solution.class │ ├── _206_Reverse_Linked_List │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _207_Course_Schedule │ └── Solution.class │ ├── _208_Implement_Trie_Prefix_Tree │ ├── Solution$Trie.class │ ├── Solution$TrieNode.class │ └── Solution.class │ ├── _213_House_Robber2 │ └── Solution.class │ ├── _215_Kth_Largest_Element_in_an_Array │ └── Solution.class │ ├── _216_Combination_Sum_III │ └── Solution.class │ ├── _221_Maximal_Square │ └── Solution.class │ ├── _222_Count_Complete_Tree_Nodes │ └── Solution.class │ ├── _225_Implement_Stack_using_Queues │ └── MyStack.class │ ├── _226_Invert_Binary_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _230_Kth_Smallest_Element_in_a_BST │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _232_Implement_Queue_using_Stacks │ └── MyQueue.class │ ├── _234_Palindrome_Linked_List │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _235_Lowest_Common_Ancestor_of_a_Binary_Search_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _236_Lowest_Common_Ancestor_of_a_Binary_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _238_Product_of_Array_Except_Self │ └── Solution.class │ ├── _239_Sliding_Window_Maximum │ └── Solution.class │ ├── _240_Search_a_2D_Matrix_II │ └── Solution.class │ ├── _242_Valid_Anagram │ └── Solution.class │ ├── _257_Binary_Tree_Paths │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _260_Single_Number_III │ └── Solution.class │ ├── _263_Ugly_Number │ └── Solution.class │ ├── _264_Ugly_Number_II │ └── Solution.class │ ├── _268_Missing_Number │ └── Solution.class │ ├── _279_Perfect_Squares │ └── Solution.class │ ├── _283_Move_Zeroes │ └── Solution.class │ ├── _287_Find_the_Duplicate_Number │ └── Solution.class │ ├── _295_Find_Median_from_Data_Stream │ └── MedianFinder.class │ ├── _297_Serialize_and_Deserialize_Binary_Tree │ ├── Codec$TreeNode.class │ └── Codec.class │ ├── _300_Longest_Increasing_Subsequence │ └── Solution.class │ ├── _301_Remove_Invalid_Parentheses │ └── Solution.class │ ├── _303_Range_Sum_Query_Immutable │ └── NumArray.class │ ├── _309_Best_Time_to_Buy_and_Sell_Stock_with_Cooldown │ └── Solution.class │ ├── _312_Burst_Balloons │ └── Solution.class │ ├── _322_Coin_Change │ └── Solution.class │ ├── _328_Odd_Even_Linked_List │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _329_Longest_Increasing_Path_in_a_Matrix │ └── Solution.class │ ├── _334_Increasing_Triplet_Subsequence │ └── Solution.class │ ├── _337_House_Robber_III │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _338_Counting_Bits │ └── Solution.class │ ├── _343_Integer_Break │ └── Solution.class │ ├── _344_Reverse_String │ └── Solution.class │ ├── _347_Top_K_Frequent_Elements │ └── Solution.class │ ├── _350_Intersection_of_Two_Arrays_II │ └── Solution.class │ ├── _376_Wiggle_Subsequence │ └── Solution.class │ ├── _377_Combination_Sum_IV │ └── Solution.class │ ├── _378_Kth_Smallest_Element_in_a_Sorted_Matrix │ └── Solution.class │ ├── _387_First_Unique_Character_in_a_String │ └── Solution.class │ ├── _392_Is_Subsequence │ └── Solution.class │ ├── _394_Decode_String │ └── Solution.class │ ├── _395_Longest_Substring_with_At_Least_K_Repeating_Characters │ └── Solution.class │ ├── _404_Sum_of_Left_Leaves │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _405_Convert_a_Number_to_Hexadecimal │ └── Solution.class │ ├── _406_Queue_Reconstruction_by_Height │ ├── Solution$1.class │ └── Solution.class │ ├── _409_Longest_Palindrome │ └── Solution.class │ ├── _413_Arithmetic_Slices │ └── Solution.class │ ├── _416_Partition_Equal_Subset_Sum │ └── Solution.class │ ├── _435_Non_overlapping_Intervals │ ├── Solution$1.class │ ├── Solution$Interval.class │ └── Solution.class │ ├── _437_Path_Sum_III │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _438_Find_All_Anagrams_in_a_String │ └── Solution.class │ ├── _445_Add_Two_Numbers_II │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _448_Find_All_Numbers_Disappeared_in_an_Array │ └── Solution.class │ ├── _452_Minimum_Number_of_Arrows_to_Burst_Balloons │ ├── Solution$1.class │ └── Solution.class │ ├── _455_Assign_Cookies │ └── Solution.class │ ├── _460_LFU_Cache │ └── LFUCache.class │ ├── _461_Hamming_Distance │ └── Solution.class │ ├── _462_Minimum_Moves_to_Equal_Array_Elements_II │ └── Solution.class │ ├── _474_Ones_and_Zeroes │ └── Solution.class │ ├── _485_Max_Consecutive_Ones │ └── Solution.class │ ├── _494_Target_Sum │ └── Solution.class │ ├── _496_Next_Greater_Element_I │ └── Solution.class │ ├── _501_Find_Mode_in_Binary_Search_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _503_Next_Greater_Element_II │ └── Solution.class │ ├── _504_Base_7 │ └── Solution.class │ ├── _513_Find_Bottom_Left_Tree_Value │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _518_Coin_Change_2 │ └── Solution.class │ ├── _524_Longest_Word_in_Dictionary_through_Deleting │ └── Solution.class │ ├── _530_Minimum_Absolute_Difference_in_BST │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _538_Convert_BST_to_Greater_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _540_Single_Element_in_a_Sorted_Array │ └── Solution.class │ ├── _543_Diameter_of_Binary_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _547_Friend_Circles │ └── Solution.class │ ├── _557_Reverse_Words_in_a_String_III │ └── Solution.class │ ├── _560_Subarray_Sum_Equals_K │ └── Solution.class │ ├── _565_Array_Nesting │ └── Solution.class │ ├── _566_Reshape_the_Matrix │ └── Solution.class │ ├── _572_Subtree_of_Another_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _581_Shortest_Unsorted_Continuous_Subarray │ └── Solution.class │ ├── _583_Delete_Operation_for_Two_Strings │ └── Solution.class │ ├── _605_Can_Place_Flowers │ └── Solution.class │ ├── _617_Merge_Two_Binary_Trees │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _621_Task_Scheduler │ └── Solution.class │ ├── _637_Average_of_Levels_in_Binary_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _645_Set_Mismatch │ └── Solution.class │ ├── _646_Maximum_Length_of_Pair_Chain │ └── Solution.class │ ├── _647_Palindromic_Substrings │ └── Solution.class │ ├── _650_2_Keys_Keyboard │ └── Solution.class │ ├── _653_Two_Sum_IV_Input_is_a_BST │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _665_Non_decreasing_Array │ └── Solution.class │ ├── _669_Trim_a_Binary_Search_Tree │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _680_Valid_Palindrome_II │ └── Solution.class │ ├── _687_Longest_Univalue_Path │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _695_Max_Area_of_Island │ └── Solution.class │ ├── _697_Degree_of_an_Array │ └── Solution.class │ ├── _714_Best_Time_to_Buy_and_Sell_Stock_with_Transaction_Fee │ └── Solution.class │ ├── _725_Split_Linked_List_in_Parts │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _739_Daily_Temperatures │ └── Solution.class │ ├── _746_Min_Cost_Climbing_Stairs │ └── Solution.class │ ├── _763_Partition_Labels │ └── Solution.class │ ├── _769_Max_Chunks_To_Make_Sorted │ └── Solution.class │ ├── _771_Jewels_and_Stones │ └── Solution.class │ ├── _876_Middle_of_the_Linked_List │ ├── Solution$ListNode.class │ └── Solution.class │ ├── _889_Construct_Binary_Tree_from_Preorder_and_Postorder_Traversal │ ├── Solution$TreeNode.class │ └── Solution.class │ ├── _90_Subsets_II │ └── Solution.class │ └── _946_Validate_Stack_Sequences │ └── Solution.class └── src └── algorithm ├── _001_Two_Sum └── Solution.java ├── _002_Add_Two_Numbers └── Solution.java ├── _003_Longest_Substring_Without_Repeating_Characters └── Solution.java ├── _004_Median_of_Two_Sorted_Arrays └── Solution.java ├── _005_Longest_Palindromic_Substring └── Solution.java ├── _007_Reverse_Integer └── Solution.java ├── _008_String_to_Integer └── Solution.java ├── _009_Palindrome_Number └── Solution.java ├── _011_Container_With_Most_Water └── Solution.java ├── _012_Integer_to_Roman └── Solution.java ├── _013_Roman_to_Integer └── Solution.java ├── _014_Longest_Common_Prefix └── Solution.java ├── _015_3Sum └── Solution.java ├── _016_3Sum_Closest └── Solution.java ├── _017_Letter_Combinations_of_a_Phone_Number └── Solution.java ├── _019_Remove_Nth_Node_From_End_of_List └── Solution.java ├── _020_Valid_Parentheses └── Solution.java ├── _021_Merge_Two_Sorted_Lists └── Solution.java ├── _022_Generate_Parentheses └── Solution.java ├── _023_Merge_k_Sorted_Lists └── Solution.java ├── _024_Swap_Nodes_in_Pairs └── Solution.java ├── _025_Reverse_Nodes_in_k_Group └── Solution.java ├── _026_Remove_Duplicates_from_Sorted_Array └── Solution.java ├── _027_Remove_Element └── Solution.java ├── _028_Implement_strStr └── Solution.java ├── _031_Next_Permutation └── Solution.java ├── _032_Longest_Valid_Parentheses └── Solution.java ├── _033_Search_in_Rotated_Sorted_Array └── Solution.java ├── _034_Find_First_and_Last_Position_of_Element_in_Sorted_Array └── Solution.java ├── _035_Search_Insert_Position └── Solution.java ├── _038_Count_and_Say └── Solution.java ├── _039_Combination_Sum └── Solution.java ├── _040_Combination_Sum_ll └── Solution.java ├── _041_First_Missing_Positive └── Solution.java ├── _042_Trapping_Rain_Water └── Solution.java ├── _043_Multiply_Strings └── Solution.java ├── _045_Jump_Game_II └── Solution.java ├── _046_Permutations ├── Solution.java └── Solution2.java ├── _047_Permutations_II ├── Solution.java └── Solution2.java ├── _048_Rotate_Image └── Solution.java ├── _049_Group_Anagrams └── Solution.java ├── _050_Pow └── Solution.java ├── _053_Maximum_Subarray └── Solution.java ├── _054_Spiral_Matrix └── Solution.java ├── _055_Jump_Game └── Solution.java ├── _056_Merge_Intervals └── Solution.java ├── _059_Spiral_Matrix_II └── Solution.java ├── _062_Unique_Paths └── Solution.java ├── _064_Minimum_Path_Sum └── Solution.java ├── _067_Add_Binary └── Solution.java ├── _069_Sqrt_x └── Solution.java ├── _070_Climbing_Stairs └── Solution.java ├── _072_Edit_Distance └── Solution.java ├── _075_Sort_Colors └── Solution.java ├── _076_Minimum_Window_Substring └── Solution.java ├── _077_Combinations └── Solution.java ├── _078_Subsets └── Solution.java ├── _079_Word_Search └── Solution.java ├── _083_Remove_Duplicates_from_Sorted_List └── Solution.java ├── _084_Largest_Rectangle_in_Histogram └── Solution.java ├── _088_Merge_Sorted_Array └── Solution.java ├── _090_Subsets_II └── Solution.java ├── _091_Decode_Ways └── Solution.java ├── _093_Restore_IP_Addresses └── Solution.java ├── _094_Binary_Tree_Inorder_Traversal └── Solution.java ├── _095_Unique_Binary_Search_Trees_II └── Solution.java ├── _096_Unique_Binary_Search_Trees └── Solution.java ├── _098_Validate_Binary_Search_Tree └── Solution.java ├── _101_Symmetric_Tree └── Solution.java ├── _102_Binary_Tree_Level_Order_Traversal └── Solution.java ├── _103_Binary_Tree_Zigzag_Level_Order_Traversal └── Solution.java ├── _104_Maximum_Depth_of_Binary_Tree └── Solution.java ├── _105_Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal └── Solution.java ├── _108_Convert_Sorted_Array_to_Binary_Search_Tree └── Solution.java ├── _109_Convert_Sorted_List_to_Binary_Search_Tree └── Solution.java ├── _110_Balanced_Binary_Tree └── Solution.java ├── _111_Minimum_Depth_of_Binary_Tree └── Solution.java ├── _112_Path_Sum └── Solution.java ├── _113_Path_Sum_II └── Solution.java ├── _114_Flatten_Binary_Tree_to_Linked_List └── Solution.java ├── _116_Populating_Next_Right_Pointers_in_Each_Node └── Solution.java ├── _121_Best_Time_to_Buy_and_Sell_Stock └── Solution.java ├── _122_Best_Time_to_Buy_and_Sell_Stock_II └── Solution.java ├── _123_Best_Time_to_Buy_and_Sell_Stock_III └── Solution.java ├── _124_Binary_Tree_Maximum_Path_Sum └── Solution.java ├── _125_Valid_Palindrome └── Solution.java ├── _127_Word_Ladder └── Solution.java ├── _128_Longest_Consecutive_Sequence └── Solution.java ├── _130_Surrounded_Regions └── Solution.java ├── _131_Palindrome_Partitioning └── Solution.java ├── _134_Gas_Station └── Solution.java ├── _135_Candy └── Solution.java ├── _136_Single_Number └── Solution.java ├── _138_Copy_List_with_Random_Pointer └── Solution.java ├── _139_Word_Break └── Solution.java ├── _140_Word_Break_II └── Solution.java ├── _141_Linked_List_Cycle └── Solution.java ├── _142_Linked_List_Cycle_II └── Solution.java ├── _143_Reorder_List └── Solution.java ├── _144_Binary_Tree_Preorder_Traversal └── Solution.java ├── _145_Binary_Tree_Postorder_Traversal └── Solution.java ├── _148_Sort_List └── Solution.java ├── _152_Maximum_Product_Subarray └── Solution.java ├── _153_Find_Minimum_in_Rotated_Sorted_Array └── Solution.java ├── _154_Find_Minimum_in_Rotated_Sorted_Array_II └── Solution.java ├── _155_Min_Stack └── MinStack.java ├── _160_Intersection_of_Two_Linked_Lists └── Solution.java ├── _169_Majority_Element └── Solution.java ├── _179_Largest_Number └── Solution.java ├── _190_Reverse_Bits └── Solution.java ├── _198_House_Robber └── Solution.java ├── _199_Binary_Tree_Right_Side_View └── Solution.java ├── _200_Number_of_Islands ├── Solution.java └── Solution2.java ├── _202_Happy_Number └── Solution.java ├── _205_Isomorphic_Strings └── Solution.java ├── _206_Reverse_Linked_List └── Solution.java ├── _207_Course_Schedule └── Solution.java ├── _208_Implement_Trie_Prefix_Tree └── Solution.java ├── _213_House_Robber2 └── Solution.java ├── _215_Kth_Largest_Element_in_an_Array └── Solution.java ├── _216_Combination_Sum_III └── Solution.java ├── _221_Maximal_Square └── Solution.java ├── _222_Count_Complete_Tree_Nodes └── Solution.java ├── _225_Implement_Stack_using_Queues └── MyStack.java ├── _226_Invert_Binary_Tree └── Solution.java ├── _230_Kth_Smallest_Element_in_a_BST └── Solution.java ├── _232_Implement_Queue_using_Stacks └── MyQueue.java ├── _234_Palindrome_Linked_List └── Solution.java ├── _235_Lowest_Common_Ancestor_of_a_Binary_Search_Tree └── Solution.java ├── _236_Lowest_Common_Ancestor_of_a_Binary_Tree └── Solution.java ├── _238_Product_of_Array_Except_Self └── Solution.java ├── _239_Sliding_Window_Maximum └── Solution.java ├── _240_Search_a_2D_Matrix_II └── Solution.java ├── _242_Valid_Anagram └── Solution.java ├── _257_Binary_Tree_Paths └── Solution.java ├── _260_Single_Number_III └── Solution.java ├── _263_Ugly_Number └── Solution.java ├── _264_Ugly_Number_II └── Solution.java ├── _268_Missing_Number └── Solution.java ├── _279_Perfect_Squares └── Solution.java ├── _283_Move_Zeroes └── Solution.java ├── _287_Find_the_Duplicate_Number └── Solution.java ├── _295_Find_Median_from_Data_Stream └── MedianFinder.java ├── _297_Serialize_and_Deserialize_Binary_Tree └── Codec.java ├── _300_Longest_Increasing_Subsequence └── Solution.java ├── _301_Remove_Invalid_Parentheses └── Solution.java ├── _303_Range_Sum_Query_Immutable └── NumArray.java ├── _309_Best_Time_to_Buy_and_Sell_Stock_with_Cooldown └── Solution.java ├── _312_Burst_Balloons └── Solution.java ├── _322_Coin_Change └── Solution.java ├── _328_Odd_Even_Linked_List └── Solution.java ├── _329_Longest_Increasing_Path_in_a_Matrix └── Solution.java ├── _334_Increasing_Triplet_Subsequence └── Solution.java ├── _337_House_Robber_III └── Solution.java ├── _338_Counting_Bits └── Solution.java ├── _343_Integer_Break └── Solution.java ├── _344_Reverse_String └── Solution.java ├── _347_Top_K_Frequent_Elements └── Solution.java ├── _350_Intersection_of_Two_Arrays_II └── Solution.java ├── _376_Wiggle_Subsequence └── Solution.java ├── _377_Combination_Sum_IV └── Solution.java ├── _378_Kth_Smallest_Element_in_a_Sorted_Matrix └── Solution.java ├── _387_First_Unique_Character_in_a_String └── Solution.java ├── _392_Is_Subsequence └── Solution.java ├── _394_Decode_String └── Solution.java ├── _395_Longest_Substring_with_At_Least_K_Repeating_Characters └── Solution.java ├── _404_Sum_of_Left_Leaves └── Solution.java ├── _405_Convert_a_Number_to_Hexadecimal └── Solution.java ├── _406_Queue_Reconstruction_by_Height └── Solution.java ├── _409_Longest_Palindrome └── Solution.java ├── _413_Arithmetic_Slices └── Solution.java ├── _416_Partition_Equal_Subset_Sum └── Solution.java ├── _435_Non_overlapping_Intervals └── Solution.java ├── _437_Path_Sum_III └── Solution.java ├── _438_Find_All_Anagrams_in_a_String └── Solution.java ├── _445_Add_Two_Numbers_II └── Solution.java ├── _448_Find_All_Numbers_Disappeared_in_an_Array └── Solution.java ├── _452_Minimum_Number_of_Arrows_to_Burst_Balloons └── Solution.java ├── _455_Assign_Cookies └── Solution.java ├── _460_LFU_Cache └── LFUCache.java ├── _461_Hamming_Distance └── Solution.java ├── _462_Minimum_Moves_to_Equal_Array_Elements_II └── Solution.java ├── _474_Ones_and_Zeroes └── Solution.java ├── _485_Max_Consecutive_Ones └── Solution.java ├── _494_Target_Sum └── Solution.java ├── _496_Next_Greater_Element_I └── Solution.java ├── _501_Find_Mode_in_Binary_Search_Tree └── Solution.java ├── _503_Next_Greater_Element_II └── Solution.java ├── _504_Base_7 └── Solution.java ├── _513_Find_Bottom_Left_Tree_Value └── Solution.java ├── _518_Coin_Change_2 └── Solution.java ├── _524_Longest_Word_in_Dictionary_through_Deleting └── Solution.java ├── _530_Minimum_Absolute_Difference_in_BST └── Solution.java ├── _538_Convert_BST_to_Greater_Tree └── Solution.java ├── _540_Single_Element_in_a_Sorted_Array └── Solution.java ├── _543_Diameter_of_Binary_Tree └── Solution.java ├── _547_Friend_Circles └── Solution.java ├── _557_Reverse_Words_in_a_String_III └── Solution.java ├── _560_Subarray_Sum_Equals_K └── Solution.java ├── _565_Array_Nesting └── Solution.java ├── _566_Reshape_the_Matrix └── Solution.java ├── _572_Subtree_of_Another_Tree └── Solution.java ├── _581_Shortest_Unsorted_Continuous_Subarray └── Solution.java ├── _583_Delete_Operation_for_Two_Strings └── Solution.java ├── _605_Can_Place_Flowers └── Solution.java ├── _617_Merge_Two_Binary_Trees └── Solution.java ├── _621_Task_Scheduler └── Solution.java ├── _637_Average_of_Levels_in_Binary_Tree └── Solution.java ├── _645_Set_Mismatch └── Solution.java ├── _646_Maximum_Length_of_Pair_Chain └── Solution.java ├── _647_Palindromic_Substrings └── Solution.java ├── _650_2_Keys_Keyboard └── Solution.java ├── _653_Two_Sum_IV_Input_is_a_BST └── Solution.java ├── _665_Non_decreasing_Array └── Solution.java ├── _669_Trim_a_Binary_Search_Tree └── Solution.java ├── _680_Valid_Palindrome_II └── Solution.java ├── _687_Longest_Univalue_Path └── Solution.java ├── _695_Max_Area_of_Island └── Solution.java ├── _697_Degree_of_an_Array └── Solution.java ├── _714_Best_Time_to_Buy_and_Sell_Stock_with_Transaction_Fee └── Solution.java ├── _725_Split_Linked_List_in_Parts └── Solution.java ├── _739_Daily_Temperatures └── Solution.java ├── _746_Min_Cost_Climbing_Stairs └── Solution.java ├── _763_Partition_Labels └── Solution.java ├── _769_Max_Chunks_To_Make_Sorted └── Solution.java ├── _771_Jewels_and_Stones └── Solution.java ├── _876_Middle_of_the_Linked_List └── Solution.java ├── _889_Construct_Binary_Tree_from_Preorder_and_Postorder_Traversal └── Solution.java └── _946_Validate_Stack_Sequences └── Solution.java /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LeetCode.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /images/_011_Container_With_Most_Water.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/images/_011_Container_With_Most_Water.jpg -------------------------------------------------------------------------------- /images/_042_Trapping_Rain_Water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/images/_042_Trapping_Rain_Water.png -------------------------------------------------------------------------------- /images/_043_Multiply_Strings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/images/_043_Multiply_Strings.jpg -------------------------------------------------------------------------------- /images/_309_Best_Time_to_Buy_and_Sell_Stock_with_Cooldown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/images/_309_Best_Time_to_Buy_and_Sell_Stock_with_Cooldown.png -------------------------------------------------------------------------------- /images/_714_Best_Time_to_Buy_and_Sell_Stock_with_Transaction_Fee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/images/_714_Best_Time_to_Buy_and_Sell_Stock_with_Transaction_Fee.png -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_001_Two_Sum/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_001_Two_Sum/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_002_Add_Two_Numbers/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_002_Add_Two_Numbers/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_002_Add_Two_Numbers/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_002_Add_Two_Numbers/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_003_Longest_Substring_Without_Repeating_Characters/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_003_Longest_Substring_Without_Repeating_Characters/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_004_Median_of_Two_Sorted_Arrays/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_004_Median_of_Two_Sorted_Arrays/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_005_Longest_Palindromic_Substring/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_005_Longest_Palindromic_Substring/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_007_Reverse_Integer/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_007_Reverse_Integer/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_008_String_to_Integer/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_008_String_to_Integer/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_009_Palindrome_Number/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_009_Palindrome_Number/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_011_Container_With_Most_Water/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_011_Container_With_Most_Water/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_012_Integer_to_Roman/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_012_Integer_to_Roman/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_013_Roman_to_Integer/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_013_Roman_to_Integer/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_014_Longest_Common_Prefix/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_014_Longest_Common_Prefix/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_015_3Sum/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_015_3Sum/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_016_3Sum_Closest/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_016_3Sum_Closest/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_017_Letter_Combinations_of_a_Phone_Number/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_017_Letter_Combinations_of_a_Phone_Number/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_019_Remove_Nth_Node_From_End_of_List/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_019_Remove_Nth_Node_From_End_of_List/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_019_Remove_Nth_Node_From_End_of_List/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_019_Remove_Nth_Node_From_End_of_List/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_020_Valid_Parentheses/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_020_Valid_Parentheses/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_021_Merge_Two_Sorted_Lists/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_021_Merge_Two_Sorted_Lists/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_021_Merge_Two_Sorted_Lists/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_021_Merge_Two_Sorted_Lists/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_022_Generate_Parentheses/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_022_Generate_Parentheses/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_023_Merge_k_Sorted_Lists/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_023_Merge_k_Sorted_Lists/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_023_Merge_k_Sorted_Lists/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_023_Merge_k_Sorted_Lists/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_024_Swap_Nodes_in_Pairs/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_024_Swap_Nodes_in_Pairs/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_024_Swap_Nodes_in_Pairs/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_024_Swap_Nodes_in_Pairs/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_025_Reverse_Nodes_in_k_Group/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_025_Reverse_Nodes_in_k_Group/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_025_Reverse_Nodes_in_k_Group/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_025_Reverse_Nodes_in_k_Group/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_027_Remove_Element/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_027_Remove_Element/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_028_Implement_strStr/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_028_Implement_strStr/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_031_Next_Permutation/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_031_Next_Permutation/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_032_Longest_Valid_Parentheses/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_032_Longest_Valid_Parentheses/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_033_Search_in_Rotated_Sorted_Array/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_033_Search_in_Rotated_Sorted_Array/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_034_Find_First_and_Last_Position_of_Element_in_Sorted_Array/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_034_Find_First_and_Last_Position_of_Element_in_Sorted_Array/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_035_Search_Insert_Position/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_035_Search_Insert_Position/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_038_Count_and_Say/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_038_Count_and_Say/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_039_Combination_Sum/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_039_Combination_Sum/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_040_Combination_Sum_ll/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_040_Combination_Sum_ll/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_041_First_Missing_Positive/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_041_First_Missing_Positive/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_042_Trapping_Rain_Water/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_042_Trapping_Rain_Water/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_043_Multiply_Strings/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_043_Multiply_Strings/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_045_Jump_Game_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_045_Jump_Game_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_046_Permutations/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_046_Permutations/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_046_Permutations/Solution2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_046_Permutations/Solution2.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_047_Permutations_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_047_Permutations_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_048_Rotate_Image/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_048_Rotate_Image/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_049_Group_Anagrams/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_049_Group_Anagrams/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_050_Pow/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_050_Pow/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_053_Maximum_Subarray/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_053_Maximum_Subarray/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_054_Spiral_Matrix/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_054_Spiral_Matrix/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_055_Jump_Game/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_055_Jump_Game/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_056_Merge_Intervals/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_056_Merge_Intervals/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_059_Spiral_Matrix_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_059_Spiral_Matrix_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_062_Unique_Paths/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_062_Unique_Paths/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_064_Minimum_Path_Sum/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_064_Minimum_Path_Sum/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_067_Add_Binary/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_067_Add_Binary/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_069_Sqrt_x/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_069_Sqrt_x/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_070_Climbing_Stairs/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_070_Climbing_Stairs/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_072_Edit_Distance/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_072_Edit_Distance/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_075_Sort_Colors/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_075_Sort_Colors/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_076_Minimum_Window_Substring/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_076_Minimum_Window_Substring/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_077_Combinations/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_077_Combinations/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_078_Subsets/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_078_Subsets/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_079_Word_Search/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_079_Word_Search/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_083_Remove_Duplicates_from_Sorted_List/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_083_Remove_Duplicates_from_Sorted_List/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_083_Remove_Duplicates_from_Sorted_List/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_083_Remove_Duplicates_from_Sorted_List/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_084_Largest_Rectangle_in_Histogram/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_084_Largest_Rectangle_in_Histogram/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_091_Decode_Ways/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_091_Decode_Ways/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_093_Restore_IP_Addresses/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_093_Restore_IP_Addresses/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_094_Binary_Tree_Inorder_Traversal/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_094_Binary_Tree_Inorder_Traversal/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_094_Binary_Tree_Inorder_Traversal/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_094_Binary_Tree_Inorder_Traversal/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_095_Unique_Binary_Search_Trees_II/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_095_Unique_Binary_Search_Trees_II/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_095_Unique_Binary_Search_Trees_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_095_Unique_Binary_Search_Trees_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_096_Unique_Binary_Search_Trees/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_096_Unique_Binary_Search_Trees/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_098_Validate_Binary_Search_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_098_Validate_Binary_Search_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_098_Validate_Binary_Search_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_098_Validate_Binary_Search_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_101_Symmetric_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_101_Symmetric_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_101_Symmetric_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_101_Symmetric_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_102_Binary_Tree_Level_Order_Traversal/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_102_Binary_Tree_Level_Order_Traversal/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_102_Binary_Tree_Level_Order_Traversal/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_102_Binary_Tree_Level_Order_Traversal/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_103_Binary_Tree_Zigzag_Level_Order_Traversal/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_103_Binary_Tree_Zigzag_Level_Order_Traversal/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_103_Binary_Tree_Zigzag_Level_Order_Traversal/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_103_Binary_Tree_Zigzag_Level_Order_Traversal/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_104_Maximum_Depth_of_Binary_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_104_Maximum_Depth_of_Binary_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_104_Maximum_Depth_of_Binary_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_104_Maximum_Depth_of_Binary_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_105_Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_105_Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_105_Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_105_Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_108_Convert_Sorted_Array_to_Binary_Search_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_108_Convert_Sorted_Array_to_Binary_Search_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_108_Convert_Sorted_Array_to_Binary_Search_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_108_Convert_Sorted_Array_to_Binary_Search_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_109_Convert_Sorted_List_to_Binary_Search_Tree/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_109_Convert_Sorted_List_to_Binary_Search_Tree/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_109_Convert_Sorted_List_to_Binary_Search_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_109_Convert_Sorted_List_to_Binary_Search_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_109_Convert_Sorted_List_to_Binary_Search_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_109_Convert_Sorted_List_to_Binary_Search_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_110_Balanced_Binary_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_110_Balanced_Binary_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_110_Balanced_Binary_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_110_Balanced_Binary_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_111_Minimum_Depth_of_Binary_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_111_Minimum_Depth_of_Binary_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_111_Minimum_Depth_of_Binary_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_111_Minimum_Depth_of_Binary_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_112_Path_Sum/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_112_Path_Sum/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_112_Path_Sum/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_112_Path_Sum/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_113_Path_Sum_II/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_113_Path_Sum_II/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_113_Path_Sum_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_113_Path_Sum_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_114_Flatten_Binary_Tree_to_Linked_List/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_114_Flatten_Binary_Tree_to_Linked_List/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_114_Flatten_Binary_Tree_to_Linked_List/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_114_Flatten_Binary_Tree_to_Linked_List/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_116_Populating_Next_Right_Pointers_in_Each_Node/Solution$Node.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_116_Populating_Next_Right_Pointers_in_Each_Node/Solution$Node.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_116_Populating_Next_Right_Pointers_in_Each_Node/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_116_Populating_Next_Right_Pointers_in_Each_Node/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_121_Best_Time_to_Buy_and_Sell_Stock/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_121_Best_Time_to_Buy_and_Sell_Stock/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_122_Best_Time_to_Buy_and_Sell_Stock_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_122_Best_Time_to_Buy_and_Sell_Stock_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_123_Best_Time_to_Buy_and_Sell_Stock_III/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_123_Best_Time_to_Buy_and_Sell_Stock_III/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_124_Binary_Tree_Maximum_Path_Sum/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_124_Binary_Tree_Maximum_Path_Sum/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_124_Binary_Tree_Maximum_Path_Sum/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_124_Binary_Tree_Maximum_Path_Sum/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_125_Valid_Palindrome/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_125_Valid_Palindrome/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_127_Word_Ladder/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_127_Word_Ladder/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_128_Longest_Consecutive_Sequence/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_128_Longest_Consecutive_Sequence/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_130_Surrounded_Regions/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_130_Surrounded_Regions/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_131_Palindrome_Partitioning/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_131_Palindrome_Partitioning/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_134_Gas_Station/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_134_Gas_Station/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_135_Candy/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_135_Candy/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_136_Single_Number/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_136_Single_Number/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_138_Copy_List_with_Random_Pointer/Solution$Node.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_138_Copy_List_with_Random_Pointer/Solution$Node.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_138_Copy_List_with_Random_Pointer/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_138_Copy_List_with_Random_Pointer/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_139_Word_Break/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_139_Word_Break/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_140_Word_Break_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_140_Word_Break_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_141_Linked_List_Cycle/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_141_Linked_List_Cycle/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_141_Linked_List_Cycle/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_141_Linked_List_Cycle/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_142_Linked_List_Cycle_II/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_142_Linked_List_Cycle_II/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_142_Linked_List_Cycle_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_142_Linked_List_Cycle_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_143_Reorder_List/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_143_Reorder_List/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_143_Reorder_List/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_143_Reorder_List/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_144_Binary_Tree_Preorder_Traversal/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_144_Binary_Tree_Preorder_Traversal/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_144_Binary_Tree_Preorder_Traversal/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_144_Binary_Tree_Preorder_Traversal/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_145_Binary_Tree_Postorder_Traversal/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_145_Binary_Tree_Postorder_Traversal/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_145_Binary_Tree_Postorder_Traversal/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_145_Binary_Tree_Postorder_Traversal/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_148_Sort_List/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_148_Sort_List/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_148_Sort_List/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_148_Sort_List/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_152_Maximum_Product_Subarray/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_152_Maximum_Product_Subarray/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_153_Find_Minimum_in_Rotated_Sorted_Array/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_153_Find_Minimum_in_Rotated_Sorted_Array/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_154_Find_Minimum_in_Rotated_Sorted_Array_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_154_Find_Minimum_in_Rotated_Sorted_Array_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_155_Min_Stack/MinStack.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_155_Min_Stack/MinStack.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_160_Intersection_of_Two_Linked_Lists/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_160_Intersection_of_Two_Linked_Lists/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_160_Intersection_of_Two_Linked_Lists/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_160_Intersection_of_Two_Linked_Lists/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_169_Majority_Element/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_169_Majority_Element/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_179_Largest_Number/Solution$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_179_Largest_Number/Solution$1.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_179_Largest_Number/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_179_Largest_Number/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_190_Reverse_Bits/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_190_Reverse_Bits/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_198_House_Robber/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_198_House_Robber/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_199_Binary_Tree_Right_Side_View/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_199_Binary_Tree_Right_Side_View/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_199_Binary_Tree_Right_Side_View/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_199_Binary_Tree_Right_Side_View/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_200_Number_of_Islands/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_200_Number_of_Islands/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_200_Number_of_Islands/Solution2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_200_Number_of_Islands/Solution2.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_200_Number_of_Islands/UnionFind.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_200_Number_of_Islands/UnionFind.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_202_Happy_Number/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_202_Happy_Number/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_205_Isomorphic_Strings/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_205_Isomorphic_Strings/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_206_Reverse_Linked_List/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_206_Reverse_Linked_List/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_206_Reverse_Linked_List/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_206_Reverse_Linked_List/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_207_Course_Schedule/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_207_Course_Schedule/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_208_Implement_Trie_Prefix_Tree/Solution$Trie.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_208_Implement_Trie_Prefix_Tree/Solution$Trie.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_208_Implement_Trie_Prefix_Tree/Solution$TrieNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_208_Implement_Trie_Prefix_Tree/Solution$TrieNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_208_Implement_Trie_Prefix_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_208_Implement_Trie_Prefix_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_213_House_Robber2/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_213_House_Robber2/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_215_Kth_Largest_Element_in_an_Array/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_215_Kth_Largest_Element_in_an_Array/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_216_Combination_Sum_III/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_216_Combination_Sum_III/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_221_Maximal_Square/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_221_Maximal_Square/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_222_Count_Complete_Tree_Nodes/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_222_Count_Complete_Tree_Nodes/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_225_Implement_Stack_using_Queues/MyStack.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_225_Implement_Stack_using_Queues/MyStack.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_226_Invert_Binary_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_226_Invert_Binary_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_226_Invert_Binary_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_226_Invert_Binary_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_230_Kth_Smallest_Element_in_a_BST/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_230_Kth_Smallest_Element_in_a_BST/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_230_Kth_Smallest_Element_in_a_BST/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_230_Kth_Smallest_Element_in_a_BST/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_232_Implement_Queue_using_Stacks/MyQueue.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_232_Implement_Queue_using_Stacks/MyQueue.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_234_Palindrome_Linked_List/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_234_Palindrome_Linked_List/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_234_Palindrome_Linked_List/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_234_Palindrome_Linked_List/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_235_Lowest_Common_Ancestor_of_a_Binary_Search_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_235_Lowest_Common_Ancestor_of_a_Binary_Search_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_235_Lowest_Common_Ancestor_of_a_Binary_Search_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_235_Lowest_Common_Ancestor_of_a_Binary_Search_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_236_Lowest_Common_Ancestor_of_a_Binary_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_236_Lowest_Common_Ancestor_of_a_Binary_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_236_Lowest_Common_Ancestor_of_a_Binary_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_236_Lowest_Common_Ancestor_of_a_Binary_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_238_Product_of_Array_Except_Self/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_238_Product_of_Array_Except_Self/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_239_Sliding_Window_Maximum/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_239_Sliding_Window_Maximum/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_240_Search_a_2D_Matrix_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_240_Search_a_2D_Matrix_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_242_Valid_Anagram/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_242_Valid_Anagram/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_257_Binary_Tree_Paths/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_257_Binary_Tree_Paths/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_257_Binary_Tree_Paths/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_257_Binary_Tree_Paths/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_260_Single_Number_III/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_260_Single_Number_III/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_263_Ugly_Number/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_263_Ugly_Number/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_264_Ugly_Number_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_264_Ugly_Number_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_268_Missing_Number/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_268_Missing_Number/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_279_Perfect_Squares/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_279_Perfect_Squares/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_283_Move_Zeroes/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_283_Move_Zeroes/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_287_Find_the_Duplicate_Number/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_287_Find_the_Duplicate_Number/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_295_Find_Median_from_Data_Stream/MedianFinder.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_295_Find_Median_from_Data_Stream/MedianFinder.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_297_Serialize_and_Deserialize_Binary_Tree/Codec$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_297_Serialize_and_Deserialize_Binary_Tree/Codec$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_297_Serialize_and_Deserialize_Binary_Tree/Codec.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_297_Serialize_and_Deserialize_Binary_Tree/Codec.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_300_Longest_Increasing_Subsequence/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_300_Longest_Increasing_Subsequence/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_301_Remove_Invalid_Parentheses/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_301_Remove_Invalid_Parentheses/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_303_Range_Sum_Query_Immutable/NumArray.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_303_Range_Sum_Query_Immutable/NumArray.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_309_Best_Time_to_Buy_and_Sell_Stock_with_Cooldown/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_309_Best_Time_to_Buy_and_Sell_Stock_with_Cooldown/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_312_Burst_Balloons/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_312_Burst_Balloons/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_322_Coin_Change/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_322_Coin_Change/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_328_Odd_Even_Linked_List/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_328_Odd_Even_Linked_List/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_328_Odd_Even_Linked_List/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_328_Odd_Even_Linked_List/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_329_Longest_Increasing_Path_in_a_Matrix/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_329_Longest_Increasing_Path_in_a_Matrix/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_334_Increasing_Triplet_Subsequence/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_334_Increasing_Triplet_Subsequence/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_337_House_Robber_III/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_337_House_Robber_III/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_337_House_Robber_III/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_337_House_Robber_III/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_338_Counting_Bits/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_338_Counting_Bits/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_343_Integer_Break/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_343_Integer_Break/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_344_Reverse_String/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_344_Reverse_String/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_347_Top_K_Frequent_Elements/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_347_Top_K_Frequent_Elements/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_350_Intersection_of_Two_Arrays_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_350_Intersection_of_Two_Arrays_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_376_Wiggle_Subsequence/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_376_Wiggle_Subsequence/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_377_Combination_Sum_IV/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_377_Combination_Sum_IV/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_378_Kth_Smallest_Element_in_a_Sorted_Matrix/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_378_Kth_Smallest_Element_in_a_Sorted_Matrix/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_387_First_Unique_Character_in_a_String/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_387_First_Unique_Character_in_a_String/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_392_Is_Subsequence/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_392_Is_Subsequence/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_394_Decode_String/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_394_Decode_String/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_395_Longest_Substring_with_At_Least_K_Repeating_Characters/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_395_Longest_Substring_with_At_Least_K_Repeating_Characters/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_404_Sum_of_Left_Leaves/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_404_Sum_of_Left_Leaves/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_404_Sum_of_Left_Leaves/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_404_Sum_of_Left_Leaves/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_405_Convert_a_Number_to_Hexadecimal/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_405_Convert_a_Number_to_Hexadecimal/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_406_Queue_Reconstruction_by_Height/Solution$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_406_Queue_Reconstruction_by_Height/Solution$1.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_406_Queue_Reconstruction_by_Height/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_406_Queue_Reconstruction_by_Height/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_409_Longest_Palindrome/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_409_Longest_Palindrome/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_413_Arithmetic_Slices/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_413_Arithmetic_Slices/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_416_Partition_Equal_Subset_Sum/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_416_Partition_Equal_Subset_Sum/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_435_Non_overlapping_Intervals/Solution$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_435_Non_overlapping_Intervals/Solution$1.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_435_Non_overlapping_Intervals/Solution$Interval.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_435_Non_overlapping_Intervals/Solution$Interval.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_435_Non_overlapping_Intervals/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_435_Non_overlapping_Intervals/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_437_Path_Sum_III/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_437_Path_Sum_III/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_437_Path_Sum_III/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_437_Path_Sum_III/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_438_Find_All_Anagrams_in_a_String/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_438_Find_All_Anagrams_in_a_String/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_445_Add_Two_Numbers_II/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_445_Add_Two_Numbers_II/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_445_Add_Two_Numbers_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_445_Add_Two_Numbers_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_448_Find_All_Numbers_Disappeared_in_an_Array/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_448_Find_All_Numbers_Disappeared_in_an_Array/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_452_Minimum_Number_of_Arrows_to_Burst_Balloons/Solution$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_452_Minimum_Number_of_Arrows_to_Burst_Balloons/Solution$1.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_452_Minimum_Number_of_Arrows_to_Burst_Balloons/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_452_Minimum_Number_of_Arrows_to_Burst_Balloons/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_455_Assign_Cookies/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_455_Assign_Cookies/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_460_LFU_Cache/LFUCache.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_460_LFU_Cache/LFUCache.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_461_Hamming_Distance/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_461_Hamming_Distance/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_462_Minimum_Moves_to_Equal_Array_Elements_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_462_Minimum_Moves_to_Equal_Array_Elements_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_474_Ones_and_Zeroes/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_474_Ones_and_Zeroes/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_485_Max_Consecutive_Ones/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_485_Max_Consecutive_Ones/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_494_Target_Sum/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_494_Target_Sum/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_496_Next_Greater_Element_I/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_496_Next_Greater_Element_I/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_501_Find_Mode_in_Binary_Search_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_501_Find_Mode_in_Binary_Search_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_501_Find_Mode_in_Binary_Search_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_501_Find_Mode_in_Binary_Search_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_503_Next_Greater_Element_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_503_Next_Greater_Element_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_504_Base_7/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_504_Base_7/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_513_Find_Bottom_Left_Tree_Value/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_513_Find_Bottom_Left_Tree_Value/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_513_Find_Bottom_Left_Tree_Value/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_513_Find_Bottom_Left_Tree_Value/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_518_Coin_Change_2/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_518_Coin_Change_2/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_524_Longest_Word_in_Dictionary_through_Deleting/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_524_Longest_Word_in_Dictionary_through_Deleting/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_530_Minimum_Absolute_Difference_in_BST/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_530_Minimum_Absolute_Difference_in_BST/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_530_Minimum_Absolute_Difference_in_BST/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_530_Minimum_Absolute_Difference_in_BST/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_538_Convert_BST_to_Greater_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_538_Convert_BST_to_Greater_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_538_Convert_BST_to_Greater_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_538_Convert_BST_to_Greater_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_540_Single_Element_in_a_Sorted_Array/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_540_Single_Element_in_a_Sorted_Array/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_543_Diameter_of_Binary_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_543_Diameter_of_Binary_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_543_Diameter_of_Binary_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_543_Diameter_of_Binary_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_547_Friend_Circles/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_547_Friend_Circles/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_557_Reverse_Words_in_a_String_III/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_557_Reverse_Words_in_a_String_III/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_560_Subarray_Sum_Equals_K/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_560_Subarray_Sum_Equals_K/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_565_Array_Nesting/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_565_Array_Nesting/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_566_Reshape_the_Matrix/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_566_Reshape_the_Matrix/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_572_Subtree_of_Another_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_572_Subtree_of_Another_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_572_Subtree_of_Another_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_572_Subtree_of_Another_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_581_Shortest_Unsorted_Continuous_Subarray/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_581_Shortest_Unsorted_Continuous_Subarray/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_583_Delete_Operation_for_Two_Strings/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_583_Delete_Operation_for_Two_Strings/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_605_Can_Place_Flowers/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_605_Can_Place_Flowers/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_617_Merge_Two_Binary_Trees/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_617_Merge_Two_Binary_Trees/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_617_Merge_Two_Binary_Trees/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_617_Merge_Two_Binary_Trees/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_621_Task_Scheduler/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_621_Task_Scheduler/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_637_Average_of_Levels_in_Binary_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_637_Average_of_Levels_in_Binary_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_637_Average_of_Levels_in_Binary_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_637_Average_of_Levels_in_Binary_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_645_Set_Mismatch/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_645_Set_Mismatch/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_646_Maximum_Length_of_Pair_Chain/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_646_Maximum_Length_of_Pair_Chain/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_647_Palindromic_Substrings/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_647_Palindromic_Substrings/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_650_2_Keys_Keyboard/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_650_2_Keys_Keyboard/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_653_Two_Sum_IV_Input_is_a_BST/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_653_Two_Sum_IV_Input_is_a_BST/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_653_Two_Sum_IV_Input_is_a_BST/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_653_Two_Sum_IV_Input_is_a_BST/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_665_Non_decreasing_Array/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_665_Non_decreasing_Array/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_669_Trim_a_Binary_Search_Tree/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_669_Trim_a_Binary_Search_Tree/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_669_Trim_a_Binary_Search_Tree/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_669_Trim_a_Binary_Search_Tree/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_680_Valid_Palindrome_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_680_Valid_Palindrome_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_687_Longest_Univalue_Path/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_687_Longest_Univalue_Path/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_687_Longest_Univalue_Path/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_687_Longest_Univalue_Path/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_695_Max_Area_of_Island/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_695_Max_Area_of_Island/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_697_Degree_of_an_Array/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_697_Degree_of_an_Array/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_714_Best_Time_to_Buy_and_Sell_Stock_with_Transaction_Fee/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_714_Best_Time_to_Buy_and_Sell_Stock_with_Transaction_Fee/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_725_Split_Linked_List_in_Parts/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_725_Split_Linked_List_in_Parts/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_725_Split_Linked_List_in_Parts/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_725_Split_Linked_List_in_Parts/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_739_Daily_Temperatures/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_739_Daily_Temperatures/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_746_Min_Cost_Climbing_Stairs/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_746_Min_Cost_Climbing_Stairs/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_763_Partition_Labels/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_763_Partition_Labels/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_769_Max_Chunks_To_Make_Sorted/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_769_Max_Chunks_To_Make_Sorted/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_771_Jewels_and_Stones/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_771_Jewels_and_Stones/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_876_Middle_of_the_Linked_List/Solution$ListNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_876_Middle_of_the_Linked_List/Solution$ListNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_876_Middle_of_the_Linked_List/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_876_Middle_of_the_Linked_List/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_889_Construct_Binary_Tree_from_Preorder_and_Postorder_Traversal/Solution$TreeNode.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_889_Construct_Binary_Tree_from_Preorder_and_Postorder_Traversal/Solution$TreeNode.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_889_Construct_Binary_Tree_from_Preorder_and_Postorder_Traversal/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_889_Construct_Binary_Tree_from_Preorder_and_Postorder_Traversal/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_90_Subsets_II/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_90_Subsets_II/Solution.class -------------------------------------------------------------------------------- /out/production/LeetCode/algorithm/_946_Validate_Stack_Sequences/Solution.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/professorxin/LeetCode/a409c4a0bbe4ff9cf4e03dcaba6adc246f7b73e6/out/production/LeetCode/algorithm/_946_Validate_Stack_Sequences/Solution.class -------------------------------------------------------------------------------- /src/algorithm/_001_Two_Sum/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._001_Two_Sum; 2 | 3 | 4 | import java.util.HashMap; 5 | import java.util.Map; 6 | 7 | public class Solution { 8 | 9 | /*给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数, 10 | 并返回他们的数组下标。*/ 11 | 12 | 13 | 14 | /*用一个hashmap来存储数值和对应的下标*/ 15 | public int[] twoSum1(int[] nums, int target) { 16 | int[] result = new int[2]; 17 | //数值和数值对应下标 18 | Map map = new HashMap(); 19 | for (int i = 0; i < nums.length; i++) { 20 | if (map.containsKey(target - nums[i])) { 21 | result[1] = i; 22 | result[0] = map.get(target - nums[i]); 23 | return result; 24 | } 25 | map.put(nums[i], i); 26 | } 27 | return result; 28 | } 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/algorithm/_007_Reverse_Integer/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._007_Reverse_Integer; 2 | 3 | public class Solution { 4 | 5 | /*反转整数*/ 6 | 7 | 8 | public int reverse(int x) { 9 | int result = 0; 10 | while (x != 0) { 11 | int tail = x % 10; 12 | int newResult = result * 10 + tail; 13 | //判断是否溢出 14 | if ((newResult - tail) / 10 != result) { 15 | return 0; 16 | } 17 | result = newResult; 18 | x /= 10; 19 | } 20 | return result; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/algorithm/_009_Palindrome_Number/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._009_Palindrome_Number; 2 | 3 | public class Solution { 4 | /*判断是否是回文数*/ 5 | public boolean isPalindromeOther(int x) { 6 | if (x < 0 || x % 10 == 0 && x != 0) { 7 | return false; 8 | } 9 | int reverse = 0; 10 | while (x > reverse) { 11 | reverse = reverse * 10 + x % 10; 12 | x = x / 10; 13 | } 14 | return x == reverse || x == reverse / 10; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/algorithm/_011_Container_With_Most_Water/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._011_Container_With_Most_Water; 2 | 3 | public class Solution { 4 | 5 | /*给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线, 6 | 垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。*/ 7 | //示例图片在images文件夹 8 | 9 | //定义双指针 10 | public int maxArea(int[] height) { 11 | int left = 0; 12 | int right = height.length - 1; 13 | int max = 0; 14 | while (left < right) { 15 | //求最大面积 16 | max = Math.max(max, Math.min(height[left], height[right]) * (right - left)); 17 | //如果右边大,移动左指针。如果左边大,移动右指针 18 | if (height[left] < height[right]) { 19 | left++; 20 | } else { 21 | right--; 22 | } 23 | } 24 | return max; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/algorithm/_019_Remove_Nth_Node_From_End_of_List/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._019_Remove_Nth_Node_From_End_of_List; 2 | 3 | public class Solution { 4 | 5 | public class ListNode { 6 | int val; 7 | ListNode next; 8 | ListNode(int x) { val = x; } 9 | } 10 | 11 | 12 | /*删除链表倒数第n个节点*/ 13 | 14 | public ListNode removeNthFromEnd(ListNode head, int n) { 15 | //构造一个节点,并让它连接首节点,很关键 16 | ListNode start = new ListNode(0); 17 | start.next = head; 18 | ListNode fast = start,slow = start; 19 | //快指针先走n+1步 20 | for(int i = 0;i <= n;i++){ 21 | fast = fast.next; 22 | } 23 | //快慢指针一起走 24 | while(fast != null){ 25 | fast = fast.next; 26 | slow = slow.next; 27 | } 28 | //移除倒数第n个节点 29 | slow.next = slow.next.next; 30 | return start.next; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/algorithm/_021_Merge_Two_Sorted_Lists/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._021_Merge_Two_Sorted_Lists; 2 | 3 | public class Solution { 4 | 5 | //链表结点 6 | public class ListNode { 7 | int val; 8 | ListNode next; 9 | 10 | ListNode(int x) { 11 | val = x; 12 | } 13 | } 14 | 15 | //合并两个已排序的链接列表并将其作为新列表返回,新列表应该通过拼接前两个列表的节点来完成。 16 | public ListNode mergeTwoLists(ListNode l1, ListNode l2) { 17 | //递归的结束条件 18 | if (l1 == null) return l2; 19 | if (l2 == null) return l1; 20 | if (l1.val < l2.val) { 21 | l1.next = mergeTwoLists(l1.next, l2); 22 | return l1; 23 | } else { 24 | l2.next = mergeTwoLists(l1, l2.next); 25 | return l2; 26 | } 27 | } 28 | } 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/algorithm/_024_Swap_Nodes_in_Pairs/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._024_Swap_Nodes_in_Pairs; 2 | 3 | public class Solution { 4 | 5 | /*给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 6 | 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。*/ 7 | 8 | public class ListNode { 9 | int val; 10 | ListNode next; 11 | 12 | ListNode(int x) { 13 | val = x; 14 | } 15 | } 16 | 17 | 18 | public ListNode swapPairs(ListNode head) { 19 | if (head == null || head.next == null) { 20 | return head; 21 | } 22 | ListNode second = head.next; 23 | ListNode third = second.next; 24 | //改变结点的指向 25 | second.next = head; 26 | head.next = swapPairs(third); 27 | return second; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_026_Remove_Duplicates_from_Sorted_Array/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._026_Remove_Duplicates_from_Sorted_Array; 2 | 3 | public class Solution { 4 | 5 | /*给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 6 | 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。*/ 7 | 8 | public int removeDuplicates(int[] nums) { 9 | int count = 0; 10 | for (int i = 1; i < nums.length; i++) { 11 | //出现重复的数字,count次数加1 12 | if (nums[i] == nums[i - 1]) { 13 | count++; 14 | } else { 15 | nums[i - count] = nums[i]; 16 | } 17 | } 18 | //总次数减去出现重复的次数 19 | return nums.length - count; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/algorithm/_028_Implement_strStr/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._028_Implement_strStr; 2 | 3 | public class Solution { 4 | 5 | //判断字符串s是否包含了字符串t 6 | public int strStrOther(String s, String t) { 7 | if (t.isEmpty()) return 0; 8 | for (int i = 0; i <= s.length() - t.length(); i++) { 9 | //两个字符串开始相等的部分 10 | for (int j = 0; j < t.length() && s.charAt(i + j) == t.charAt(j); j++) 11 | //如果j到了字符串的最后一位,就可以说明包含了 12 | if (j == t.length() - 1) return i; 13 | } 14 | return -1; 15 | } 16 | 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/algorithm/_032_Longest_Valid_Parentheses/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._032_Longest_Valid_Parentheses; 2 | 3 | import java.util.Stack; 4 | 5 | public class Solution { 6 | 7 | /*给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。*/ 8 | 9 | //借助栈保存s中字符为‘(’的位置 10 | public int longestValidParentheses(String s) { 11 | Stack stack = new Stack<>(); 12 | int result = 0; 13 | //-1用于后续计算长度 14 | stack.push(-1); 15 | for (int i = 0; i < s.length(); i++) { 16 | //如果当前字符为)且栈顶数字表示的字符为(.要限制栈的大小大于1,不然一开始插入的-1会导致s.charAt()报错 17 | if (s.charAt(i) == ')' && stack.size() > 1 && s.charAt(stack.peek()) == '(') { 18 | //将(出栈 19 | stack.pop(); 20 | //更新有效括号子串的最长长度 21 | result = Math.max(result, i - stack.peek()); 22 | } else { 23 | stack.push(i); 24 | } 25 | } 26 | return result; 27 | } 28 | 29 | //todo 动态规划 30 | } 31 | -------------------------------------------------------------------------------- /src/algorithm/_035_Search_Insert_Position/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._035_Search_Insert_Position; 2 | 3 | public class Solution { 4 | 5 | /*给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。 6 | 如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 7 | 你可以假设数组中无重复元素。*/ 8 | 9 | 10 | //二分查找 11 | public int searchInsert(int[] nums, int target) { 12 | int start = 0, end = nums.length - 1; 13 | while (start <= end) { 14 | int mid = start + (end - start) / 2; 15 | if (nums[mid] == target) { 16 | return mid; 17 | } else if (nums[mid] > target) { 18 | end = mid - 1; 19 | } else { 20 | start = mid + 1; 21 | } 22 | } 23 | return start; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/algorithm/_041_First_Missing_Positive/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._041_First_Missing_Positive; 2 | 3 | public class Solution { 4 | 5 | /*给定一个未排序的整数数组,找出其中没有出现的最小的正整数。*/ 6 | 7 | //时间复杂度要求o(n) 8 | //算法的思想就是让数组里面存放着1-n的正数,第0个位置放1,第1个位置放2,以此类推 9 | // 最后遍历数组如果没有存放匹配的正数,返回最小正数的值为该位置+1 10 | public int firstMissingPositive(int[] nums) { 11 | for (int i = 0; i < nums.length; i++) { 12 | //如果满足下述匹配规则,就一直交换 13 | while (nums[i] > 0 && nums[i] <= nums.length && nums[nums[i] - 1] != nums[i]) { 14 | swap(nums, i, nums[i] - 1); 15 | } 16 | 17 | } 18 | //遍历数组找出不匹配的 19 | for (int i = 0; i < nums.length; i++) { 20 | if (nums[i] != i + 1) { 21 | return i + 1; 22 | } 23 | } 24 | //表示数组完全匹配规则,最小正数为数组长度+1 25 | return nums.length + 1; 26 | } 27 | 28 | private void swap(int[] nums, int i, int j) { 29 | int temp = nums[i]; 30 | nums[i] = nums[j]; 31 | nums[j] = temp; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/algorithm/_045_Jump_Game_II/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._045_Jump_Game_II; 2 | 3 | public class Solution { 4 | 5 | /*给定一个非负整数数组,你最初位于数组的第一个位置。 6 | 数组中的每个元素代表你在该位置可以跳跃的最大长度。 7 | 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 8 | */ 9 | 10 | public int jump(int[] nums) { 11 | int jump = 0, curEnd = 0, curFarthest = 0; 12 | for (int i = 0; i < nums.length - 1; i++) { 13 | //每次更新跳到最远的位置 14 | curFarthest = Math.max(curFarthest, nums[i] + i); 15 | //如果等于当前结束值,步数增加1,并且更新当前结束值等于过程中更新的最远的位置 16 | if (i == curEnd) { 17 | jump++; 18 | curEnd = Math.max(curFarthest, curEnd); 19 | } 20 | } 21 | return jump; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/algorithm/_048_Rotate_Image/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._048_Rotate_Image; 2 | 3 | public class Solution { 4 | 5 | //将图像顺时针旋转90度 6 | 7 | 8 | //图形变化如下 9 | // 1 2 3 1 4 7 7 4 1 10 | // 4 5 6 2 5 8 8 5 2 11 | // 7 8 9 3 6 9 9 6 3 12 | 13 | public void rotate(int[][] matrix) { 14 | for (int i = 0; i < matrix.length; i++) { 15 | for (int j = i + 1; j < matrix.length; j++) { 16 | int temp = matrix[j][i]; 17 | matrix[j][i] = matrix[i][j]; 18 | matrix[i][j] = temp; 19 | } 20 | } 21 | for (int i = 0; i < matrix.length; i++) { 22 | for (int j = 0; j < matrix.length / 2; j++) { 23 | int temp = matrix[i][j]; 24 | matrix[i][j] = matrix[i][matrix.length - 1 - j]; 25 | matrix[i][matrix.length - 1 - j] = temp; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_050_Pow/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._050_Pow; 2 | 3 | public class Solution { 4 | //我一开始用for循环,time limit,可能计算量太大,而且方法太暴力。 5 | //使用递归才是正确做法, 6 | public double myPow(double x, int n) { 7 | if (n == 0) 8 | return 1; 9 | if (n < 0) { 10 | //如果n是最小值的话就要把它变大,不然加负号会溢出 11 | if (n == Integer.MIN_VALUE) { 12 | n /= 2; 13 | x *= x; 14 | } 15 | n = -n; 16 | x = 1 / x; 17 | } 18 | //递归调用,底数平方,指数减半 19 | return (n % 2 == 0) ? myPow(x * x, n / 2) : x * myPow(x * x, n / 2); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/algorithm/_055_Jump_Game/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._055_Jump_Game; 2 | 3 | public class Solution { 4 | 5 | /*给定一个数组,初始定位在第一个索引,数组中的每个元素值代表你能跳到的最大长度, 6 | 判断是否能跳到最后一个位置*/ 7 | 8 | public boolean canJump(int[] nums) { 9 | //能跳到的最大位置 10 | int max = 0; 11 | for (int i = 0; i < nums.length; i++) { 12 | //如果最大位置比i小,表示跳不到 13 | if (i > max) { 14 | return false; 15 | } 16 | //每一次都更新能跳到的最大位置 17 | max = Math.max(max, nums[i] + i); 18 | } 19 | return true; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/algorithm/_062_Unique_Paths/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._062_Unique_Paths; 2 | 3 | public class Solution { 4 | 5 | //统计从矩阵左上角到右下角的路径总数,每次只能向右或者向下移动。 6 | 7 | public int uniquePaths(int m, int n) { 8 | int[][] dp = new int[m][n]; 9 | for (int i = 0; i < m; i++) { 10 | dp[i][0] = 1; 11 | } 12 | for (int j = 0; j < n; j++) { 13 | dp[0][j] = 1; 14 | } 15 | for (int i = 1; i < m; i++) { 16 | for (int j = 1; j < n; j++) { 17 | dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; 18 | } 19 | } 20 | return dp[m - 1][n - 1]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/algorithm/_064_Minimum_Path_Sum/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._064_Minimum_Path_Sum; 2 | 3 | public class Solution { 4 | 5 | //求从矩阵的左上角到右下角的最小路径和,每次只能向右和向下移动。 6 | public int minPathSum(int[][] grid) { 7 | int m = grid.length, n = grid[0].length; 8 | for (int i = 0; i < m; i++) { 9 | for (int j = 0; j < n; j++) { 10 | if (i == 0 && j != 0) { 11 | grid[i][j] += grid[i][j - 1]; 12 | } 13 | if (i != 0 && j == 0) { 14 | grid[i][j] += grid[i - 1][j]; 15 | } 16 | if (i != 0 && j != 0) { 17 | grid[i][j] += Math.min(grid[i - 1][j], grid[i][j - 1]); 18 | } 19 | } 20 | } 21 | return grid[m - 1][n - 1]; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/algorithm/_067_Add_Binary/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._067_Add_Binary; 2 | 3 | public class Solution { 4 | 5 | //题目描述:给定两个二进制字符串,相加后返回字符串 6 | 7 | public String addBinary(String a, String b) { 8 | StringBuilder sb = new StringBuilder(); 9 | int i = a.length() - 1, j = b.length() - 1, carry = 0, sum; 10 | //如果字符串长度大于0就进入循环 11 | while (i >= 0 || j >= 0) { 12 | sum = carry; 13 | if (i >= 0) sum += a.charAt(i--) - '0'; 14 | if (j >= 0) sum += b.charAt(j--) - '0'; 15 | //添加二进制取值 16 | sb.append(sum % 2); 17 | //有无进位 18 | carry = sum / 2; 19 | } 20 | //有进位才添加 21 | if (carry != 0) sb.append(carry); 22 | //我认为最关键是要能想到最后字符串反转 23 | return sb.reverse().toString(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/algorithm/_069_Sqrt_x/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._069_Sqrt_x; 2 | 3 | public class Solution { 4 | 5 | /*实现 int sqrt(int x) 函数。 6 | 计算并返回 x 的平方根,其中 x 是非负整数。 7 | 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。*/ 8 | 9 | 10 | //平方根一定处于1-x之间 11 | public int mySqrt(int x) { 12 | if (x <= 1) { 13 | return x; 14 | } 15 | int l = 1, h = x; 16 | //二分查找 17 | while (l <= h) { 18 | int mid = l + (h - l) / 2; 19 | int sqrt = x / mid; 20 | if (sqrt > mid) { 21 | l = mid + 1; 22 | } else if (sqrt < mid) { 23 | h = mid - 1; 24 | } else { 25 | return mid; 26 | } 27 | } 28 | //h比l要小,比如8是返回2,返回较小的。 29 | return h; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/algorithm/_070_Climbing_Stairs/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._070_Climbing_Stairs; 2 | 3 | public class Solution { 4 | 5 | 6 | /*假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 7 | 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 8 | 注意:给定 n 是一个正整数。*/ 9 | 10 | 11 | //斐波拉契的思路 12 | //想象成一个数组,第n个位置的方法等于第n-1个位置的方法加上第n-2个位置的方法 13 | //第n-1个位置加1步就到达第n个位置,第n-2个位置加两步就到达第n个位置,解法加起来不会重复 14 | public int climbStairsOther(int n) { 15 | // base cases 16 | if(n <= 0) return 0; 17 | if(n == 1) return 1; 18 | if(n == 2) return 2; 19 | //一步之前 20 | int one_step_before = 2; 21 | //两步之前 22 | int two_steps_before = 1; 23 | int all_ways = 0; 24 | 25 | for(int i=2; i= 0 && j >= 0) { 16 | if (nums1[i] > nums2[j]) { 17 | nums1[k--] = nums1[i--]; 18 | } else { 19 | nums1[k--] = nums2[j--]; 20 | } 21 | } 22 | while (j >= 0) { 23 | nums1[k--] = nums2[j--]; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/algorithm/_090_Subsets_II/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._090_Subsets_II; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.List; 6 | 7 | public class Solution { 8 | 9 | /*给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 10 | 说明:解集不能包含重复的子集。*/ 11 | 12 | public List> subsetsWithDup(int[] nums) { 13 | List> result = new ArrayList<>(); 14 | Arrays.sort(nums); 15 | backtrack(result, new ArrayList(), nums, 0); 16 | return result; 17 | } 18 | 19 | private void backtrack(List> result, List list, int[] nums, int start) { 20 | if (!result.contains(list)) { 21 | result.add(new ArrayList<>(list)); 22 | } 23 | for (int i = start; i < nums.length; i++) { 24 | list.add(nums[i]); 25 | backtrack(result, list, nums, i + 1); 26 | list.remove(list.size() - 1); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_096_Unique_Binary_Search_Trees/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._096_Unique_Binary_Search_Trees; 2 | 3 | public class Solution { 4 | /*给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?*/ 5 | 6 | /* 7 | G(n) = F(1, n) + F(2, n) + ... + F(n, n). 8 | G(0)=1, G(1)=1. 9 | F(i, n) = G(i-1) * G(n-i) 1 <= i <= n 10 | G(n) = G(0) * G(n-1) + G(1) * G(n-2) + … + G(n-1) * G(0) 11 | 函数F(i,n)表示n个结点以i为根节点的二叉搜索树,函数G(n)表示n个结点组成二叉搜索树的种数 12 | */ 13 | public int numTrees(int n) { 14 | int[] G = new int[n + 1]; 15 | G[0] = 1; 16 | G[1] = 1; 17 | for (int i = 2; i < n + 1; i++) { 18 | //该循环表示G(i) = F(1, i) + F(2, i) + ... + F(i, i) 19 | for (int j = 1; j <= i; j++) { 20 | G[i] += G[j - 1] * G[i - j]; 21 | } 22 | } 23 | return G[n]; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/algorithm/_101_Symmetric_Tree/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._101_Symmetric_Tree; 2 | 3 | public class Solution { 4 | 5 | public class TreeNode { 6 | int val; 7 | TreeNode left; 8 | TreeNode right; 9 | TreeNode(int x) { val = x; } 10 | } 11 | 12 | 13 | /*给定一个二叉树,检查它是否是镜像对称的。*/ 14 | 15 | public boolean isSymmetric(TreeNode root) { 16 | if(root == null){ 17 | return true; 18 | } 19 | return isSymmetric(root.left,root.right); 20 | } 21 | 22 | 23 | private boolean isSymmetric(TreeNode t1,TreeNode t2){ 24 | if(t1 == null && t2 == null){ 25 | return true; 26 | } 27 | if(t1 == null || t2 == null){ 28 | return false; 29 | } 30 | if(t1.val != t2.val){ 31 | return false; 32 | } 33 | return isSymmetric(t1.right,t2.left)&&isSymmetric(t1.left,t2.right); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/algorithm/_104_Maximum_Depth_of_Binary_Tree/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._104_Maximum_Depth_of_Binary_Tree; 2 | 3 | public class Solution { 4 | 5 | /*给定一个二叉树,找出其最大深度。 6 | 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。*/ 7 | 8 | public class TreeNode { 9 | int val; 10 | TreeNode left; 11 | TreeNode right; 12 | 13 | TreeNode(int x) { 14 | val = x; 15 | } 16 | } 17 | 18 | 19 | public int maxDepth(TreeNode root) { 20 | if (root == null) { 21 | return 0; 22 | } 23 | return 1 + Math.max(maxDepth(root.left), maxDepth(root.right)); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/algorithm/_111_Minimum_Depth_of_Binary_Tree/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._111_Minimum_Depth_of_Binary_Tree; 2 | 3 | public class Solution { 4 | 5 | 6 | public class TreeNode { 7 | int val; 8 | TreeNode left; 9 | TreeNode right; 10 | 11 | TreeNode(int x) { 12 | val = x; 13 | } 14 | } 15 | 16 | /*给定一个二叉树,找到最小深度*/ 17 | 18 | public int minDepth(TreeNode root) { 19 | if (root == null) { 20 | return 0; 21 | } 22 | int left = minDepth(root.left); 23 | int right = minDepth(root.right); 24 | if (left == 0 || right == 0) { 25 | return left + right + 1; 26 | } 27 | return Math.min(left, right) + 1; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_112_Path_Sum/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._112_Path_Sum; 2 | 3 | public class Solution { 4 | 5 | /*给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有 6 | 节点值相加等于目标和。*/ 7 | 8 | public class TreeNode { 9 | int val; 10 | TreeNode left; 11 | TreeNode right; 12 | 13 | TreeNode(int x) { 14 | val = x; 15 | } 16 | } 17 | 18 | public boolean hasPathSum(TreeNode root, int sum) { 19 | if (root == null) { 20 | return false; 21 | } 22 | if (root.left == null && root.right == null && root.val == sum) { 23 | return true; 24 | } 25 | return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/algorithm/_121_Best_Time_to_Buy_and_Sell_Stock/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._121_Best_Time_to_Buy_and_Sell_Stock; 2 | 3 | public class Solution { 4 | 5 | /*给定一个数组,只能先买入后卖出,卖出价格要高于买入价格,求最大利润。只允许完成一笔交易*/ 6 | 7 | public int maxProfit(int[] prices) { 8 | int n = prices.length; 9 | if (n == 0) { 10 | return 0; 11 | } 12 | //最大利润 13 | int max = 0; 14 | //最小的价格 15 | int min = prices[0]; 16 | for (int i = 1; i < n; i++) { 17 | //比最小价格小就更新最小价格 18 | if (prices[i] < min) { 19 | min = prices[i]; 20 | } else { 21 | //比最小价格大就计算利润 22 | max = Math.max(max, prices[i] - min); 23 | } 24 | } 25 | return max; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/algorithm/_122_Best_Time_to_Buy_and_Sell_Stock_II/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._122_Best_Time_to_Buy_and_Sell_Stock_II; 2 | 3 | public class Solution { 4 | 5 | /*给定一个数组,要求先买入后卖出,可进行多次购买,求最大利润*/ 6 | 7 | public int maxProfit(int[] prices) { 8 | int total = 0; 9 | //后一个比前一个大的话直接累加 10 | for (int i = 1; i < prices.length; i++) { 11 | if (prices[i] > prices[i - 1]) { 12 | total += prices[i] - prices[i - 1]; 13 | } 14 | } 15 | return total; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/algorithm/_123_Best_Time_to_Buy_and_Sell_Stock_III/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._123_Best_Time_to_Buy_and_Sell_Stock_III; 2 | 3 | public class Solution { 4 | 5 | /*给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 6 | 设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。 7 | 注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。*/ 8 | 9 | 10 | /*采用状态机的思路,由于只能完成两笔交易,定义四个状态,分别是buy1,sell1,buy2,sell2*/ 11 | public int maxProfit(int[] prices) { 12 | int buy1 = Integer.MIN_VALUE, buy2 = Integer.MIN_VALUE; 13 | int sell1 = 0, sell2 = 0; 14 | for (int i = 0; i < prices.length; i++) { 15 | //买入价格更低的股 16 | buy1 = Math.max(buy1, -prices[i]); 17 | //卖出当前股或者不操作 18 | sell1 = Math.max(sell1, buy1 + prices[i]); 19 | //第二次买入,或者不操作 20 | buy2 = Math.max(buy2, sell1 - prices[i]); 21 | //第二次卖出,或者不操作 22 | sell2 = Math.max(sell2, buy2 + prices[i]); 23 | } 24 | return sell2; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/algorithm/_136_Single_Number/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._136_Single_Number; 2 | 3 | public class Solution { 4 | 5 | 6 | /*给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。 7 | 找出那个只出现了一次的元素。*/ 8 | 9 | //0 ^ N = N N ^ N = 0 10 | 11 | /*N1 ^ N1 ^ N2 ^ N2 ^..............^ Nx ^ Nx ^ N 12 | = (N1^N1) ^ (N2^N2) ^..............^ (Nx^Nx) ^ N 13 | = 0 ^ 0 ^ ..........^ 0 ^ N 14 | = N*/ 15 | 16 | public int singleNumber(int[] nums) { 17 | int result = 0; 18 | for (int i = 0; i < nums.length; i++) { 19 | result ^= nums[i]; 20 | } 21 | return result; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/algorithm/_139_Word_Break/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._139_Word_Break; 2 | 3 | import java.util.List; 4 | 5 | public class Solution { 6 | 7 | /*给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict, 8 | 判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。*/ 9 | 10 | //字典的单词没有使用次数限制这是一个完全背包的问题,该问题涉及到字典中单词的使用顺序,因此可理解为涉及顺序的完全背包问题。 11 | //和求解完全背包问题不同的地方在于求解顺序的完全背包问题时,对物品的迭代应该放在最里层。 12 | public boolean wordBreak(String s, List wordDict) { 13 | int length = s.length(); 14 | boolean[] dp = new boolean[length + 1]; 15 | dp[0] = true; 16 | for (int i = 1; i <= length; i++) { 17 | //物品迭代放里层 18 | for (String word : wordDict) { 19 | int len = word.length(); 20 | //判断是否单词是否匹配字符串 21 | if ((i >= len) && word.equals(s.substring(i - len, i))) { 22 | dp[i] = dp[i] || dp[i - len]; 23 | } 24 | } 25 | } 26 | return dp[length]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/algorithm/_141_Linked_List_Cycle/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._141_Linked_List_Cycle; 2 | 3 | public class Solution { 4 | 5 | class ListNode { 6 | int val; 7 | ListNode next; 8 | 9 | ListNode(int x) { 10 | val = x; 11 | next = null; 12 | } 13 | } 14 | 15 | /*判断链表有无环*/ 16 | //定义两个指针,一个指针指向头指针,一次走一步,一个指针指向头指针下一个,一次走两步。如果指针能相等说明有环。如果为空则无环 17 | public boolean hasCycle(ListNode head) { 18 | if (head == null) return false; 19 | ListNode slow = head, fast = head; 20 | while (fast != null && fast.next != null) { 21 | fast = fast.next.next; 22 | slow = slow.next; 23 | if (fast == slow) { 24 | return true; 25 | } 26 | } 27 | return false; 28 | } 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/algorithm/_144_Binary_Tree_Preorder_Traversal/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._144_Binary_Tree_Preorder_Traversal; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import java.util.Stack; 6 | 7 | 8 | public class Solution { 9 | 10 | class TreeNode { 11 | int val; 12 | TreeNode left; 13 | TreeNode right; 14 | 15 | TreeNode(int x) { 16 | val = x; 17 | } 18 | } 19 | 20 | 21 | /*非递归实现二叉树的前序遍历*/ 22 | public List preorderTraversal(TreeNode root) { 23 | List res = new ArrayList(); 24 | Stack stack = new Stack(); 25 | stack.push(root); 26 | while (!stack.empty()) { 27 | TreeNode node = stack.pop(); 28 | if (node == null) continue; 29 | res.add(node.val); 30 | stack.push(node.right); 31 | stack.push(node.left); 32 | } 33 | return res; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/algorithm/_145_Binary_Tree_Postorder_Traversal/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._145_Binary_Tree_Postorder_Traversal; 2 | 3 | 4 | import java.util.ArrayList; 5 | import java.util.Collections; 6 | import java.util.List; 7 | import java.util.Stack; 8 | 9 | public class Solution { 10 | 11 | class TreeNode { 12 | int val; 13 | TreeNode left; 14 | TreeNode right; 15 | 16 | TreeNode(int x) { 17 | val = x; 18 | } 19 | } 20 | 21 | 22 | /*非递归实现二叉树的后序遍历*/ 23 | public List postorderTraversal(TreeNode root) { 24 | List res = new ArrayList(); 25 | Stack stack = new Stack(); 26 | stack.push(root); 27 | while (!stack.empty()) { 28 | TreeNode node = stack.pop(); 29 | if (node == null) continue; 30 | res.add(node.val); 31 | stack.push(node.left); 32 | stack.push(node.right); 33 | } 34 | Collections.reverse(res); 35 | return res; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/algorithm/_152_Maximum_Product_Subarray/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._152_Maximum_Product_Subarray; 2 | 3 | public class Solution { 4 | 5 | 6 | /*给定一个整型数组,找出数组内连续子数组乘积的最大值*/ 7 | 8 | public int maxProduct(int[] nums) { 9 | if (nums == null || nums.length == 0) { 10 | return 0; 11 | } 12 | int max = nums[0], min = nums[0], result = nums[0]; 13 | //每一次都找出最大值和最小值,然后最大值和最小值分别乘以下一个数。因为负数乘负数为正数,所以要保存最小值 14 | for (int i = 1; i < nums.length; i++) { 15 | int temp = max; 16 | max = Math.max(Math.max(max * nums[i], min * nums[i]), nums[i]); 17 | min = Math.min(Math.min(temp * nums[i], min * nums[i]), nums[i]); 18 | if (max > result) { 19 | result = max; 20 | } 21 | } 22 | return result; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/algorithm/_154_Find_Minimum_in_Rotated_Sorted_Array_II/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._154_Find_Minimum_in_Rotated_Sorted_Array_II; 2 | 3 | public class Solution { 4 | 5 | /*假设按照升序排序的数组在预先未知的某个点上进行了旋转。 6 | ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 7 | 请找出其中最小的元素。 8 | 注意数组中可能存在重复的元素。*/ 9 | 10 | 11 | public int findMin(int[] nums) { 12 | int start = 0, end = nums.length - 1; 13 | while (start < end) { 14 | int mid = (start + end) / 2; 15 | if (nums[mid] > nums[end]) { 16 | start = mid + 1; 17 | } else if (nums[mid] < nums[end]) { 18 | end = mid; 19 | } else { 20 | //nums[mid]==nums[end],存在重复的元素,只需让end指针左移缩小范围 21 | end--; 22 | } 23 | } 24 | return nums[start]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/algorithm/_160_Intersection_of_Two_Linked_Lists/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._160_Intersection_of_Two_Linked_Lists; 2 | 3 | public class Solution { 4 | 5 | public class ListNode { 6 | int val; 7 | ListNode next; 8 | ListNode(int x) { 9 | val = x; 10 | next = null; 11 | } 12 | } 13 | 14 | 15 | /*找到两个链表相交的结点,如果没有的话返回null*/ 16 | public ListNode getIntersectionNode(ListNode headA, ListNode headB) { 17 | ListNode nodeA = headA, nodeB = headB; 18 | //第二次迭代就能找出结点 19 | while (nodeA != nodeB) { 20 | nodeA = nodeA == null ? headB : nodeA.next; 21 | nodeB = nodeB == null ? headA : nodeB.next; 22 | } 23 | return nodeA; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/algorithm/_169_Majority_Element/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._169_Majority_Element; 2 | 3 | public class Solution { 4 | 5 | 6 | /*给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。*/ 7 | 8 | public int majorityElement(int[] num) { 9 | int major = num[0], count = 1; 10 | for (int i = 1; i < num.length; i++) { 11 | //如果count=0,重新在剩余的数字中找出众数 12 | if (count == 0) { 13 | count++; 14 | major = num[i]; 15 | } else if (major == num[i]) { 16 | count++; 17 | } else count--; 18 | 19 | } 20 | return major; 21 | } 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/algorithm/_190_Reverse_Bits/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._190_Reverse_Bits; 2 | 3 | public class Solution { 4 | 5 | /*颠倒给定的 32 位无符号整数的二进制位。*/ 6 | 7 | public int reverseBits(int n) { 8 | int result = 0; 9 | for (int i = 0; i < 32; i++) { 10 | result = result << 1; 11 | //n最右边位置的二进制位 12 | result |= (n & 1); 13 | //n右移一位 14 | n = n >> 1; 15 | } 16 | return result; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/algorithm/_198_House_Robber/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._198_House_Robber; 2 | 3 | public class Solution { 4 | 5 | /*题目描述:抢劫一排住户,但是不能抢邻近的住户,求最大抢劫量。 6 | 定义 dp 数组用来存储最大的抢劫量,其中 dp[i] 表示抢到第 i 个住户时的最大抢劫量。 7 | 由于不能抢劫邻近住户,如果抢劫了第 i -1 个住户,那么就不能再抢劫第 i 个住户*/ 8 | 9 | 10 | //pre2表示当前房子数减2的最大值,pre1表示当前房子数减1的最大值,cur表示现在房子数的最大值 11 | public int rob(int[] nums) { 12 | int pre2 = 0, pre1 = 0; 13 | for (int i = 0; i < nums.length; i++) { 14 | int cur = Math.max(nums[i] + pre2, pre1); 15 | pre2 = pre1; 16 | pre1 = cur; 17 | } 18 | return pre1; 19 | } 20 | 21 | 22 | //采用数组来进行dp 23 | public int rob1(int[] nums) { 24 | if (nums.length == 0) return 0; 25 | int[] memo = new int[nums.length + 1]; 26 | memo[0] = 0; 27 | memo[1] = nums[0]; 28 | for (int i = 1; i < nums.length; i++) { 29 | int val = nums[i]; 30 | memo[i + 1] = Math.max(memo[i], memo[i - 1] + val); 31 | } 32 | return memo[nums.length]; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/algorithm/_199_Binary_Tree_Right_Side_View/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._199_Binary_Tree_Right_Side_View; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class Solution { 7 | 8 | public class TreeNode { 9 | int val; 10 | TreeNode left; 11 | TreeNode right; 12 | TreeNode(int x) { val = x; } 13 | } 14 | 15 | /*二叉树的右视图,返回从顶层到底层你看到的结点*/ 16 | 17 | 18 | public List rightSideView(TreeNode root) { 19 | List result = new ArrayList<>(); 20 | rightView(result, root, 0); 21 | return result; 22 | } 23 | 24 | public void rightView(List result, TreeNode node, int depth) { 25 | //如果为空,直接返回 26 | if (node == null) return; 27 | //只有满足大小和层数的等价关系才添加,一层只会添加一个结点 28 | if (result.size() == depth) { 29 | result.add(node.val); 30 | } 31 | //先递归右边,右边没有的才递归左边。左视图的话就相反 32 | rightView(result, node.right, depth + 1); 33 | rightView(result, node.left, depth + 1); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/algorithm/_202_Happy_Number/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._202_Happy_Number; 2 | 3 | public class Solution { 4 | 5 | /*判断一个数字是否是快乐数*/ 6 | 7 | /*一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和, 8 | 然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那 9 | 么这个数就是快乐数。*/ 10 | 11 | public boolean isHappy(int n) { 12 | //定义快指针和满指针 13 | int slow = n, fast = n; 14 | do { 15 | slow = digitSquareSum(slow); 16 | fast = digitSquareSum(fast); 17 | fast = digitSquareSum(fast); 18 | //如果能变为1表示是快乐数 19 | if (fast == 1) { 20 | return true; 21 | } 22 | } while (slow != fast); 23 | return false; 24 | } 25 | 26 | //计算平方和 27 | private int digitSquareSum(int n) { 28 | int sum = 0; 29 | while (n != 0) { 30 | int tmp = n % 10; 31 | sum += tmp * tmp; 32 | n /= 10; 33 | } 34 | return sum; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/algorithm/_205_Isomorphic_Strings/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._205_Isomorphic_Strings; 2 | 3 | public class Solution { 4 | 5 | /*给定两个字符串 s 和 t,判断它们是否是同构的。 6 | 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。 7 | 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。 8 | 两个字符不能映射到同一个字符上,但字符可以映射自己本身。*/ 9 | 10 | 11 | //记录每个字符之前出现的索引位置,从而进行判断 12 | public boolean isIsomorphic(String s, String t) { 13 | int[] preIndexOfS = new int[256]; 14 | int[] preIndexOfT = new int[256]; 15 | for (int i = 0; i < s.length(); i++) { 16 | char sc = s.charAt(i), tc = t.charAt(i); 17 | //之前出现的位置不同,所以不是同构的 18 | if (preIndexOfS[sc] != preIndexOfT[tc]) { 19 | return false; 20 | } 21 | //记录出现的位置 22 | preIndexOfS[sc] = i + 1; 23 | preIndexOfT[tc] = i + 1; 24 | } 25 | return true; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/algorithm/_206_Reverse_Linked_List/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._206_Reverse_Linked_List; 2 | 3 | public class Solution { 4 | 5 | public class ListNode { 6 | int val; 7 | ListNode next; 8 | 9 | ListNode(int x) { 10 | val = x; 11 | } 12 | } 13 | 14 | 15 | /*反转一个单链表。*/ 16 | public ListNode reverseList(ListNode head) { 17 | ListNode pre = null, next = null; 18 | while (head != null) { 19 | next = head.next; 20 | head.next = pre; 21 | pre = head; 22 | head = next; 23 | } 24 | return pre; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/algorithm/_213_House_Robber2/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._213_House_Robber2; 2 | 3 | public class Solution { 4 | 5 | //由于房子是环形的,所以分两种情况考虑,一种是要偷第一间,一种是不偷第一间,然后取这两种情况的最大值, 6 | //这样的话这两种情况都能转化成在一条街上偷这些房子的最大值 7 | public int rob(int[] nums) { 8 | int length = nums.length; 9 | if (nums == null || length == 0) 10 | return 0; 11 | if (length == 1) 12 | return nums[0]; 13 | //抢劫第一间(也可能不抢)+不抢劫第一间 14 | return Math.max(rob(nums, 0, length - 2), rob(nums, 1, length - 1)); 15 | } 16 | 17 | public int rob(int[] nums, int index, int end) { 18 | int pre1 = 0, pre2 = 0; 19 | for (int i = index; i <= end; i++) { 20 | int cur = Math.max(nums[i] + pre2, pre1); 21 | pre2 = pre1; 22 | pre1 = cur; 23 | } 24 | return pre1; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/algorithm/_221_Maximal_Square/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._221_Maximal_Square; 2 | 3 | public class Solution { 4 | 5 | /*给定一个二维数组,找到最大的数字为1的正方形,返回面积*/ 6 | 7 | public int maximalSquare(char[][] matrix) { 8 | if (matrix.length == 0) { 9 | return 0; 10 | } 11 | int rows = matrix.length; 12 | int cols = matrix[0].length; 13 | int result = 0; 14 | //定义一个dp数组,数组的值dp[i][j]表示以原来二维数组的i-1,j-1这一格为右下角的正方形边长 15 | int[][] dp = new int[rows + 1][cols + 1]; 16 | for (int i = 1; i <= rows; i++) { 17 | for (int j = 1; j <= cols; j++) { 18 | //原来的数组有1的情况下才去更新值,否则就是0 19 | if (matrix[i - 1][j - 1] == '1') { 20 | dp[i][j] = Math.min(dp[i - 1][j], Math.min(dp[i - 1][j - 1], dp[i][j - 1])) + 1; 21 | //更新最大正方形边长 22 | result = Math.max(result, dp[i][j]); 23 | } 24 | } 25 | } 26 | //面积 27 | return result * result; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_222_Count_Complete_Tree_Nodes/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._222_Count_Complete_Tree_Nodes; 2 | 3 | public class Solution { 4 | //todo 5 | } 6 | -------------------------------------------------------------------------------- /src/algorithm/_226_Invert_Binary_Tree/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._226_Invert_Binary_Tree; 2 | 3 | public class Solution { 4 | 5 | public class TreeNode { 6 | int val; 7 | TreeNode left; 8 | TreeNode right; 9 | 10 | TreeNode(int x) { 11 | val = x; 12 | } 13 | } 14 | 15 | 16 | /*反转二叉树*/ 17 | public TreeNode invertTree(TreeNode root) { 18 | if (root != null) { 19 | TreeNode temp = root.left; 20 | root.left = root.right; 21 | root.right = temp; 22 | invertTree(root.left); 23 | invertTree(root.right); 24 | } 25 | return root; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/algorithm/_230_Kth_Smallest_Element_in_a_BST/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._230_Kth_Smallest_Element_in_a_BST; 2 | 3 | 4 | public class Solution { 5 | 6 | public class TreeNode { 7 | int val; 8 | TreeNode left; 9 | TreeNode right; 10 | 11 | TreeNode(int x) { 12 | val = x; 13 | } 14 | } 15 | 16 | 17 | /*给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。*/ 18 | 19 | private int count = 0; 20 | private int number = 0; 21 | 22 | public int kthSmallest(TreeNode root, int k) { 23 | count = k; 24 | helper(root); 25 | return number; 26 | } 27 | 28 | private void helper(TreeNode root){ 29 | if(root.left != null){ 30 | helper(root.left); 31 | } 32 | count--; 33 | if(count == 0){ 34 | number = root.val; 35 | } 36 | if(root.right != null){ 37 | helper(root.right); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/algorithm/_235_Lowest_Common_Ancestor_of_a_Binary_Search_Tree/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._235_Lowest_Common_Ancestor_of_a_Binary_Search_Tree; 2 | 3 | public class Solution { 4 | 5 | class TreeNode { 6 | int val; 7 | TreeNode left; 8 | TreeNode right; 9 | 10 | public TreeNode(int val) { 11 | this.val = val; 12 | } 13 | } 14 | 15 | /*二叉查找树的两个结点的最近公共祖先*/ 16 | 17 | public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 18 | //如果两个结点都在左边的情况下 19 | if (root.val > p.val && root.val > q.val) { 20 | return lowestCommonAncestor(root.left, p, q); 21 | } 22 | //如果两个结点都在右边的情况下 23 | if (root.val < p.val && root.val < q.val) { 24 | return lowestCommonAncestor(root.right, p, q); 25 | } 26 | //两个结点一左一右或者其中一个是祖先结点的情况下直接返回祖先结点 27 | return root; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_236_Lowest_Common_Ancestor_of_a_Binary_Tree/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._236_Lowest_Common_Ancestor_of_a_Binary_Tree; 2 | 3 | public class Solution { 4 | 5 | class TreeNode { 6 | int val; 7 | TreeNode left; 8 | TreeNode right; 9 | 10 | TreeNode(int x) { 11 | val = x; 12 | } 13 | } 14 | 15 | /*普通二叉树的最近公共祖先*/ 16 | //后序遍历二叉树,左子树和右子树分别搜索 17 | public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 18 | //终止条件 19 | if (root == null || root == p || root == q) { 20 | return root; 21 | } 22 | //左子树查找 23 | TreeNode left = lowestCommonAncestor(root.left, p, q); 24 | //右子树查找 25 | TreeNode right = lowestCommonAncestor(root.right, p, q); 26 | //如果左子树和右子树都找到了,就返回根节点 27 | if (left != null && right != null) { 28 | return root; 29 | } 30 | //如果左右子树只有一个找到,那就返回找到的。如果都没有找到,那就返回空 31 | return left != null ? left : right; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/algorithm/_238_Product_of_Array_Except_Self/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._238_Product_of_Array_Except_Self; 2 | 3 | public class Solution { 4 | 5 | /*给定一个整数数组,输出除去该位置元素的其他元素的乘积的数组,时间复杂度要求O(n)*/ 6 | /* 7 | Numbers: 2 3 4 5 8 | Lefts: 1 2 2*3 2*3*4 9 | Rights: 3*4*5 4*5 5 1 10 | */ 11 | 12 | public int[] productExceptSelf(int[] nums) { 13 | int n = nums.length; 14 | int[] result = new int[n]; 15 | //确定左边方向的成绩 16 | int left = 1; 17 | for (int i = 0; i < n; i++) { 18 | if (i > 0) { 19 | left = left * nums[i - 1]; 20 | } 21 | result[i] = left; 22 | } 23 | //确定右边方向的成绩 24 | int right = 1; 25 | for (int i = n - 1; i >= 0; i--) { 26 | if (i < n - 1) { 27 | right = right * nums[i + 1]; 28 | } 29 | //左边方向乘以右边方向 30 | result[i] *= right; 31 | } 32 | return result; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/algorithm/_239_Sliding_Window_Maximum/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._239_Sliding_Window_Maximum; 2 | 3 | import java.util.PriorityQueue; 4 | 5 | public class Solution { 6 | 7 | 8 | /*给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。 9 | 你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。*/ 10 | 11 | public int[] maxSlidingWindow(int[] nums, int k) { 12 | if (nums.length < k || k < 1) { 13 | return new int[0]; 14 | } 15 | int[] result = new int[nums.length - k + 1]; 16 | //大顶堆 17 | PriorityQueue heap = new PriorityQueue<>((o1, o2) -> o2 - o1); 18 | for (int i = 0; i < k; i++) { 19 | heap.add(nums[i]); 20 | } 21 | result[0] = heap.peek(); 22 | //滑动窗口,记录大顶堆的堆顶值 23 | for (int i = 0, j = k; j < nums.length; i++, j++) { 24 | heap.remove(nums[i]); 25 | heap.add(nums[j]); 26 | result[i + 1] = heap.peek(); 27 | } 28 | return result; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/algorithm/_240_Search_a_2D_Matrix_II/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._240_Search_a_2D_Matrix_II; 2 | 3 | public class Solution { 4 | 5 | 6 | /*编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 7 | 每行的元素从左到右升序排列。 8 | 每列的元素从上到下升序排列。*/ 9 | 10 | 11 | //从左下角位置开始查找 12 | public boolean searchMatrix(int[][] matrix, int target) { 13 | if (matrix == null || matrix.length == 0) { 14 | return false; 15 | } 16 | int row = matrix.length - 1; 17 | int col = 0; 18 | while (col < matrix[0].length && row >= 0) { 19 | if (matrix[row][col] < target) { 20 | col++; 21 | } else if (matrix[row][col] > target) { 22 | row--; 23 | } else { 24 | return true; 25 | } 26 | } 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_242_Valid_Anagram/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._242_Valid_Anagram; 2 | 3 | public class Solution { 4 | 5 | /*给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。*/ 6 | 7 | //只需要判断s中出现的字符,t是否全部包含即可 8 | public boolean isAnagram(String s, String t) { 9 | int[] nums = new int[26]; 10 | for (int i = 0; i < s.length(); i++) nums[s.charAt(i) - 'a']++; 11 | for (int i = 0; i < t.length(); i++) nums[t.charAt(i) - 'a']--; 12 | for (int num : nums) if (num != 0) return false; 13 | return true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/algorithm/_260_Single_Number_III/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._260_Single_Number_III; 2 | 3 | public class Solution { 4 | 5 | /*给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 6 | 找出只出现一次的那两个元素。*/ 7 | 8 | public int[] singleNumber(int[] nums) { 9 | int diff = 0; 10 | //所有异或,最后得出的是两个不重复的元素异或的结果 11 | for (int num : nums) { 12 | diff ^= num; 13 | } 14 | //找到最右边为1的数字,利用这个数字区分两个元素 15 | diff &= -diff; 16 | int[] result = new int[2]; 17 | for (int num : nums) { 18 | if ((num & diff) == diff) { 19 | result[0] ^= num; 20 | } else { 21 | result[1] ^= num; 22 | } 23 | } 24 | return result; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/algorithm/_263_Ugly_Number/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._263_Ugly_Number; 2 | 3 | public class Solution { 4 | 5 | /*编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。*/ 6 | 7 | public boolean isUgly(int num) { 8 | for (int i = 2; i < 6 && num > 0; i++) { 9 | while (num % i == 0) { 10 | num /= i; 11 | } 12 | } 13 | return num == 1; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/algorithm/_264_Ugly_Number_II/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._264_Ugly_Number_II; 2 | 3 | public class Solution { 4 | 5 | /*编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。*/ 6 | 7 | public int nthUglyNumber(int n) { 8 | if (n < 6) { 9 | return n; 10 | } 11 | int[] nums = new int[n]; 12 | nums[0] = 1; 13 | int i2 = 0, i3 = 0, i5 = 0; 14 | for (int i = 1; i < n; i++) { 15 | int next2 = nums[i2] * 2, next3 = nums[i3] * 3, next5 = nums[i5] * 5; 16 | //最小值就是下一个丑数 17 | nums[i] = Math.min(next2, Math.min(next3, next5)); 18 | if (nums[i] == next2) i2++; 19 | if (nums[i] == next3) i3++; 20 | if (nums[i] == next5) i5++; 21 | } 22 | return nums[n - 1]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/algorithm/_268_Missing_Number/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._268_Missing_Number; 2 | 3 | public class Solution { 4 | 5 | /*给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。*/ 6 | 7 | public int missingNumber(int[] nums) { 8 | if (nums == null || nums.length == 0) { 9 | return 0; 10 | } 11 | int x = 0, i = 0; 12 | for (; i < nums.length; i++) { 13 | x = x ^ i ^ nums[i]; 14 | } 15 | return x ^ i; 16 | } 17 | 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/algorithm/_279_Perfect_Squares/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._279_Perfect_Squares; 2 | 3 | import java.util.Arrays; 4 | 5 | public class Solution { 6 | 7 | /*给定一个正整数,找到最少能构成该正整数的完全平方数的个数*/ 8 | 9 | public int numSquares(int n) { 10 | int[] dp = new int[n + 1]; 11 | Arrays.fill(dp, Integer.MAX_VALUE); 12 | //初始状态 13 | dp[0] = 0; 14 | //每一次循环确定i这个正整数的最少完全平方数个数 15 | for (int i = 1; i <= n; i++) { 16 | //尝试不同的完全平方数,找出最小值 17 | for (int j = 1; i - j * j >= 0; j++) { 18 | dp[i] = Math.min(dp[i - j * j] + 1, dp[i]); 19 | } 20 | } 21 | return dp[n]; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/algorithm/_283_Move_Zeroes/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._283_Move_Zeroes; 2 | 3 | public class Solution { 4 | 5 | /*给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。*/ 6 | 7 | public void moveZeroes(int[] nums) { 8 | if(nums == null || nums.length == 0){ 9 | return ; 10 | } 11 | int index = 0; 12 | for(int num : nums){ 13 | if(num != 0){ 14 | nums[index++] = num; 15 | } 16 | } 17 | while(index < nums.length){ 18 | nums[index++] = 0; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/algorithm/_300_Longest_Increasing_Subsequence/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._300_Longest_Increasing_Subsequence; 2 | 3 | public class Solution { 4 | 5 | /*求数组的最长递增子序列,子序列可以不连续的*/ 6 | 7 | //使用动态规划求解,dp[n]表示以n结尾的最长递增子序列,时间复杂度O(n2) 8 | public int lengthOfLIS(int[] nums) { 9 | int length = nums.length; 10 | int[] dp = new int[length]; 11 | for (int i = 0; i < length; i++) { 12 | //初始长度 13 | int max = 1; 14 | //循环后可以确定以nums[i]结尾的最长递增子序列 15 | for (int j = 0; j < i; j++) { 16 | //如果nums[j]> 1] + (i & 1); 15 | } 16 | return result; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/algorithm/_343_Integer_Break/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._343_Integer_Break; 2 | 3 | public class Solution { 4 | 5 | //分割整数为至少两个正数,算出分割后的数的最大乘积 6 | 7 | public int integerBreak(int n) { 8 | int[] dp = new int[n + 1]; 9 | dp[1] = 1; 10 | for (int i = 2; i <= n; i++) { 11 | for (int j = i - 1; j > 0; j--) { 12 | //从这三种情况中取最大值 13 | dp[i] = Math.max(dp[i], Math.max(dp[i - j] * j, j * (i - j))); 14 | } 15 | } 16 | return dp[n]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/algorithm/_344_Reverse_String/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._344_Reverse_String; 2 | 3 | public class Solution { 4 | 5 | /*编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。*/ 6 | 7 | public void reverseString(char[] s) { 8 | int start = 0, end = s.length - 1; 9 | while (start < end) { 10 | char temp = s[start]; 11 | s[start] = s[end]; 12 | s[end] = temp; 13 | start++; 14 | end--; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/algorithm/_376_Wiggle_Subsequence/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._376_Wiggle_Subsequence; 2 | 3 | public class Solution { 4 | 5 | /*如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差 6 | (如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。 7 | 例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。 8 | 相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值 9 | 都是正数,第二个序列是因为它的最后一个差值为零。 10 | 给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一些 11 | (也可以不删除)元素来获得子序列,剩下的元素保持其原始顺序。*/ 12 | 13 | 14 | public int wiggleMaxLength(int[] nums) { 15 | if (nums == null || nums.length == 0) { 16 | return 0; 17 | } 18 | //初始状态 19 | int up = 1, down = 1; 20 | for (int i = 1; i < nums.length; i++) { 21 | if (nums[i] > nums[i - 1]) { 22 | //状态转移 23 | up = down + 1; 24 | } else if (nums[i] < nums[i - 1]) { 25 | //状态转移 26 | down = up + 1; 27 | } 28 | } 29 | return Math.max(up, down); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/algorithm/_377_Combination_Sum_IV/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._377_Combination_Sum_IV; 2 | 3 | import java.util.Arrays; 4 | 5 | public class Solution { 6 | 7 | /*数组中的数字构成目标数的组合数,数字可重复*/ 8 | 9 | public int combinationSum4(int[] nums, int target) { 10 | if (nums == null || nums.length == 0) { 11 | return 0; 12 | } 13 | //数组中的每一个数表示该数字的组合数 14 | int[] dp = new int[target + 1]; 15 | //初始化状态 16 | dp[0] = 1; 17 | //对数组进行排序 18 | Arrays.sort(nums); 19 | //计算目标数字的组合数 20 | for (int i = 1; i <= target; i++) { 21 | //当目标数字分别减去数组中的数字的组合数相加 22 | for (int j = 0; j < nums.length && nums[j] <= i; j++) { 23 | //状态转移方程 24 | dp[i] += dp[i - nums[j]]; 25 | } 26 | } 27 | return dp[target]; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_387_First_Unique_Character_in_a_String/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._387_First_Unique_Character_in_a_String; 2 | 3 | public class Solution { 4 | 5 | /*给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。*/ 6 | 7 | public int firstUniqChar(String s) { 8 | int[] freq = new int[26]; 9 | //存放在数组中 10 | for (int i = 0; i < s.length(); i++) { 11 | char c = s.charAt(i); 12 | freq[c - 'a']++; 13 | } 14 | for (int i = 0; i < s.length(); i++) { 15 | char c = s.charAt(i); 16 | if (freq[c - 'a'] == 1) { 17 | return i; 18 | } 19 | } 20 | return -1; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/algorithm/_392_Is_Subsequence/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._392_Is_Subsequence; 2 | 3 | public class Solution { 4 | 5 | //判断s是否是t的子序列 6 | public boolean isSubsequence(String s, String t) { 7 | int index = -1; 8 | for (char c : s.toCharArray()) { 9 | //indexOf代表从index+1开始查找c元素,返回对应索引 10 | index = t.indexOf(c, index + 1); 11 | if (index == -1) { 12 | return false; 13 | } 14 | } 15 | return true; 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/algorithm/_404_Sum_of_Left_Leaves/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._404_Sum_of_Left_Leaves; 2 | 3 | public class Solution { 4 | 5 | /*计算给定二叉树的所有左叶子之和。*/ 6 | 7 | public class TreeNode { 8 | int val; 9 | TreeNode left; 10 | TreeNode right; 11 | 12 | TreeNode(int x) { 13 | val = x; 14 | } 15 | } 16 | 17 | public int sumOfLeftLeaves(TreeNode root) { 18 | if (root == null) { 19 | return 0; 20 | } 21 | //左结点是叶子节点 22 | if (isLeaf(root.left)) { 23 | return root.left.val + sumOfLeftLeaves(root.right); 24 | } 25 | 26 | return sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right); 27 | } 28 | 29 | //是否是叶子节点 30 | private boolean isLeaf(TreeNode node) { 31 | if (node == null) { 32 | return false; 33 | } 34 | return node.left == null && node.right == null; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/algorithm/_405_Convert_a_Number_to_Hexadecimal/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._405_Convert_a_Number_to_Hexadecimal; 2 | 3 | public class Solution { 4 | 5 | /*给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用补码运算方法。*/ 6 | 7 | public String toHex(int num) { 8 | if (num == 0) { 9 | return "0"; 10 | } 11 | char[] map = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; 12 | StringBuilder stb = new StringBuilder(); 13 | while (num != 0) { 14 | //0b1111表示1111是个二进制 15 | stb.append(map[num & 0b1111]); 16 | //因为考虑的是补码形式,因此符号位就不能有特殊的意义,所以无符号右移四位 17 | num >>>= 4; 18 | } 19 | return stb.reverse().toString(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/algorithm/_409_Longest_Palindrome/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._409_Longest_Palindrome; 2 | 3 | public class Solution { 4 | 5 | /*给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 6 | 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。*/ 7 | 8 | 9 | public int longestPalindrome(String s) { 10 | int[] cnts = new int[256]; 11 | //记录每个字符出现的次数 12 | for (char c : s.toCharArray()) { 13 | cnts[c]++; 14 | } 15 | int palindrome = 0; 16 | for (int cnt : cnts) { 17 | //能构成回文的字符数量 18 | palindrome += (cnt / 2) * 2; 19 | } 20 | //小于字符串总长度的话,还能增加单个字符放在回文串正中间 21 | if (palindrome < s.length()) { 22 | palindrome++; 23 | } 24 | return palindrome; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/algorithm/_413_Arithmetic_Slices/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._413_Arithmetic_Slices; 2 | 3 | public class Solution { 4 | 5 | /*如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。 6 | 函数要返回数组 A 中所有为等差数组的子数组个数。*/ 7 | 8 | 9 | //dp[i] 表示以 A[i] 为结尾的等差递增子区间的个数。 10 | public int numberOfArithmeticSlices(int[] A) { 11 | if (A == null || A.length == 0) { 12 | return 0; 13 | } 14 | int[] dp = new int[A.length]; 15 | for (int i = 2; i < A.length; i++) { 16 | if (A[i] - A[i - 1] == A[i - 1] - A[i - 2]) { 17 | dp[i] = dp[i - 1] + 1; 18 | } 19 | } 20 | //因为递增子区间不一定以最后一个元素为结尾,可以是任意一个元素结尾,因此需要返回 dp 数组累加的结果。 21 | int result = 0; 22 | for (int d : dp) { 23 | result += d; 24 | } 25 | return result; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/algorithm/_448_Find_All_Numbers_Disappeared_in_an_Array/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._448_Find_All_Numbers_Disappeared_in_an_Array; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class Solution { 7 | 8 | /*给定一个范围在  1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次, 9 | 另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。时间复杂度o(n)*/ 10 | 11 | 12 | public List findDisappearedNumbers(int[] nums) { 13 | List list = new ArrayList<>(); 14 | for(int i = 0;i < nums.length;i++){ 15 | int val = Math.abs(nums[i]) - 1; 16 | //标记该位置的数为负数 17 | if(nums[val] > 0){ 18 | nums[val] = -nums[val]; 19 | } 20 | } 21 | for(int i = 0;i < nums.length;i++){ 22 | //如果为正数,表示该位置没有被标记过,也就表面该数组没有出现过这个数字 23 | if(nums[i] > 0){ 24 | list.add(i+1); 25 | } 26 | } 27 | return list; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_455_Assign_Cookies/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._455_Assign_Cookies; 2 | 3 | import java.util.Arrays; 4 | 5 | public class Solution { 6 | 7 | /*题目描述:每个孩子都有一个满足度,每个饼干都有一个大小,只有饼干的大小大于等于一个孩子的满足度,该孩子才会获得满足。求解最多可以获得满足的孩子数量。 8 | 9 | 给一个孩子的饼干应当尽量小又能满足该孩子,这样大饼干就能拿来给满足度比较大的孩子。因为最小的孩子最容易得到满足,所以先满足最小的孩子。*/ 10 | public int findContentChildren(int[] g, int[] s) { 11 | Arrays.sort(g); 12 | Arrays.sort(s); 13 | int gi = 0, si = 0; 14 | while (gi < g.length && si < s.length) { 15 | if (g[gi] <= s[si]) { 16 | gi++; 17 | } 18 | si++; 19 | } 20 | return gi; 21 | } 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/algorithm/_461_Hamming_Distance/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._461_Hamming_Distance; 2 | 3 | public class Solution { 4 | 5 | /*两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 6 | 给出两个整数 x 和 y,计算它们之间的汉明距离。*/ 7 | 8 | //两数异或,二进制不同的位置的值为1,只需计算有多少个1即可 9 | public int hammingDistance(int x, int y) { 10 | int z = x ^ y; 11 | int count = 0; 12 | while (z != 0) { 13 | if ((z & 1) == 1) { 14 | count++; 15 | } 16 | z = z >> 1; 17 | } 18 | return count; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/algorithm/_462_Minimum_Moves_to_Equal_Array_Elements_II/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._462_Minimum_Moves_to_Equal_Array_Elements_II; 2 | 3 | import java.util.Arrays; 4 | 5 | public class Solution { 6 | 7 | /*给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素 8 | 加1或减1。您可以假设数组的长度最多为10000。*/ 9 | 10 | //a,b表示中间值两边的两个数,向中间移动的次数等于b-a 11 | public int minMoves2(int[] nums) { 12 | Arrays.sort(nums); 13 | int start = 0, end = nums.length - 1; 14 | int move = 0; 15 | while (start <= end) { 16 | move += nums[end] - nums[start]; 17 | start++; 18 | end--; 19 | } 20 | return move; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/algorithm/_485_Max_Consecutive_Ones/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._485_Max_Consecutive_Ones; 2 | 3 | public class Solution { 4 | 5 | /*给定一个二进制数组, 计算其中最大连续1的个数。*/ 6 | 7 | public int findMaxConsecutiveOnes(int[] nums) { 8 | int max = 0, cur = 0; 9 | for (int num : nums) { 10 | cur = num == 0 ? 0 : cur + 1; 11 | max = Math.max(max, cur); 12 | } 13 | return max; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/algorithm/_496_Next_Greater_Element_I/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._496_Next_Greater_Element_I; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | import java.util.Stack; 6 | 7 | public class Solution { 8 | 9 | /*给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。 10 | 找到 nums1 中每个元素在 nums2 中的下一个比其大的值。 11 | nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。 12 | 如果不存在,对应位置输出-1。*/ 13 | 14 | 15 | 16 | public int[] nextGreaterElement(int[] nums1, int[] nums2) { 17 | //用于保存每个元素的下一个比其大的值 18 | Map map = new HashMap<>(); 19 | Stack stack = new Stack<>(); 20 | for (int num : nums2) { 21 | //栈不为空而且找到比栈顶元素大的值 22 | while (!stack.empty() && stack.peek() < num) { 23 | map.put(stack.pop(), num); 24 | } 25 | stack.push(num); 26 | } 27 | for (int i = 0; i < nums1.length; i++) { 28 | nums1[i] = map.getOrDefault(nums1[i], -1); 29 | } 30 | return nums1; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/algorithm/_503_Next_Greater_Element_II/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._503_Next_Greater_Element_II; 2 | 3 | import java.util.Arrays; 4 | import java.util.Stack; 5 | 6 | public class Solution { 7 | 8 | /*给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的 9 | 下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个 10 | 比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。*/ 11 | 12 | 13 | public int[] nextGreaterElements(int[] nums) { 14 | int n = nums.length; 15 | int[] next = new int[n]; 16 | Arrays.fill(next, -1); 17 | //栈保存之前的元素 18 | Stack stack = new Stack<>(); 19 | //2*n表示要遍历两遍 20 | for (int i = 0; i < 2 * n; i++) { 21 | int num = nums[i % n]; 22 | //栈不为空而且栈顶索引指向的元素比当前元素小,更新next数组的对应索引元素为当前元素 23 | while (!stack.empty() && nums[stack.peek()] < num) { 24 | next[stack.pop()] = num; 25 | } 26 | if (i < n) { 27 | stack.push(i); 28 | } 29 | } 30 | return next; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/algorithm/_504_Base_7/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._504_Base_7; 2 | 3 | public class Solution { 4 | 5 | /*给定一个整数,将其转化为7进制,并以字符串形式输出。*/ 6 | 7 | public String convertToBase7(int num) { 8 | if (num == 0) { 9 | return "0"; 10 | } 11 | StringBuilder stb = new StringBuilder(); 12 | boolean isNegative = num < 0; 13 | if (isNegative) { 14 | num = -num; 15 | } 16 | while (num > 0) { 17 | //取余数 18 | stb.append(num % 7); 19 | num /= 7; 20 | } 21 | //字符串反转 22 | String res = stb.reverse().toString(); 23 | return isNegative ? "-" + res : res; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/algorithm/_513_Find_Bottom_Left_Tree_Value/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._513_Find_Bottom_Left_Tree_Value; 2 | 3 | import java.util.LinkedList; 4 | import java.util.Queue; 5 | 6 | public class Solution { 7 | 8 | 9 | public class TreeNode { 10 | int val; 11 | TreeNode left; 12 | TreeNode right; 13 | 14 | TreeNode(int x) { 15 | val = x; 16 | } 17 | } 18 | 19 | /*给定一个二叉树,找到最下面一行的最左边的结点*/ 20 | 21 | public int findBottomLeftValue(TreeNode root) { 22 | if (root == null) return 0; 23 | Queue queue = new LinkedList<>(); 24 | queue.add(root); 25 | while (!queue.isEmpty()) { 26 | root = queue.poll(); 27 | if (root.right != null) { 28 | queue.add(root.right); 29 | } 30 | if (root.left != null) { 31 | queue.add(root.left); 32 | } 33 | } 34 | return root.val; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/algorithm/_518_Coin_Change_2/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._518_Coin_Change_2; 2 | 3 | public class Solution { 4 | 5 | /*给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。 6 | 假设每一种面额的硬币有无限个。*/ 7 | 8 | 9 | //完全背包问题 10 | public int change(int amount, int[] coins) { 11 | int[] dp = new int[amount + 1]; 12 | dp[0] = 1; 13 | for (int coin : coins) { 14 | for (int i = coin; i <= amount; i++) {//完全背包,硬币可重复,采用正序 15 | dp[i] = dp[i] + dp[i - coin]; 16 | } 17 | } 18 | return dp[amount]; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/algorithm/_530_Minimum_Absolute_Difference_in_BST/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._530_Minimum_Absolute_Difference_in_BST; 2 | 3 | public class Solution { 4 | 5 | /*给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值。*/ 6 | 7 | public class TreeNode { 8 | int val; 9 | TreeNode left; 10 | TreeNode right; 11 | 12 | TreeNode(int x) { 13 | val = x; 14 | } 15 | } 16 | 17 | 18 | private int min = Integer.MAX_VALUE; 19 | private TreeNode pre = null; 20 | 21 | public int getMinimumDifference(TreeNode root) { 22 | inOrder(root); 23 | return min; 24 | } 25 | 26 | //中序遍历 27 | private void inOrder(TreeNode root) { 28 | if (root == null) { 29 | return; 30 | } 31 | inOrder(root.left); 32 | //当前节点和前一个节点的差值 33 | if (pre != null) { 34 | min = Math.min(min, root.val - pre.val); 35 | } 36 | //更新前一个结点 37 | pre = root; 38 | inOrder(root.right); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/algorithm/_538_Convert_BST_to_Greater_Tree/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._538_Convert_BST_to_Greater_Tree; 2 | 3 | public class Solution { 4 | 5 | /*给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree), 6 | 使得每个节点的值是原来的节点值加上所有大于它的节点值之和。*/ 7 | 8 | 9 | public class TreeNode { 10 | int val; 11 | TreeNode left; 12 | TreeNode right; 13 | TreeNode(int x) { val = x; } 14 | } 15 | 16 | 17 | //全局变量 18 | int sum = 0; 19 | 20 | public TreeNode convertBST(TreeNode root) { 21 | convert(root); 22 | return root; 23 | } 24 | 25 | //右根左,中序遍历反过来 26 | /*一直递归右结点,找到最右的结点,更新它的值为结点值加上累加值,并将累加值更新为该结点的值。再递归左结点*/ 27 | private void convert(TreeNode cur){ 28 | if(cur == null){ 29 | return; 30 | } 31 | convert(cur.right); 32 | cur.val += sum; 33 | sum = cur.val; 34 | convert(cur.left); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/algorithm/_540_Single_Element_in_a_Sorted_Array/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._540_Single_Element_in_a_Sorted_Array; 2 | 3 | public class Solution { 4 | 5 | /*给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。 6 | 要求O(log n)时间复杂度*/ 7 | 8 | public int singleNonDuplicate(int[] nums) { 9 | int L = 0, R = nums.length - 1; 10 | while (L < R) { 11 | //中位数位置 12 | int mid = L + (R - L) / 2; 13 | //如果中位数的位置是奇数,那么进行减1操作,确保左边区间和右边区间的长度都为偶数 14 | if (mid % 2 == 1) { 15 | mid--; 16 | } 17 | //相等表示右边区间除去nums[mid + 1]之后,长度为奇数,那么该数肯定在这里面 18 | if (nums[mid] == nums[mid + 1]) { 19 | L = mid + 2; 20 | //反之表示右边区间的偶数都是两两匹配,该数不在这里面。 21 | } else { 22 | R = mid; 23 | } 24 | } 25 | return nums[L]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/algorithm/_543_Diameter_of_Binary_Tree/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._543_Diameter_of_Binary_Tree; 2 | 3 | public class Solution { 4 | 5 | public class TreeNode { 6 | int val; 7 | TreeNode left; 8 | TreeNode right; 9 | TreeNode(int x) { val = x; } 10 | } 11 | 12 | /*二叉树中任意两节点的最长路径*/ 13 | 14 | //定义一个初始的最大值 15 | private int max = 0; 16 | 17 | public int diameterOfBinaryTree(TreeNode root) { 18 | depth(root); 19 | return max; 20 | } 21 | 22 | private int depth(TreeNode root) { 23 | if (root == null) return 0; 24 | int leftDepth = depth(root.left); 25 | int rightDepth = depth(root.right); 26 | //左树的长度和右树的长度相加再和最大值比较 27 | max = Math.max(max,leftDepth+rightDepth); 28 | //树的层数 29 | return Math.max(leftDepth, rightDepth) + 1; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/algorithm/_557_Reverse_Words_in_a_String_III/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._557_Reverse_Words_in_a_String_III; 2 | 3 | public class Solution { 4 | 5 | /*给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。*/ 6 | 7 | public String reverseWords(String s) { 8 | char[] str = s.toCharArray(); 9 | int start = 0; 10 | for (int i = 0; i < str.length; i++) { 11 | if (s.charAt(i) == ' ') { 12 | reverseWord(str, start, i - 1); 13 | start = i + 1; 14 | } 15 | } 16 | reverseWord(str, start, str.length - 1); 17 | return new String(str); 18 | } 19 | 20 | private void reverseWord(char[] str, int start, int end) { 21 | while (start < end) { 22 | char temp = str[start]; 23 | str[start] = str[end]; 24 | str[end] = temp; 25 | start++; 26 | end--; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_560_Subarray_Sum_Equals_K/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._560_Subarray_Sum_Equals_K; 2 | 3 | import java.util.HashMap; 4 | 5 | public class Solution { 6 | 7 | /*要求连续子数组的和为k,求子数组的个数*/ 8 | 9 | 10 | 11 | /*采用的方式是用hashmap保存的key是前面数字相加的和,value是该和出现的次数。将该问题转化为前面数字的和减去k后 12 | 的数字和的个数*/ 13 | public int subarraySum(int[] nums, int k) { 14 | int sum = 0, result = 0; 15 | HashMap map = new HashMap<>(); 16 | //当和为0时,次数为1 17 | map.put(0, 1); 18 | for (int i = 0; i < nums.length; i++) { 19 | sum += nums[i]; 20 | //如果sum-k这个key存在,该和出现的次数就表示子数组和为k的个数 21 | if (map.containsKey(sum - k)) { 22 | result += map.get(sum - k); 23 | } 24 | //将前面数字的和作为key放入,map有已经有这个key的话value就加1 25 | map.put(sum, map.getOrDefault(sum, 0) + 1); 26 | } 27 | return result; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_565_Array_Nesting/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._565_Array_Nesting; 2 | 3 | public class Solution { 4 | 5 | /*索引从0开始长度为N的数组A,包含0到N - 1的所有整数。找到并返回最大的集合S, 6 | S[i] = {A[i], A[A[i]], A[A[A[i]]], ... }且遵守以下的规则。 7 | 8 | 假设选择索引为i的元素A[i]为S的第一个元素,S的下一个元素应该是A[A[i]],之后是 9 | A[A[A[i]]]... 以此类推,不断添加直到S出现重复的元素。*/ 10 | 11 | public int arrayNesting(int[] nums) { 12 | int max = 0; 13 | for (int i = 0; i < nums.length; i++) { 14 | int count = 0; 15 | //从该数字开始访问 16 | for (int j = i; nums[j] != -1; ) { 17 | count++; 18 | int t = nums[j]; 19 | //标记已经使用过 20 | nums[j] = -1; 21 | j = t; 22 | } 23 | max = Math.max(max, count); 24 | } 25 | return max; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/algorithm/_566_Reshape_the_Matrix/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._566_Reshape_the_Matrix; 2 | 3 | public class Solution { 4 | 5 | /*给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。 6 | 重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。 7 | 如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。*/ 8 | 9 | public int[][] matrixReshape(int[][] nums, int r, int c) { 10 | if (nums == null || nums.length == 0) { 11 | return null; 12 | } 13 | int rows = nums.length; 14 | int cols = nums[0].length; 15 | if (rows * cols != r * c) { 16 | return nums; 17 | } 18 | int[][] result = new int[r][c]; 19 | int index = 0; 20 | for (int i = 0; i < r; i++) { 21 | for (int j = 0; j < c; j++) { 22 | result[i][j] = nums[index / cols][index % cols]; 23 | index++; 24 | } 25 | } 26 | return result; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/algorithm/_583_Delete_Operation_for_Two_Strings/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._583_Delete_Operation_for_Two_Strings; 2 | 3 | public class Solution { 4 | 5 | /*给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数, 6 | 每步可以删除任意一个字符串中的一个字符。*/ 7 | 8 | //转化为计算两个字符串的公共字符串 9 | public int minDistance(String word1, String word2) { 10 | int m = word1.length(), n = word2.length(); 11 | int[][] dp = new int[m + 1][n + 1]; 12 | for (int i = 1; i <= m; i++) { 13 | for (int j = 1; j <= n; j++) { 14 | if (word1.charAt(i - 1) == word2.charAt(j - 1)) { 15 | dp[i][j] = dp[i - 1][j - 1] + 1; 16 | } else { 17 | dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]); 18 | } 19 | } 20 | } 21 | //两个字符串相加的长度减去公共字符串 22 | return m + n - 2 * dp[m][n]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/algorithm/_605_Can_Place_Flowers/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._605_Can_Place_Flowers; 2 | 3 | public class Solution { 4 | 5 | /*给定一个数组,数组里面1表示种了花朵,0表示没有种。看能否种下n朵花,要求种的花不能相邻*/ 6 | public boolean canPlaceFlowers(int[] flowerbed, int n) { 7 | int len = flowerbed.length; 8 | int count = 0; 9 | for (int i = 0; i < len && count < n; i++) { 10 | //判断是否种了花 11 | if (flowerbed[i] == 1) { 12 | continue; 13 | } 14 | //左边是否种了 15 | int pre = i == 0 ? 0 : flowerbed[i - 1]; 16 | //右边是否种了 17 | int next = i == len - 1 ? 0 : flowerbed[i + 1]; 18 | //如果左边和右边都没有花就种下 19 | if (pre == 0 && next == 0) { 20 | count++; 21 | flowerbed[i] = 1; 22 | } 23 | } 24 | //数量相等表示都能种下 25 | return count == n; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/algorithm/_617_Merge_Two_Binary_Trees/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._617_Merge_Two_Binary_Trees; 2 | 3 | public class Solution { 4 | 5 | public class TreeNode { 6 | int val; 7 | TreeNode left; 8 | TreeNode right; 9 | TreeNode(int x) { val = x; } 10 | } 11 | 12 | /*给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 13 | 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点 14 | 合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。*/ 15 | 16 | public TreeNode mergeTrees(TreeNode t1, TreeNode t2) { 17 | if( t1 == null && t2 == null){ 18 | return null; 19 | }else if( t1 == null){ 20 | return t2; 21 | }else if( t2 == null){ 22 | return t1; 23 | } 24 | TreeNode root = new TreeNode(t1.val + t2.val); 25 | //递归左子树 26 | root.left = mergeTrees(t1.left,t2.left); 27 | //递归右子树 28 | root.right = mergeTrees(t1.right,t2.right); 29 | return root; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/algorithm/_621_Task_Scheduler/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._621_Task_Scheduler; 2 | 3 | import java.util.Arrays; 4 | 5 | public class Solution { 6 | 7 | /*给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种 8 | 不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何 9 | 一个单位时间内都可以执行一个任务,或者在待命状态。 10 | 然而,两个相同种类的任务之间必须有长度为 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执 11 | 行不同的任务,或者在待命状态。 12 | 你需要计算完成所有任务所需要的最短时间。*/ 13 | 14 | 15 | public int leastInterval(char[] tasks, int n) { 16 | int[] chars = new int[26]; 17 | for (char c : tasks) { 18 | chars[c - 'A']++; 19 | } 20 | //按频率排序,可以找到使用频率最高的值 21 | Arrays.sort(chars); 22 | int i = 25; 23 | //确定使用频率最高的值相同的字符有多少个 24 | while (i >= 0 && chars[i] == chars[25]) i--; 25 | //考虑间隔长度n可能为零,所以最短时间可能是数组长度 26 | return Math.max(tasks.length, (chars[25] - 1) * (n + 1) + 25 - i); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/algorithm/_645_Set_Mismatch/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._645_Set_Mismatch; 2 | 3 | public class Solution { 4 | 5 | /*集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合 6 | 里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。 7 | 给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢 8 | 失的整数,将它们以数组的形式返回。*/ 9 | 10 | //将1-n的整数摆放到正确的位置上 11 | public int[] findErrorNums(int[] nums) { 12 | for (int i = 0; i < nums.length; i++) { 13 | //如果整数位置不正确并且不和交换后的数字相等,就交换数字 14 | while (nums[i] != i + 1 && nums[nums[i] - 1] != nums[i]) { 15 | swap(nums, i, nums[i] - 1); 16 | } 17 | } 18 | for (int i = 0; i < nums.length; i++) { 19 | if (nums[i] != i + 1) { 20 | return new int[]{nums[i], i + 1}; 21 | } 22 | } 23 | return null; 24 | } 25 | 26 | private void swap(int[] nums, int i, int j) { 27 | int temp = nums[i]; 28 | nums[i] = nums[j]; 29 | nums[j] = temp; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/algorithm/_646_Maximum_Length_of_Pair_Chain/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._646_Maximum_Length_of_Pair_Chain; 2 | 3 | import java.util.Arrays; 4 | 5 | public class Solution { 6 | 7 | /*给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。 8 | 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面。 9 | 我们用这种形式来构造一个数对链。 10 | 给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序 11 | 选择其中的一些数对来构造。*/ 12 | 13 | public int findLongestChain(int[][] pairs) { 14 | if (pairs == null || pairs.length == 0) { 15 | return 0; 16 | } 17 | Arrays.sort(pairs, (o1, o2) -> o1[0] - o2[0]); 18 | int length = pairs.length; 19 | int[] dp = new int[length]; 20 | Arrays.fill(dp, 1); 21 | for (int i = 0; i < length; i++) { 22 | for (int j = 0; j < i; j++) { 23 | if (pairs[j][1] < pairs[i][0]) { 24 | dp[i] = Math.max(dp[i], dp[j] + 1); 25 | } 26 | } 27 | } 28 | return Arrays.stream(dp).max().orElse(0); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/algorithm/_647_Palindromic_Substrings/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._647_Palindromic_Substrings; 2 | 3 | public class Solution { 4 | /*给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 5 | 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。*/ 6 | 7 | //回文字符串数量 8 | int count = 0; 9 | 10 | public int countSubstrings(String s) { 11 | for (int i = 0; i < s.length(); i++) { 12 | //字符串长度为奇数,当前结点向外延长 13 | extendPalindrome(s, i, i);//odd 14 | //字符串长度为偶数,当前结点加上后一个结点向外延长 15 | extendPalindrome(s, i, i + 1);//even 16 | } 17 | return count; 18 | } 19 | 20 | //向外延长,继续找出回文字符串 21 | private void extendPalindrome(String s, int left, int right) { 22 | while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) { 23 | count++; 24 | left--; 25 | right++; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/algorithm/_669_Trim_a_Binary_Search_Tree/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._669_Trim_a_Binary_Search_Tree; 2 | 3 | public class Solution { 4 | 5 | /*给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点 6 | 的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树 7 | 的新的根节点。*/ 8 | 9 | public class TreeNode { 10 | int val; 11 | TreeNode left; 12 | TreeNode right; 13 | 14 | TreeNode(int x) { 15 | val = x; 16 | } 17 | } 18 | 19 | public TreeNode trimBST(TreeNode root, int L, int R) { 20 | if (root == null) { 21 | return null; 22 | } 23 | //根节点比左边界小,修剪的树的根节点在右子树中寻找 24 | if (root.val < L) { 25 | return trimBST(root.right, L, R); 26 | } 27 | //根节点比右边界大,修剪的树的根节点在左子树中寻找 28 | if (root.val > R) { 29 | return trimBST(root.left, L, R); 30 | } 31 | //根节点处于L和R中间 32 | root.left = trimBST(root.left, L, R); 33 | root.right = trimBST(root.right, L, R); 34 | return root; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/algorithm/_680_Valid_Palindrome_II/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._680_Valid_Palindrome_II; 2 | 3 | public class Solution { 4 | 5 | /*给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。*/ 6 | 7 | 8 | public boolean validPalindrome(String s) { 9 | int index = 0, end = s.length() - 1; 10 | while (index < end) { 11 | //如果不匹配,存在两种情况回文 12 | if (s.charAt(index) != s.charAt(end)) { 13 | return isPalindrome(s, index + 1, end) || isPalindrome(s, index, end - 1); 14 | } 15 | index++; 16 | end--; 17 | } 18 | return true; 19 | } 20 | 21 | //双指针判断回文 22 | private boolean isPalindrome(String s, int i, int j) { 23 | while (i < j) { 24 | if (s.charAt(i++) != s.charAt(j--)) { 25 | return false; 26 | } 27 | } 28 | return true; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/algorithm/_739_Daily_Temperatures/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._739_Daily_Temperatures; 2 | 3 | import java.util.Stack; 4 | 5 | public class Solution { 6 | 7 | /*给定一个日常温度的数组T,需要返回一个数组,数组里面记录了还需要等待多少天才能有更高的温度*/ 8 | 9 | public int[] dailyTemperatures(int[] T) { 10 | //用栈来保存每一天 11 | Stack stack = new Stack(); 12 | int[] result = new int[T.length]; 13 | for (int i = 0; i < T.length; i++) { 14 | //栈不是空的并且当前天的温度大于栈顶该天的温度 15 | while (!stack.empty() && T[i] > T[stack.peek()]) { 16 | //栈顶的天数 17 | int index = stack.pop(); 18 | //更新result数组的栈顶天数需要等待的天数 19 | result[index] = i - index; 20 | } 21 | //将天数入栈 22 | stack.push(i); 23 | } 24 | return result; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/algorithm/_746_Min_Cost_Climbing_Stairs/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._746_Min_Cost_Climbing_Stairs; 2 | 3 | public class Solution { 4 | 5 | /*数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。 6 | 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。 7 | 您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。*/ 8 | 9 | 10 | public int minCostClimbingStairs(int[] cost) { 11 | if (cost == null || cost.length == 0) { 12 | return 0; 13 | } 14 | for (int i = 2; i < cost.length; i++) { 15 | cost[i] += Math.min(cost[i - 1], cost[i - 2]); 16 | } 17 | return Math.min(cost[cost.length - 1], cost[cost.length - 2]); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/algorithm/_769_Max_Chunks_To_Make_Sorted/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._769_Max_Chunks_To_Make_Sorted; 2 | 3 | public class Solution { 4 | 5 | /*数组arr是[0, 1, ..., arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将 6 | 这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。 7 | 我们最多能将数组分成多少块?*/ 8 | 9 | 10 | public int maxChunksToSorted(int[] arr) { 11 | if (arr == null || arr.length == 0) { 12 | return 0; 13 | } 14 | int right = arr[0]; 15 | int count = 0; 16 | for (int i = 0; i < arr.length; i++) { 17 | right = Math.max(right, arr[i]); 18 | //找到一块逆序,可以来一次排序 19 | if (right == i) { 20 | count++; 21 | } 22 | } 23 | return count; 24 | } 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/algorithm/_771_Jewels_and_Stones/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._771_Jewels_and_Stones; 2 | 3 | import java.util.HashSet; 4 | import java.util.Set; 5 | 6 | public class Solution { 7 | 8 | 9 | /* 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 10 | S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。*/ 11 | 12 | //借助HashSet,时间复杂度为O(M+N) 13 | public int numJewelsInStones(String J, String S) { 14 | int res = 0; 15 | Set set = new HashSet(); 16 | for (char j : J.toCharArray()) { 17 | if (!set.contains(j)) { 18 | set.add(j); 19 | } 20 | } 21 | for (char s : S.toCharArray()) { 22 | if (set.contains(s)) { 23 | res++; 24 | } 25 | } 26 | return res; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/algorithm/_876_Middle_of_the_Linked_List/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._876_Middle_of_the_Linked_List; 2 | 3 | public class Solution { 4 | 5 | 6 | public class ListNode { 7 | int val; 8 | ListNode next; 9 | 10 | ListNode(int x) { 11 | val = x; 12 | } 13 | } 14 | 15 | 16 | 17 | /*给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 18 | 如果有两个中间结点,则返回第二个中间结点。*/ 19 | 20 | public ListNode middleNode(ListNode head) { 21 | ListNode slow = head, fast = head; 22 | while (fast != null && fast.next != null) { 23 | slow = slow.next; 24 | fast = fast.next.next; 25 | } 26 | return slow; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/algorithm/_946_Validate_Stack_Sequences/Solution.java: -------------------------------------------------------------------------------- 1 | package algorithm._946_Validate_Stack_Sequences; 2 | 3 | import java.util.Stack; 4 | 5 | public class Solution { 6 | 7 | /*给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的 8 | 推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。*/ 9 | 10 | 11 | //构造辅助栈 12 | public boolean validateStackSequences(int[] pushed, int[] popped) { 13 | if (pushed == null || popped == null) { 14 | return false; 15 | } 16 | Stack stack = new Stack<>(); 17 | //出栈索引位 18 | int popIndex = 0; 19 | for (int i = 0; i < pushed.length; i++) { 20 | stack.push(pushed[i]); 21 | //如果栈不为空且栈顶元素等于出栈序列元素,就执行出栈操作并移动出栈索引 22 | while (!stack.empty() && stack.peek() == popped[popIndex]) { 23 | stack.pop(); 24 | popIndex++; 25 | } 26 | } 27 | //栈为空表示元素全部弹出了,返回true,否则返回false 28 | return stack.empty(); 29 | } 30 | } 31 | --------------------------------------------------------------------------------