【每日一算法】两数之和 IV - 输入 BST
微信改版,加星标不迷路!
每日一算法-两数之和IV-输入BST
作者:阿广
阅读目录
1 题目
2 解析
1 题目
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
案例 1:
输入: 5/ \3 6/ \ \ 2 4 7Target = 9输出: True
案例 2:
输入: 5/ \3 6/ \ \ 2 4 7Target = 28输出: False
2 解析
由于给定的input是bst,采用中序遍历便可以得到由小到大排序的数列(其实解法和哪种遍历没有关系,因为我是采用哈希表来做的),把每次读进来的值判断在哈希表中是否存在k-input_value,如果存在,返回true,否则存到哈希表中。
这里采用了“剪枝”的思想,即如果找到即可返回,不在继续搜索,通过flag标志来判断。
2.1采用中序遍历得到由小到大排序的数列
bool bst(TreeNode* root,int k, set<int>& se){ if(root == NULL){ //... } if(se.find(k - root->val) != se.end()){ //... } return bst(root->left,k,se) || bst(root->right,k,se); }
2.2把每次读进来的值判断在哈希表中是否存在k-input_value,如果存在,返回true,否则存到哈希表中。
//如果为空if(root == NULL){ return false;}//如果存在if(se.find(k - root->val) != se.end()){ return true;}//插入保存se.insert(root->val);//递归return bst(root->left,k,se) || bst(root->right,k,se);
完整代码
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool findTarget(TreeNode* root, int k) { set<int> se; return bst(root,k,se); }
bool bst(TreeNode* root,int k, set<int>& se){ if(root == NULL){ return false; } if(se.find(k - root->val) != se.end()){ return true; } se.insert(root->val); return bst(root->left,k,se) || bst(root->right,k,se); }};
今日问题
元旦快乐哈!
分析结果和的预期相符吗?
你心中的女神又是谁?
打卡格式:打卡第n天,答:...
为什么打卡?戳下面你就知道了!
猛
戳
这
儿
21/天/养/一/个/好/习/惯
【每日一算法】两数之和 IV - 输入 BST相关推荐
- 两数之和 IV - 输入 BST
两数之和 IV - 输入 BST 题目 两数之和 IV - 输入 BST(力扣:653) 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. ...
- LeetCode 653. 两数之和 IV - 输入 BST(二叉搜索树迭代器双指针)
文章目录 1. 题目 2. 解题 1. 题目 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. 案例 1: 输入: 5/ \3 6/ \ ...
- 力扣题目——653. 两数之和 IV - 输入 BST
注:本文的实现思路主要是基于JS(JavaScript),涉及到的一些函数都是JS中的自带函数 题目描述 给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给 ...
- LeetCode简单题之两数之和 IV - 输入 BST
题目 给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. 示例 1: 输入: root = [5,3,6,2,4,null, ...
- LeetCode(653)——两数之和 IV - 输入 BST(JavaScript)
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. 示例1: 输入: 输出: True 示例2: 输入: 输出: False /*** De ...
- 算法-----两数之和 II - 输入有序数组
题目 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值.numbers ...
- C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4098 访问. 给定一个二叉搜索树和一个目标结果,如果 BST 中 ...
- c++两个数组对比去掉重复的元素_LeetCode 题解 | 167.两数之和 II 输入有序数组...
点击上方蓝字设为星标 下面开始今天的学习- 力扣 167.两数之和 II - 输入有序数组(点击文末阅读原文查看题目)题目描述 给定一个已按照 升序排列 的有序数组,找到两个数使得它们相加之和等于目标 ...
- leetcode 两数相加c++_167. 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1和 index2,其中 index1必须小 ...
最新文章
- C# 视频监控系列(2):客户端——封装API
- 1.2.6 错题整理(组成原理)
- webrtc回声消除线程android,android WebRTC 示例demo源码(回音消除)
- servlet学习笔记二
- CSS的样式小计(1)
- MySql access denied for user错误
- NanoPi M1 Plus:Allwinner H3 搭建编译环境、编译主线Uboot、编译主线Linux Kernel 4.14、加Matrix2‘8屏、加Qt
- 怎样在计算机桌面上安装驱动器,驱动安装好了却不知该怎么查看 如何找到驱动安装的位置 - 驱动管家...
- Java多线程实现多用户与服务端Socket通信
- 什么是生物质发电?生物质发电有哪些方法?
- transforms常用函数简介
- MY-IKuai-2
- 谷歌浏览器如何正确安装第三方已被停用的扩展插件
- nodejs+vue 蛋糕甜品商城系统
- 2022-2028全球植物生长帐篷行业调研及趋势分析报告
- ORA-01012: not logged on处理
- SVG文档:使用SVG 编程(转自IBM文档库)
- js中常见的Json解析
- J2EE架构师[转]
- 将图片转换成svg文件,自定义icon小图标,svg速成
热门文章
- android 7.0 短信监控,Android 7.0 监听网络变化的示例代码
- 红帽、Docker、SUSE 在俄罗斯停服
- 知乎 CTO 李大海:创业公司如何拥抱开源
- 与AMD合并后,赛灵思与英特尔、英伟达在数据中心市场呈“三足鼎立”之势
- BAT新风向标:程序员有福利了!
- MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020
- 《评人工智能如何走向新阶段》后记(再续27)
- 港科大谢丹阳教授问诊未来,预测长远趋势与转折点
- 那个曾经为美国NASA开发火星大脑的AI公司,现在和华为合作了
- 今晚8点直播 | 美团是怎么玩儿AI的?大牛揭秘美团超大规模数据集——美团大脑