当前位置:网站首页>Leetcode sword finger offer brush questions - day 20
Leetcode sword finger offer brush questions - day 20
2022-07-07 07:31:00 【DEGv587】
Leetcode The finger of the sword Offer How to brush questions :
The finger of the sword Offer 07. Reconstruction of binary tree
Topic information : The results of preorder traversal and inorder traversal do not contain duplicate numbers
solution : Divide and conquer thoughts
class Solution {
int[] preorder;// Preserved preorder traversal
HashMap<Integer, Integer> map = new HashMap<>();// Tag middle order traversal
public TreeNode buildTree(int[] preorder, int[] inorder) {
this.preorder = preorder;
for (int i = 0; i < inorder.length; ++i) {
map.put(inorder[i], i);
}
return func(0, 0, inorder.length - 1);
}
private TreeNode func(int root, int left, int right) {
if (left > right) return null;
TreeNode node = new TreeNode(preorder[root]);// Establish root node
int i = map.get(preorder[root]);// Partition root node , Left and right subtrees
node.left = func(root + 1, left, i - 1);// Left subtree recursion
node.right = func(root + i - left + 1, i + 1, right);// Right subtree recursion
return node;
}
}
The finger of the sword Offer 16. Integer power of value
solution : Fast power
Stepwise decomposition
Even transformation , One more odd number for processing
2^10 = (2^5) * (2^5) = (4^2) * (4^2) * 4 = 16 * 16 * 4
class Solution {
public double myPow(double x, int n) {
if (x == 0) return 0;
long b = n;// To prevent cross-border
double ret = 1.0;
if (b < 0) {
x = 1 / x;
b = -b;
}
while (b > 0) {
if ((b & 1) == 1) {
// Deal with odd numbers
ret *= x;
}
x *= x;
b >>= 1;
}
return ret;
}
}
The finger of the sword Offer 33. The post order traversal sequence of binary search tree
Solution 1 : Recursive divide and conquer
Ergodic sequence ergodic [i, j] Interval elements , seek The first is larger than the root node The node of , The index is marked as m
postorder[j] Is the root node
Left subtree interval [i, m - 1] All nodes in the should < postorder[j]
Right subtree interval [m, j-1] All nodes in the should > postorder[j]
class Solution {
public boolean verifyPostorder(int[] postorder) {
return verifyHelp(postorder, 0, postorder.length - 1);
}
private boolean verifyHelp(int[] postorder, int i, int j) {
if (i >= j) return true;
int p = i;
while (postorder[p] < postorder[j]) {
// If it is smaller than the root node, continue to walk backwards
p++;
}
// Encounter the first value greater than the root node , Record as m
int m = p;
while (postorder[p] > postorder[j]) {
// If it is larger than the root node, continue to walk backwards
p++;
}
// Recursively divide and conquer left subtree and right subtree
return p == j && verifyHelp(postorder, i, m - 1) && verifyHelp(postorder, m, j - 1);
}
}
Solution 2 : Auxiliary monotone stack
class Solution {
public boolean verifyPostorder(int[] postorder) {
Stack<Integer> stack = new Stack<>();
int root = Integer.MAX_VALUE;
for (int i = postorder.length - 1; i >= 0; --i) {
// If the current node is larger than the root node , Then return directly false
if (postorder[i] > root) return false;
while (!stack.isEmpty() && stack.peek() > postorder[i]) {
// Find the parent node of the current node
root = stack.pop();
}
stack.add(postorder[i]);
}
return true;
}
}
边栏推荐
- Readonly read only
- How to * * labelimg
- Several important steps to light up the display
- Pass parent component to child component: props
- Blue Bridge Cup Netizen age (violence)
- freeswitch拨打分机号源代码跟踪
- 毕设-基于SSM大学生兼职平台系统
- Asynchronous components and suspend (in real development)
- $parent (get parent component) and $root (get root component)
- My ideal software tester development status
猜你喜欢
Convolutional neural network -- understanding of pooling
IP address
Kuboard无法发送邮件和钉钉告警问题解决
Reflection (II)
Circulating tumor cells - here comes abnova's solution
計算機服務中缺失MySQL服務
身边35岁程序员如何建立起技术护城河?
计算机服务中缺失MySQL服务
The annual salary of general test is 15W, and the annual salary of test and development is 30w+. What is the difference between the two?
Outsourcing for four years, abandoned
随机推荐
URP - shaders and materials - light shader lit
Abnova membrane protein lipoprotein technology and category display
Lm11 reconstruction of K-line and construction of timing trading strategy
Detailed explanation of neo4j installation process
Dynamics CRM server deployment - restore database prompt: the database is in use
Project practice five fitting straight lines to obtain the center line
组件的嵌套和拆分
Wechat applet full stack development practice Chapter 3 Introduction and use of APIs commonly used in wechat applet development -- 3.9 introduction to network interface (IX) extending the request3 met
Academic report series (VI) - autonomous driving on the journey to full autonomy
Flexible layout (I)
Advanced practice of C language (high level) pointer
I failed in the postgraduate entrance examination and couldn't get into the big factory. I feel like it's over
Summary of customer value model (RFM) technology for data analysis
Readonly read only
机器人技术创新与实践旧版本大纲
FPGA course: application scenario of jesd204b (dry goods sharing)
Le Service MySQL manque dans le service informatique
計算機服務中缺失MySQL服務
Introduction to abnova's in vitro mRNA transcription workflow and capping method
Circulating tumor cells - here comes abnova's solution