LeetCode 255. Verify Preorder Sequence in Binary Search Tree

原题链接在这里:https://leetcode.com/problems/verify-preorder-sequence-in-binary-search-tree/

题目:

Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary search tree.

You may assume each number in the sequence is unique.

Follow up:
Could you do it using only constant space complexity?

题解:

Method 1 利用stack模拟preorder. stack中放的是左子树. 遇到比stack top还要大, 说明遇到了以top 为root的右子树,把左子树连 & root 都pop出来. 

low是当前的lower bound, pop出来说明左边扫完了,不可能出现更小的了,所以更新low. 若是遇到比low还小就说明不是preorder.

Time Complexity: O(n). Space: O(logn).

 

Method 2 是在array本身上实现stack的功能.

index is initialized as -1, and assign the top of stack as preoder[++index]. But not initialize index as 0, and assignthe top of stack as preorder[index++].

Since every time, the top of stack is preorder[index]. If use index++, it is not the top of stack. Also there is chance of OutOfIndexException.

Time Complexity: O(n). Space: O(1).

AC Java:

 1 public class Solution {
 2     public boolean verifyPreorder(int[] preorder) {
 3         /*
 4         //Method 1
 5         int low = Integer.MIN_VALUE;
 6         Stack<Integer> stk = new Stack<Integer>();
 7         for(int num : preorder){
 8             if(num < low){
 9                 return false;
10             }
11             while(!stk.isEmpty() && stk.peek() < num){
12                low = stk.pop();
13             }
14             stk.push(num);
15         }
16         return true;
17         */
18         int index = -1;
19         int low = Integer.MIN_VALUE;
20         for(int num : preorder){
21             if(num < low){
22                 return false;
23             }
24             while(index >= 0 && preorder[index] < num){
25                 low = preorder[index--];
26             }
27             preorder[++index] = num;
28         }
29         return true;
30     }
31 }

 

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/5327638.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV中HoughLinesP( )检测直线函数返回的坐标的原点

习惯中坐标的原点是在左下角的&#xff0c;向右为x轴正方向&#xff0c;向上为y轴正方向 HoughLinesP( )函数用于检测二值图中的直线&#xff0c;返回的坐标为&#xff08;x1&#xff0c;y1&#xff0c;x2&#xff0c;y2&#xff09;&#xff0c;分别代表直线两端的坐标&#…

Halcon算子学习:smooth_object_model_3d

smooth_object_model_3d ( : : ObjectModel3D, Method, GenParamName, GenParamValue : SmoothObjectModel3D) 平滑3D对象模型的3D点 输入&#xff1a; object_model_3d&#xff08;input_control&#xff09; 包含3D点数据的3D对象模型的句柄。Method&#xff08;input_con…

机器人巨头争霸,谁主沉浮?

来源&#xff1a;高工机器人过去以来&#xff0c;ABB、发那科、安川、库卡这四家机器人巨头独霸中国一半以上的市场份额。但这一情况开始逆转&#xff0c;本土企业在被外企“教育”了多年之后&#xff0c;开始用更大的勇气和更快的创新速度给以“老师”们迎头痛击。2019年&…

MATLAB使用imshow之后plot的坐标原点在左上角!

在MATLAB使用imshow显示一张图后&#xff0c;如果继续在这张图中使用plot画图&#xff0c;则此时坐标原点换到了左上角&#xff0c;不再是左下角了&#xff0c;如下面的例子&#xff1a; figure(1); imshow(K) hold on plot(x,y) %此时原点在左上角

Halcon算子学习:create_surface_model

create_surface_model ( : : ObjectModel3D, RelSamplingDistance, GenParamName, GenParamValue : SurfaceModelID) 创建执行基于表面的匹配所需的数据结构 输入&#xff1a; object_model_3d 3D对象模型的句柄。RelSamplingDistance (input_control) real→(real) 相对于物…

任正非:5G独立组网全世界只有华为一家做好了 我们在等待高通进步

任正非来源&#xff1a; TechWeb华为创始人、CEO任正非7月18日在广东接受了意大利媒体的采访。近日&#xff0c;华为在心声社区公布了这次采访的圆桌纪要。在回答意大利媒体记者的提问中&#xff0c;任正非表示&#xff1a;“国际媒体对华为几乎都是负面报道&#xff0c;因为他…

MATLAB判断文件是否存在、删除文件

MATLAB判断文件是否存在&#xff1a; exist(output.txt,file) 如果output.txt存在&#xff0c;返回2&#xff0c;若不存在返回0 MATLAB删除文件&#xff1a; delete(output.txt);

Halcon算子学习:find_surface_model

find_surface_model ( : : SurfaceModelID, ObjectModel3D, RelSamplingDistance, KeyPointFraction, MinScore, ReturnResultHandle, GenParamName, GenParamValue : Pose, Score, SurfaceMatchingResultID) 在3D场景中找到一个表面模型的最佳匹配。 输入&#xff1a; Surf…

遗传算法学习笔记(一):常用的选择策略

简述 遗传算法(GA)是一种模拟生物进化自然选择过程的非确定性搜索方法&#xff0c;源于达尔文的进化论和孟德尔的遗传定律&#xff0c;由美国 Michigan 大学的 Holland教授在 20 世纪 70 年代首先提出。生物理论指出&#xff0c; 生物个体的各种生命表征是由许多基因共同决定的…

Nature指明大脑引流“废液”的确切路径

来源&#xff1a;中国生物技术网多年来&#xff0c;科学家们一直认为大脑中缺少淋巴系统&#xff0c;从而引发了液体、大分子和免疫细胞是如何被清除出去的问题。2015年&#xff0c;有两项小鼠研究证实&#xff0c;脑膜&#xff08;保护大脑并维持其形状的覆盖物&#xff09;的…

Halcon算子学习:distance_object_model_3d

distance_object_model_3d ( : : ObjectModel3DFrom, ObjectModel3DTo, Pose, MaxDistance, GenParamName, GenParamValue : ) 计算一个3D对象模型到另一个3D对象模型的点的距离。 输入&#xff1a; object_model_3d→(整数) 源3D对象模型的句柄。ObjectModel3DTo 目标3D对象…

js的工作原理

JavaScript就是所谓的客户端脚本语言&#xff0c;是一种在互联网浏览器&#xff08;浏览器也称为Web客户端&#xff0c;因为它连接到Web服务器上&#xff0c;以下载页面&#xff09;内部运行的计算机编程语言。 也就是说&#xff0c;如果一个网页里有js代码&#xff0c;那么&am…

MATLAB判断数据是否为NaN

MATLAB判断数据是否为NaN可以直接使用函数isnan()

郭仁忠院士:新城市科学认知与智慧城市建设

来源&#xff1a; 慧天地张亚勤、刘慈欣、周鸿祎、王飞跃、约翰.翰兹联合推荐这是一部力图破解21世纪前沿科技大爆发背后的规律与秘密&#xff0c;深度解读数十亿群体智能与数百亿机器智能如何经过50年形成互联网大脑模型&#xff0c;详细阐述互联网大脑为代表的超级智能如何深…

unity 面试题

今天这套笔试题感觉做得一般。 随后是二对一的技术面试&#xff0c;但涉及的技术细节相对较少&#xff0c;很多其它的是对曾经工作、项目经历的询问。 然后说今天先到这里。让我等通知。我还特意问了一下&#xff0c;通知大概要多久&#xff0c;他们说这个得看hr&#xff0c;他…

MATLAB把多行多列矩阵数据和文字写入txt文件

效果&#xff1a; 代码&#xff1a; a[1,2,3;4,5,6;7,8,9] [m,~]size(a) fidfopen(a.txt,w); fprintf(fid,第一列\t第二列\t第三列\r\n); for i1:m fprintf(fid,%d\t%d\t%d\r\n,a(i,:)); end fclose(fid);

数字图像处理:视觉系统中的坐标系介绍

参考&#xff1a; 图像坐标系、摄像机坐标系与世界坐标系四个坐标系简介和转换世界坐标、相机坐标、图像坐标、像素坐标的原理、关系&#xff0c;并用matlab仿真 1、像素坐标系(Pixel coordinate system)&#xff08;二维坐标系&#xff09; 摄像机采集的数字图像在计算机内…

图灵机与控制论之分歧,一切为了人类心智的荣耀!

来源&#xff1a;新智元作者&#xff1a;李力、郑南宁、王飞跃编辑&#xff1a;小芹【导读】图灵和维纳的思想都对人工智能的研究之路产生了重要影响&#xff0c;本文讨论了AI发展过程中的主要困难&#xff0c;特别是解释了图灵的人工智能方法和维纳的人工智能方法之间的关键区…

PyQt4重写事件处理方法

PyQt中的事件处理主要以来重写事件处理函数来实现。 #!/usr/bin/python # -*- coding: utf-8 -*-import sys from PyQt4 import QtGui, QtCore class Escape(QtGui.QWidget):def __init__(self, parent None):QtGui.QWidget.__init__(self)self.setWindowTitle(escape)self.re…