Press "Enter" to skip to content

花花酱 LeetCode 1295. Find Numbers with Even Number of Digits

Given an array nums of integers, return how many of them contain an even number of digits.

Example 1:

Input: nums = [12,345,2,6,7896]
Output: 2
Explanation: 
12 contains 2 digits (even number of digits). 
345 contains 3 digits (odd number of digits). 
2 contains 1 digit (odd number of digits). 
6 contains 1 digit (odd number of digits). 
7896 contains 4 digits (even number of digits). 
Therefore only 12 and 7896 contain an even number of digits.

Example 2:

Input: nums = [555,901,482,1771]
Output: 1 
Explanation: 
Only 1771 contains an even number of digits.

Constraints:

  • 1 <= nums.length <= 500
  • 1 <= nums[i] <= 10^5

Solution: Math

Time complexity: O(n * log(max(num)))
Space complexity: O(1)

C++

Python3

花花酱 LeetCode 295. Find Median from Data Stream O(logn) + O(1)

Problem:

Median is the middle value in an ordered integer list. If the size of the list is even, there is no middle value. So the median is the mean of the two middle value.

Examples:

[2,3,4] , the median is 3

[2,3], the median is (2 + 3) / 2 = 2.5

Design a data structure that supports the following two operations:

  • void addNum(int num) – Add a integer number from the data stream to the data structure.
  • double findMedian() – Return the median of all elements so far.

For example:

 

Idea:

  1. Min/Max heap
  2. Balanced binary search tree

Time Complexity:

add(num): O(logn)

findMedian(): O(logn)

Solution1:

 

Solution 2:

 

Related Problems

花花酱 LeetCode Problem List 题目列表

Data source: link suggestions and comments are welcome(需要科学上网)


Tree(树)

html { } #sheets-viewport { overflow: auto; } #sheets-viewport.widget-viewport { overflow: hidden; } .grid-container { background: white;} .grid-table-container { } #top-bar { background: url("//ssl.gstatic.com/docs/spreadsheets/publishheader.png") repeat-x bottom; margin: 0; overflow: hidden; } #top-bar { border-bottom: 1px solid #ccc; padding: 6px 6px 0; } #doc-title { padding-bottom: 5px; } #doc-title .name { font-size: 15px; } #sheet-menu { font-size: 13px; margin: 6px 0 0; padding: 0 0 5px; } #sheet-menu li { display: inline; list-style-type: none; margin: 0; padding: 5px 8px; } #sheet-menu li.active { background-color: #fff; font-weight: bold; border: 1px solid #999; } #top-bar #sheet-menu li.active { border-bottom: 0; } #sheet-menu a, #sheet-menu a:visited { color: #07c; } #footer { background: #f0f0f0; border-top: 1px #ccc solid; border-bottom: 1px #ccc solid; font-size: 13; padding: 10px 10px; } .dash { padding: 0 6px; } .ritz .waffle a { color: inherit; }.ritz .waffle .s16{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s11{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#d9ead3;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:top;white-space:normal;overflow:hidden;word-wrap:break-word;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s10{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s2{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s5{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:middle;white-space:normal;overflow:hidden;word-wrap:break-word;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s18{border-bottom:1px SOLID #000000;border-bottom:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s4{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:middle;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s15{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#d9ead3;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:normal;overflow:hidden;word-wrap:break-word;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s0{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s14{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;}.ritz .waffle .s12{border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s9{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#d9ead3;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s3{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s1{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:normal;overflow:hidden;word-wrap:break-word;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s6{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:middle;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s13{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:normal;overflow:hidden;word-wrap:break-word;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s8{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#f4cccc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s17{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#f4cccc;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:normal;overflow:hidden;word-wrap:break-word;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s7{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}

Divide and conquer(分治)

html { } #sheets-viewport { overflow: auto; } #sheets-viewport.widget-viewport { overflow: hidden; } .grid-container { background: white;} .grid-table-container { } #top-bar { background: url("//ssl.gstatic.com/docs/spreadsheets/publishheader.png") repeat-x bottom; margin: 0; overflow: hidden; } #top-bar { border-bottom: 1px solid #ccc; padding: 6px 6px 0; } #doc-title { padding-bottom: 5px; } #doc-title .name { font-size: 15px; } #sheet-menu { font-size: 13px; margin: 6px 0 0; padding: 0 0 5px; } #sheet-menu li { display: inline; list-style-type: none; margin: 0; padding: 5px 8px; } #sheet-menu li.active { background-color: #fff; font-weight: bold; border: 1px solid #999; } #top-bar #sheet-menu li.active { border-bottom: 0; } #sheet-menu a, #sheet-menu a:visited { color: #07c; } #footer { background: #f0f0f0; border-top: 1px #ccc solid; border-bottom: 1px #ccc solid; font-size: 13; padding: 10px 10px; } .dash { padding: 0 6px; } .ritz .waffle a { color: inherit; }.ritz .waffle .s23{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s20{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s21{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s25{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#f4cccc;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s22{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#d9ead3;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s24{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s26{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}
1
Id Name Difficulty Similar Problems Comments
2
169 Majority Element ★★ 你知道茴香豆的茴有几种写法吗?
3
153 Find Minimum in Rotated Sorted Array ★★ 154
4
912 Sort and Array ★★★ merge sort
5
315 Count of Smaller Numbers After Self ★★★★ merge sort / BIT

List(链表)

html { } #sheets-viewport { overflow: auto; } #sheets-viewport.widget-viewport { overflow: hidden; } .grid-container { background: white;} .grid-table-container { } #top-bar { background: url("//ssl.gstatic.com/docs/spreadsheets/publishheader.png") repeat-x bottom; margin: 0; overflow: hidden; } #top-bar { border-bottom: 1px solid #ccc; padding: 6px 6px 0; } #doc-title { padding-bottom: 5px; } #doc-title .name { font-size: 15px; } #sheet-menu { font-size: 13px; margin: 6px 0 0; padding: 0 0 5px; } #sheet-menu li { display: inline; list-style-type: none; margin: 0; padding: 5px 8px; } #sheet-menu li.active { background-color: #fff; font-weight: bold; border: 1px solid #999; } #top-bar #sheet-menu li.active { border-bottom: 0; } #sheet-menu a, #sheet-menu a:visited { color: #07c; } #footer { background: #f0f0f0; border-top: 1px #ccc solid; border-bottom: 1px #ccc solid; font-size: 13; padding: 10px 10px; } .dash { padding: 0 6px; } .ritz .waffle a { color: inherit; }.ritz .waffle .s32{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#d9ead3;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s28{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s30{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s29{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s31{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s27{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}
1
Id Name Difficulty Similar Problems Comments
2
2 Add Two Numbers ★★ 445 traversal
3
24 Swap Nodes in Pairs ★★ reverse
4
206 Reverse Linked List ★★ reverse
5
141 Linked List Cycle ★★ 142 fast/slow
6
23 Merge k Sorted Lists ★★★ 21 priority_queue / mergesort
7
147 Insertion Sort List ★★★ insertion sort
8
148 Sort List ★★★★ merge sort O(1) space
9
707 Design Linked List ★★★★

BST(二叉搜索树)

html { } #sheets-viewport { overflow: auto; } #sheets-viewport.widget-viewport { overflow: hidden; } .grid-container { background: white;} .grid-table-container { } #top-bar { background: url("//ssl.gstatic.com/docs/spreadsheets/publishheader.png") repeat-x bottom; margin: 0; overflow: hidden; } #top-bar { border-bottom: 1px solid #ccc; padding: 6px 6px 0; } #doc-title { padding-bottom: 5px; } #doc-title .name { font-size: 15px; } #sheet-menu { font-size: 13px; margin: 6px 0 0; padding: 0 0 5px; } #sheet-menu li { display: inline; list-style-type: none; margin: 0; padding: 5px 8px; } #sheet-menu li.active { background-color: #fff; font-weight: bold; border: 1px solid #999; } #top-bar #sheet-menu li.active { border-bottom: 0; } #sheet-menu a, #sheet-menu a:visited { color: #07c; } #footer { background: #f0f0f0; border-top: 1px #ccc solid; border-bottom: 1px #ccc solid; font-size: 13; padding: 10px 10px; } .dash { padding: 0 6px; } .ritz .waffle a { color: inherit; }.ritz .waffle .s36{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s34{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s35{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s37{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#d9ead3;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s33{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}
1
Id Name Difficulty Similar Problems Comments
2
98 Validate Binary Search Tree ★★ 530 inorder
3
700 Search in a Binary Search Tree ★★ 701 binary search
4
230 Kth Smallest Element in a BST ★★★ inorder
5
99 Recover Binary Search Tree ★★★ inorder
6
108 ★★★ build BST
7
501 Find Mode in Binary Search Tree ★★★ inorder
8
450 Delete Node in a BST ★★★★ binary search

Graph(图论)

html { } #sheets-viewport { overflow: auto; } #sheets-viewport.widget-viewport { overflow: hidden; } .grid-container { background: white;} .grid-table-container { } #top-bar { background: url("//ssl.gstatic.com/docs/spreadsheets/publishheader.png") repeat-x bottom; margin: 0; overflow: hidden; } #top-bar { border-bottom: 1px solid #ccc; padding: 6px 6px 0; } #doc-title { padding-bottom: 5px; } #doc-title .name { font-size: 15px; } #sheet-menu { font-size: 13px; margin: 6px 0 0; padding: 0 0 5px; } #sheet-menu li { display: inline; list-style-type: none; margin: 0; padding: 5px 8px; } #sheet-menu li.active { background-color: #fff; font-weight: bold; border: 1px solid #999; } #top-bar #sheet-menu li.active { border-bottom: 0; } #sheet-menu a, #sheet-menu a:visited { color: #07c; } #footer { background: #f0f0f0; border-top: 1px #ccc solid; border-bottom: 1px #ccc solid; font-size: 13; padding: 10px 10px; } .dash { padding: 0 6px; } .ritz .waffle a { color: inherit; }.ritz .waffle .s43{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#d9ead3;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s39{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s41{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s40{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s44{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#f4cccc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s45{border-bottom:1px SOLID #000000;border-bottom:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s46{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s42{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s38{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s47{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;}
1
Id Name Difficulty Similar Problems Comments
2
133 Clone Graph ★★ 138 queue + hashtable
3
200 Number of Islands ★★ 547 695 733 827 1162
grid + connected components
4
841 Keys and Rooms ★★ 1202 DFS, connected components
5
207 Course Schedule ★★★ 210 802 topology sorting
6
399 Evaluate Division ★★★ 839 952 990 721 737 union find
7
785 Is Graph Bipartite? ★★★ 886 1042 bipartition, graph coloring
8
997 Find the Town Judge ★★★ in/out degrees
9
433 Minimum Genetic Mutation ★★★ 815 863 1129 1263
unweighted shortest path / BFS
10
684 Redundant Connection ★★★★ 685 1319 cycle, union find
11
743 Network Delay Time ★★★★ 787 882 924 1334 weighted shortest path
12
847 ★★★★ 864 1298 BFS
13
332 Reconstruct Itinerary ★★★★ Eulerian path
14
1192 ★★★★ Tarjan
15
943 Find the Shortest Superstring ★★★★★ 980 996 Hamiltonian path (DFS / DP)
16
959 Regions Cut By Slashes ★★★★★ union find / grid + CCs

Search (BFS/DFS)(搜索/回溯)

html { } #sheets-viewport { overflow: auto; } #sheets-viewport.widget-viewport { overflow: hidden; } .grid-container { background: white;} .grid-table-container { } #top-bar { background: url("//ssl.gstatic.com/docs/spreadsheets/publishheader.png") repeat-x bottom; margin: 0; overflow: hidden; } #top-bar { border-bottom: 1px solid #ccc; padding: 6px 6px 0; } #doc-title { padding-bottom: 5px; } #doc-title .name { font-size: 15px; } #sheet-menu { font-size: 13px; margin: 6px 0 0; padding: 0 0 5px; } #sheet-menu li { display: inline; list-style-type: none; margin: 0; padding: 5px 8px; } #sheet-menu li.active { background-color: #fff; font-weight: bold; border: 1px solid #999; } #top-bar #sheet-menu li.active { border-bottom: 0; } #sheet-menu a, #sheet-menu a:visited { color: #07c; } #footer { background: #f0f0f0; border-top: 1px #ccc solid; border-bottom: 1px #ccc solid; font-size: 13; padding: 10px 10px; } .dash { padding: 0 6px; } .ritz .waffle a { color: inherit; }.ritz .waffle .s49{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s51{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s50{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s54{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#f4cccc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s53{border-bottom:1px SOLID #000000;border-bottom:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s52{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s48{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}
1
Id Name Difficulty Similar Problems Comments
2
17 Letter Combinations of a Phone Number ★★ 39 40 77 78 90 216
Combination
3
46 Permutations ★★ 47 784 943 996 Permutation
4
22 Generate Parentheses ★★★ 301 DFS
5
37 Sudoku Solver ★★★ 51 52 DFS
6
79 Word Search ★★★ 212 DFS
7
127 Word Ladder ★★★★ 126 752 818 BFS
8
542 01 Matrix ★★★ 675 934 BFS
9
698 Partition to K Equal Sum Subsets ★★★ 93 131 241 282 842 Partition

Binary Search(二分搜索)

html { } #sheets-viewport { overflow: auto; } #sheets-viewport.widget-viewport { overflow: hidden; } .grid-container { background: white;} .grid-table-container { } #top-bar { background: url("//ssl.gstatic.com/docs/spreadsheets/publishheader.png") repeat-x bottom; margin: 0; overflow: hidden; } #top-bar { border-bottom: 1px solid #ccc; padding: 6px 6px 0; } #doc-title { padding-bottom: 5px; } #doc-title .name { font-size: 15px; } #sheet-menu { font-size: 13px; margin: 6px 0 0; padding: 0 0 5px; } #sheet-menu li { display: inline; list-style-type: none; margin: 0; padding: 5px 8px; } #sheet-menu li.active { background-color: #fff; font-weight: bold; border: 1px solid #999; } #top-bar #sheet-menu li.active { border-bottom: 0; } #sheet-menu a, #sheet-menu a:visited { color: #07c; } #footer { background: #f0f0f0; border-top: 1px #ccc solid; border-bottom: 1px #ccc solid; font-size: 13; padding: 10px 10px; } .dash { padding: 0 6px; } .ritz .waffle a { color: inherit; }.ritz .waffle .s60{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#d9ead3;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s56{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s58{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s57{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s63{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#f4cccc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s62{border-bottom:1px SOLID #000000;border-bottom:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s59{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s55{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s61{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;}
1
Id Name Difficulty Similar Problems Comments
2
35 Search Insert Position ★★ 34 704 981 upper_bound
3
33 Search in Rotated Sorted Array ★★★ 81 153 154 162 852 rotated / peak
4
69 Sqrt(x) ★★★ upper_bound
5
74 Search a 2D Matrix ★★★ treat 2d as 1d
6
875 Koko Eating Bananas ★★★ 1011
guess ans and check
7
4 Median of Two Sorted Arrays ★★★★
8
378 ★★★★ 668 kth + matrix
9
719 Find K-th Smallest Pair Distance ★★★★ 786 kth + two pointers

Two Pointers(双指针)

html { } #sheets-viewport { overflow: auto; } #sheets-viewport.widget-viewport { overflow: hidden; } .grid-container { background: white;} .grid-table-container { } #top-bar { background: url("//ssl.gstatic.com/docs/spreadsheets/publishheader.png") repeat-x bottom; margin: 0; overflow: hidden; } #top-bar { border-bottom: 1px solid #ccc; padding: 6px 6px 0; } #doc-title { padding-bottom: 5px; } #doc-title .name { font-size: 15px; } #sheet-menu { font-size: 13px; margin: 6px 0 0; padding: 0 0 5px; } #sheet-menu li { display: inline; list-style-type: none; margin: 0; padding: 5px 8px; } #sheet-menu li.active { background-color: #fff; font-weight: bold; border: 1px solid #999; } #top-bar #sheet-menu li.active { border-bottom: 0; } #sheet-menu a, #sheet-menu a:visited { color: #07c; } #footer { background: #f0f0f0; border-top: 1px #ccc solid; border-bottom: 1px #ccc solid; font-size: 13; padding: 10px 10px; } .dash { padding: 0 6px; } .ritz .waffle a { color: inherit; }.ritz .waffle .s70{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s65{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s68{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s73{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s66{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s69{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#f4cccc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s67{border-bottom:1px SOLID #000000;border-bottom:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s64{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s71{border-bottom:1px SOLID #000000;background-color:#ffffff;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s72{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;}

Advanced(高级)

html { } #sheets-viewport { overflow: auto; } #sheets-viewport.widget-viewport { overflow: hidden; } .grid-container { background: white;} .grid-table-container { } #top-bar { background: url("//ssl.gstatic.com/docs/spreadsheets/publishheader.png") repeat-x bottom; margin: 0; overflow: hidden; } #top-bar { border-bottom: 1px solid #ccc; padding: 6px 6px 0; } #doc-title { padding-bottom: 5px; } #doc-title .name { font-size: 15px; } #sheet-menu { font-size: 13px; margin: 6px 0 0; padding: 0 0 5px; } #sheet-menu li { display: inline; list-style-type: none; margin: 0; padding: 5px 8px; } #sheet-menu li.active { background-color: #fff; font-weight: bold; border: 1px solid #999; } #top-bar #sheet-menu li.active { border-bottom: 0; } #sheet-menu a, #sheet-menu a:visited { color: #07c; } #footer { background: #f0f0f0; border-top: 1px #ccc solid; border-bottom: 1px #ccc solid; font-size: 13; padding: 10px 10px; } .dash { padding: 0 6px; } .ritz .waffle a { color: inherit; }.ritz .waffle .s79{border-bottom:1px SOLID #000000;background-color:#fff2cc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s80{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#d9ead3;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s75{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s77{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s76{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s81{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#f4cccc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s82{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s78{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s74{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s83{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;}
1
Id Name Difficulty Similar Problems Comments
2
208 ★★★ 648 676 677 720 745 211 Trie
3
307 ★★★ BIT/Segment Tree
4
901 Online Stock Span ★★★ 907 1019 monotonic stack
5
239 Sliding Window Maximum ★★★ monotonic queue

DP(动态规划)

html { } #sheets-viewport { overflow: auto; } #sheets-viewport.widget-viewport { overflow: hidden; } .grid-container { background: white;} .grid-table-container { } #top-bar { background: url("//ssl.gstatic.com/docs/spreadsheets/publishheader.png") repeat-x bottom; margin: 0; overflow: hidden; } #top-bar { border-bottom: 1px solid #ccc; padding: 6px 6px 0; } #doc-title { padding-bottom: 5px; } #doc-title .name { font-size: 15px; } #sheet-menu { font-size: 13px; margin: 6px 0 0; padding: 0 0 5px; } #sheet-menu li { display: inline; list-style-type: none; margin: 0; padding: 5px 8px; } #sheet-menu li.active { background-color: #fff; font-weight: bold; border: 1px solid #999; } #top-bar #sheet-menu li.active { border-bottom: 0; } #sheet-menu a, #sheet-menu a:visited { color: #07c; } #footer { background: #f0f0f0; border-top: 1px #ccc solid; border-bottom: 1px #ccc solid; font-size: 13; padding: 10px 10px; } .dash { padding: 0 6px; } .ritz .waffle a { color: inherit; }.ritz .waffle .s90{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:middle;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s86{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s97{border-bottom:1px SOLID #000000;border-bottom:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s92{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:middle;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s84{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:right;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s96{border-bottom:1px SOLID #000000;border-bottom:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:middle;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s98{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;}.ritz .waffle .s89{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#d9ead3;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s87{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s85{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:normal;overflow:hidden;word-wrap:break-word;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s94{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:center;color:#000000;font-family:'Arial';font-size:10pt;vertical-align:middle;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s93{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:middle;white-space:normal;overflow:hidden;word-wrap:break-word;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s95{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#f4cccc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s91{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#fff2cc;text-align:right;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:nowrap;direction:ltr;padding:2px 3px 2px 3px;}.ritz .waffle .s88{border-bottom:1px SOLID #000000;border-right:1px SOLID #000000;background-color:#ffffff;text-align:left;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;color:#1155cc;font-family:'Arial';font-size:10pt;vertical-align:bottom;white-space:normal;overflow:hidden;word-wrap:break-word;direction:ltr;padding:2px 3px 2px 3px;}
1
Id Name Difficulty Similar Problems Comments
2
70 Climbing Stairs 746 1137 I: O(n), S = O(n), T = O(n)
3
303 Range Sum Query – Immutable 1218
4
53 Maximum Subarray ★★ 121
5
62 Unique Paths ★★ 63 64 120 174 931 I: O(mn), S = O(mn), T = O(mn)
6
1210
7
85 Maximal Rectangle ★★★ 221 304 1277
8
198 House Robber ★★★ 213 309 740 790 801 I: O(n), S = O(3n), T = O(3n)
9
279 Perfect Squares ★★★ I: n, S = O(n), T = O(n*sqrt(n))
10
139 Word Break ★★★ 140 818 I: O(n), S = O(n), T = O(n^2)
11
300 Longest Increasing Subsequence ★★★ 673 1048
12
96 Unique Binary Search Trees ★★★
13
1105 Filling Bookcase Shelves ★★★
I: O(n) + t, S = O(n), T = O(n^2)
14
131 Palindrome Partitioning ★★★ 89
I: O(n), S = O(2^n), T = O(2^n)
15
72 Edit Distance ★★★ 10 44 97 115 583 I: O(m+n), S = O(mn), T = O(mn)
16
712 1187 1143 1092 718
17
1139 Largest 1-Bordered Square ★★★
I: O(mn), S = O(mn)
T = O(mn*min(n,m))
18
688 Knight Probability in Chessboard ★★★ 576 935
I: O(mn) + k
S = O(kmn), T = O(kmn)
19
322 Coin Change ★★★ 377 416 494 1043 1049 I: O(n) + k, S = O(n), T = O(kn)
20
1220 1230 1262 1269
21
813 Largest Sum of Averages ★★★★ 1278 1335 410
I: O(n) + k
S = O(n*k), T = O(kn^2)
22
1223 Dice Roll Simulation ★★★★
I: O(n) + k + p
S = O(k*p), T = O(n^2kp)
23
312 Burst Balloons ★★★★ 664 1024 1039 1140 1130
I: O(n), S = O(n^2), T = O(n^3)
24
741 Cherry Pickup ★★★★
I: O(n^2), S = O(n^3), T = O(n^3)
25
546 Remove Boxes ★★★★★
I: O(n), S = O(n^3), T = O(n^4)
26
943 Find the Shortest Superstring ★★★★★ 980 996 1125
I: O(n)
S = O(n*2^n), T = (n^2*2^n)
.row-header-shim { display: none; } td, th {font-size: 10px; padding: 0.05em; } hitwebcounter

Knapsack Problem 背包问题

Videos

上期节目中我们对动态规划做了一个总结,这期节目我们来聊聊背包问题。

背包问题是一个NP-complete的组合优化问题,Search的方法需要O(2^N)时间才能获得最优解。而使用动态规划,我们可以在伪多项式(pseudo-polynomial time)时间内获得最优解。

0-1 Knapsack Problem 0-1背包问题

Problem

Given N items, w[i] is the weight of the i-th item and v[i] is value of the i-th item. Given a knapsack with capacity W. Maximize the total value. Each item can be use 0 or 1 time.

0-1背包问题的通常定义是:一共有N件物品,第i件物品的重量为w[i],价值为v[i]。在总重量不超过背包承载上限W的情况下,能够获得的最大价值是多少?每件物品可以使用0次或者1次

例子:

重量 w = [1, 1, 2, 2]

价值 v = [1, 3, 4, 5]

背包承重 W = 4

最大价值为9,可以选第1,2,4件物品,也可以选第3,4件物品;总重量为4,总价值为9。

动态规划的状态转移方程为:

Solutions

Search

DP2

DP1/tmp

DP1/push

DP1/pull

 

Unbounded Knapsack Problem 完全背包

完全背包多重背包是常见的变形。和01背包的区别在于,完全背包每件物品可以使用无限多次,而多重背包每件物品最多可以使用n[i]次。两个问题都可以转换成01背包问题进行求解。

但是Naive的转换会大大增加时间复杂度:

完全背包:“复制”第i件物品到一共有 W/w[i] 件

多重背包:“复制”第i件物品到一共有 n[i] 件

然后直接调用01背包进行求解。

时间复杂度:

完全背包 O(Σ(W/w[i])*W)

多重背包 O(Σn[i]*W)

不难看出时间复杂度 = O(物品数量*背包承重)

背包承重是给定的,要降低运行时候,只有减少物品数量。但怎样才能减少总的物品数量呢?

这就涉及到二进制思想:任何一个正整数都可以用 (1, 2, 4, …, 2^K)的组合来表示。例如14 = 2 + 4 + 8。
原本需要放入14件相同的物品,现在只需要放入3件(重量和价值是原物品的2倍,4倍,8倍)。大幅降低了总的物品数量从而降低运行时间。

完全背包:对于第i件物品,我们只需要创建k = log(W/w[i])件虚拟物品即可。

每件虚拟物品的重量和价值为:1*(w[i], v[i]), 2*(w[i], v[i]), …, 2^k*(w[i], v[i])。

多重背包:对于第i件物品,我们只需要创建k + 1件虚拟物品即可,其中k = log(n[i])。

每件虚拟物品的重量和价值为:1*(w[i], v[i]), 2*(w[i], v[i]), …, 2^(k-1)*(w[i], v[i]), 以及 (n[i] – 2^k – 1) * (w[i], v[i])。

例如:n[i] = 14, k = 3, 虚拟物品的倍数为 1, 2, 4 和 7,这4个数组合可以组成1 ~ 14中的任何一个数,并且不会>14,即不超过n[i]。

二进制转换后直接调用01背包即可

时间复杂度:

完全背包 O(Σlog(W/w[i])*W)

多重背包 O(Σlog(n[i])*W)

空间复杂度 O(W)

其实完全背包和多重背包都可以在 O(NW)时间内完成,前者在视频中有讲到,后者属于超纲内容,以后有机会再和大家深入分享。

Bounded Knapsack Problem 多重背包

 

花花酱 LeetCode 902. Numbers At Most N Given Digit Set

Problem

We have a sorted set of digits D, a non-empty subset of {'1','2','3','4','5','6','7','8','9'}.  (Note that '0' is not included.)

Now, we write numbers using these digits, using each digit as many times as we want.  For example, if D = {'1','3','5'}, we may write numbers such as '13', '551', '1351315'.

Return the number of positive integers that can be written (using the digits of D) that are less than or equal to N.

Example 1:

Input: D = ["1","3","5","7"], N = 100
Output: 20
Explanation: 
The 20 numbers that can be written are:
1, 3, 5, 7, 11, 13, 15, 17, 31, 33, 35, 37, 51, 53, 55, 57, 71, 73, 75, 77.

Example 2:

Input: D = ["1","4","9"], N = 1000000000
Output: 29523
Explanation: 
We can write 3 one digit numbers, 9 two digit numbers, 27 three digit numbers,
81 four digit numbers, 243 five digit numbers, 729 six digit numbers,
2187 seven digit numbers, 6561 eight digit numbers, and 19683 nine digit numbers.
In total, this is 29523 integers that can be written using the digits of D.

Note:

  1. D is a subset of digits '1'-'9' in sorted order.
  2. 1 <= N <= 10^9

 

Solution -1: DFS (TLE)

Time complexity: O(|D|^log10(N))

Space complexity: O(n)

Solution 1: Math

Time complexity: O(log10(N))

Space complexity: O(1)

Suppose N has n digits.

less than n digits

We can use all the numbers from D to construct numbers of with length 1,2,…,n-1 which are guaranteed to be less than N.

e.g. n = 52125, D = [1, 2, 5]

format X: e.g. 1, 2, 5 counts = |D| ^ 1

format XX: e.g. 11,12,15,21,22,25,51,52,55, counts = |D|^2

format XXX:  counts = |D|^3

format XXXX: counts = |D|^4

exact n digits

if all numbers in D  != N[0], counts = |d < N[0] | d in D| * |D|^(n-1), and we are done.

e.g. N = 34567, D = [1,2,8]

we can make:

  • X |3|^1
  • XX |3| ^ 2
  • XXX |3| ^ 3
  • XXXX |3| ^ 3
  • 1XXXX, |3|^4
  • 2XXXX, |3|^4
  • we can’t do 8XXXX

Total = (3^1 + 3^2 + 3^3 + 3^4) + 2 * |3|^ 4 = 120 + 162 = 282

N = 52525, D = [1,2,5]

However, if d = N[i], we need to check the next digit…

  • X |3|^1
  • XX |3| ^ 2
  • XXX |3| ^ 3
  • XXXX |3| ^ 3
  • 1XXXX, |3|^4
  • 2XXXX, |3|^4
  •  5????
    • 51XXX |3|^3
    • 52???
      • 521XX |3|^2
      • 522XX |3|^2
      • 525??
        • 5251X |3|^1
        • 5252?
          • 52521 |3|^0
          • 52522 |3|^0
          • 52525 +1

total = (120) + 2 * |3|^4 + |3|^3 + 2*|3|^2 + |3|^1 + 2 * |3|^0 + 1 = 120 + 213 = 333

if every digit of N is from D, then we also have a valid solution, thus need to + 1.

C++

Java

 

Python3