Day 1 | 704. Binary Search | 27. Remove Element | 35. Search Insert Position | 34. First and Last Position of Element in Sorted Array
Day 2 | 977. Squares of a Sorted Array | 209. Minimum Size Subarray Sum | 59. Spiral Matrix II
Day 3 | 203. Remove Linked List Elements | 707. Design Linked List | 206. Reverse Linked List
Day 4 | 24. Swap Nodes in Pairs| 19. Remove Nth Node From End of List| 160.Intersection of Two Lists
Day 6 | 242. Valid Anagram | 349. Intersection of Two Arrays | 202. Happy Numbe | 1. Two Sum
Day 7 | 454. 4Sum II | 383. Ransom Note | 15. 3Sum | 18. 4Sum
Day 8 | 344. Reverse String | 541. Reverse String II | 替换空格 | 151.Reverse Words in a String | 左旋转字符串
Day 9 | 28. Find the Index of the First Occurrence in a String | 459. Repeated Substring Pattern
Day 10 | 232. Implement Queue using Stacks | 225. Implement Stack using Queue
Day 11 | 20. Valid Parentheses | 1047. Remove All Adjacent Duplicates In String | 150. Evaluate RPN
Day 13 | 239. Sliding Window Maximum | 347. Top K Frequent Elements
Day 14 | 144.Binary Tree Preorder Traversal | 94.Binary Tree Inorder Traversal| 145.Binary Tree Postorder Traversal
Day 15 | 102. Binary Tree Level Order Traversal | 226. Invert Binary Tree | 101. Symmetric Tree
Day 16 | 104.MaximumDepth of BinaryTree| 111.MinimumDepth of BinaryTree| 222.CountComplete TreeNodes
Day 17 | 110. Balanced Binary Tree | 257. Binary Tree Paths | 404. Sum of Left Leaves
Day 18 | 513. Find Bottom Left Tree Value | 112. Path Sum | 105&106. Construct Binary Tree
Day 20 | 654. Maximum Binary Tree | 617. Merge Two Binary Trees | 700.Search in a Binary Search Tree
Day 21 | 530. Minimum Absolute Difference in BST | 501. Find Mode in Binary Search Tree | 236. Lowes
Day 22 | 235. Lowest Common Ancestor of a BST | 701. Insert into a BST | 450. Delete Node in a BST
Day 23 | 669. Trim a BST | 108. Convert Sorted Array to BST | 538. Convert BST to Greater Tree
Day 24 | 77. Combinations
Day 25 | 216. Combination Sum III | 17. Letter Combinations of a Phone Number
Day 27 | 39. Combination Sum | 40. Combination Sum II | 131. Palindrome Partitioning
Day 28 | 93. Restore IP Addresses | 78. Subsets | 90. Subsets II
Day 29 | 491. Non-decreasing Subsequences | 46. Permutations | 47. Permutations II
Day 30 | 332. Reconstruct Itinerary | 51. N-Queens | 37. Sudoku Solver
Day 31 | 455. Assign Cookies | 376. Wiggle Subsequence | 53. Maximum Subarray
Day 32 | 122. Best Time to Buy and Sell Stock II | 55. Jump Game | 45. Jump Game II
Day 34 | 1005. Maximize Sum Of Array After K Negations | 134. Gas Station | 135. Candy
Day 35 | 860. Lemonade Change | 406. Queue Reconstruction by Height | 452. Minimum Number of Arrows
Day 36 | 435. Non-overlapping Intervals | 763. Partition Labels | 56. Merge Intervals
Directory
LeetCode 738. Monotone Increasing Digits
class Solution {
public int monotoneIncreasingDigits(int n) {
String s = String.valueOf(n);
char[] chars = s.toCharArray();
int start = s.length();
for(int i = s.length() - 2; i >= 0; i--){
if(chars[i] > chars[i+1]){
chars[i]--;
start = i + 1;
}
}
for(int i = start; i < s.length(); i++)
chars[i] = '9';
return Integer.parseInt(String.valueOf(chars));
}
}
- When meeting
chars[i - 1] > chars[i], letchars[i-1]--and setchars[i]as9. That can ensure these two digits become the largest monotone-increasing integers - The traverse order is
from back to front. Because if we traversefrom front to back, we can’t reuse the result of the last compare
LeetCode 714. Best Time to Buy and Sell Stock with Transaction Fee
class Solution {
public int maxProfit(int[] prices, int fee) {
int buy = prices[0] + fee;
int sum = 0;
for(int p : prices){
if(p + fee < buy)
buy = p + fee;
else if(p > buy){
sum += p - buy;
buy = p;
}
}
return sum;
}
}
LeetCode 968. BT Camera
class Solution {
int res = 0;
public int minCameraCover(TreeNode root) {
if(traverse(root) == 0)
res++;
return res;
}
int traverse(TreeNode root){
if(root == null)
return 2; // By default, empty nodes have coverage to avoid install cameras on the leaf
int left = traverse(root.left);
int right = traverse(root.right);
if(left == 2 && right == 2)
return 0;
else if(left == 0 || right == 0){
res++;
return 1;
}else
return 2;
}
}
- The status of nodes:
0means no coverage1means the node has the camera2means the node has coverage
- By default, empty nodes have coverage to avoid installing cameras on the leaf
该文详细记录了在LeetCode上的一系列算法题解,涉及股票的最大利润计算、保证单调递增数字的构建以及最小摄像头覆盖的二叉树问题。通过这些问题,展示了对数组、链表、二叉树结构的处理策略以及动态规划和深度优先搜索的应用。
398

被折叠的 条评论
为什么被折叠?



