当前位置:网站首页>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;
}
}
边栏推荐
- 弹性布局(一)
- 按键精灵采集学习-矿药采集及跑图
- How does an enterprise manage data? Share the experience summary of four aspects of data governance
- Pass parent component to child component: props
- leetcode 509. Fibonacci number
- How do I get the last part of a string- How to get the last part of a string?
- transform-origin属性详解
- Abnova immunohistochemical service solution
- 身边35岁程序员如何建立起技术护城河?
- 07_ Handout on the essence and practical skills of text measurement and geometric transformation
猜你喜欢
深度学习花书+机器学习西瓜书电子版我找到了
Composition API premise
MIPS uclibc cross compile ffmpeg, support g711a encoding and decoding
记一个并发规则验证实现
English translation is too difficult? I wrote two translation scripts with crawler in a rage
How does an enterprise manage data? Share the experience summary of four aspects of data governance
Stockage et pratique des données en langage C (haut niveau)
Example of Pushlet using handle of Pushlet
freeswitch拨打分机号源代码跟踪
Detailed explanation of neo4j installation process
随机推荐
Fullgc problem analysis and solution summary
Tumor immunotherapy research prosci Lag3 antibody solution
Sqlmap tutorial (IV) practical skills three: bypass the firewall
IP address
Reflection (II)
C language (high-level) data storage + Practice
按键精灵脚本学习-关于天猫抢红包
Differences between H5 architecture and native architecture
抽丝剥茧C语言(高阶)指针进阶练习
Tujia, muniao, meituan... Home stay summer war will start
Project practice five fitting straight lines to obtain the center line
Simple example of ros2 planning system plansys2
Nesting and splitting of components
Precise space-time travel flow regulation system - ultra-high precision positioning system based on UWB
Abnova circulating tumor DNA whole blood isolation, genomic DNA extraction and analysis
Communication of components
ROS2规划系统plansys2简单的例子
四、高性能 Go 语言发行版优化与落地实践 青训营笔记
2、 Concurrent and test notes youth training camp notes
Bi she - college student part-time platform system based on SSM