搜索
算法 搜索
free1993
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 34. 二叉树中和为某一值的路径
题目输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例代码class Solution {public: int target; vector<vector<int>> ans; void getPath(TreeNode * cur, vector<int> path, int curSum){ if(cur == NULL) retu原创 2021-06-23 17:08:49 · 70 阅读 · 0 评论 -
剑指 Offer 54. 二叉搜索树的第k大节点
题目给定一棵二叉搜索树,请找出其中第k大的节点。示例思路中序遍历代码/** * 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 {pu原创 2021-06-21 16:30:20 · 70 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围
题目地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?思路用广度优先搜索代码class Solution {public: int原创 2021-06-16 21:09:52 · 57 阅读 · 0 评论 -
leecode.301. 删除无效的括号
题目删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。说明: 输入可能包含了除 ( 和 ) 以外的字符。示例一输入: “()())()”输出: ["()()()", “(())()”]思路分析我们使用一个队列来存储键值对<string,int>,前面表示当前的字符串,后面表示已删除的字符的个数。我们按照层次遍历的思想按照BFS来遍历这个队列。取出队首元素,判断当前字符串是否合法,如果合法且小于全局的最小值,更新答案;如果和全局数值相等,说明当前是重复;否则,不原创 2021-01-12 18:27:09 · 91 阅读 · 0 评论 -
leecode.787. K 站中转内最便宜的航班
题目K 站中转内最便宜的航班有 n 个城市通过 m 个航班连接。每个航班都从城市 u 开始,以价格 w 抵达 v。现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到从 src 到 dst 最多经过 k 站中转的最便宜的价格。 如果没有这样的路线,则输出 -1。思路使用广度优先搜索,但是和普通的BFS有点不同,带有一点层次遍历。因为题目中要求最多是k站。队列里面存储的是(pos, cost)。pos代表的上一个节点的位置,cost表示的是当前花费。每次取队头元素,如原创 2020-12-19 13:30:41 · 91 阅读 · 1 评论