微信改版,加星标不迷路!

每日一算法-两数之和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相关推荐

  1. 两数之和 IV - 输入 BST

    两数之和 IV - 输入 BST 题目 两数之和 IV - 输入 BST(力扣:653) 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. ...

  2. LeetCode 653. 两数之和 IV - 输入 BST(二叉搜索树迭代器双指针)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. 案例 1: 输入: 5/ \3 6/ \ ...

  3. 力扣题目——653. 两数之和 IV - 输入 BST

    注:本文的实现思路主要是基于JS(JavaScript),涉及到的一些函数都是JS中的自带函数 题目描述 给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给 ...

  4. LeetCode简单题之两数之和 IV - 输入 BST

    题目 给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. 示例 1: 输入: root = [5,3,6,2,4,null, ...

  5. LeetCode(653)——两数之和 IV - 输入 BST(JavaScript)

    给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. 示例1: 输入: 输出: True 示例2: 输入: 输出: False /*** De ...

  6. 算法-----两数之和 II - 输入有序数组

    题目 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值.numbers ...

  7. C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4098 访问. 给定一个二叉搜索树和一个目标结果,如果 BST 中 ...

  8. c++两个数组对比去掉重复的元素_LeetCode 题解 | 167.两数之和 II 输入有序数组...

    点击上方蓝字设为星标 下面开始今天的学习- 力扣 167.两数之和 II - 输入有序数组(点击文末阅读原文查看题目)题目描述 给定一个已按照 升序排列 的有序数组,找到两个数使得它们相加之和等于目标 ...

  9. leetcode 两数相加c++_167. 两数之和 II - 输入有序数组

    167. 两数之和 II - 输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1和 index2,其中 index1必须小 ...

最新文章

  1. C# 视频监控系列(2):客户端——封装API
  2. 1.2.6 错题整理(组成原理)
  3. webrtc回声消除线程android,android WebRTC 示例demo源码(回音消除)
  4. servlet学习笔记二
  5. CSS的样式小计(1)
  6. MySql access denied for user错误
  7. NanoPi M1 Plus:Allwinner H3 搭建编译环境、编译主线Uboot、编译主线Linux Kernel 4.14、加Matrix2‘8屏、加Qt
  8. 怎样在计算机桌面上安装驱动器,驱动安装好了却不知该怎么查看 如何找到驱动安装的位置 - 驱动管家...
  9. Java多线程实现多用户与服务端Socket通信
  10. 什么是生物质发电?生物质发电有哪些方法?
  11. transforms常用函数简介
  12. MY-IKuai-2
  13. 谷歌浏览器如何正确安装第三方已被停用的扩展插件
  14. nodejs+vue 蛋糕甜品商城系统
  15. 2022-2028全球植物生长帐篷行业调研及趋势分析报告
  16. ORA-01012: not logged on处理
  17. SVG文档:使用SVG 编程(转自IBM文档库)
  18. js中常见的Json解析
  19. J2EE架构师[转]
  20. 将图片转换成svg文件,自定义icon小图标,svg速成

热门文章

  1. android 7.0 短信监控,Android 7.0 监听网络变化的示例代码
  2. 红帽、Docker、SUSE 在俄罗斯停服
  3. 知乎 CTO 李大海:创业公司如何拥抱开源
  4. 与AMD合并后,赛灵思与英特尔、英伟达在数据中心市场呈“三足鼎立”之势
  5. BAT新风向标:程序员有福利了!
  6. MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020
  7. 《评人工智能如何走向新阶段》后记(再续27)
  8. 港科大谢丹阳教授问诊未来,预测长远趋势与转折点
  9. 那个曾经为美国NASA开发火星大脑的AI公司,现在和华为合作了
  10. 今晚8点直播 | 美团是怎么玩儿AI的?大牛揭秘美团超大规模数据集——美团大脑