![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
algo▪Tempest
一天亿点,法力无边
展开
-
257
二叉树的所有路径给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3class Solution {public: vector<string> binaryTreePat...原创 2020-02-29 20:29:09 · 160 阅读 · 0 评论 -
235
二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入...原创 2020-02-29 19:25:59 · 165 阅读 · 0 评论 -
226
翻转二叉树翻转一棵二叉树。示例:输入:输出:备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。/** * Definition for a binary tree node. * struct TreeNode { * int...原创 2020-02-29 18:46:45 · 106 阅读 · 0 评论 -
112
路径总和给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 ...原创 2020-02-29 18:36:34 · 146 阅读 · 0 评论 -
111
二叉树的最小深度给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7]返回2/** * Definition for a binary tree node. * struct TreeNode { * int val; * ...原创 2020-02-29 18:24:28 · 103 阅读 · 0 评论 -
110
平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]返回true/** * Definition for a binary tree node. * struct TreeNode { * int val...原创 2020-02-29 17:07:46 · 95 阅读 · 0 评论 -
107
二叉树的层次遍历 II给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7]/**Definition for a binary tree node.struct TreeNode {int val;struct TreeNode *left;s...原创 2020-02-29 16:31:25 · 85 阅读 · 0 评论 -
104
二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7]返回它的最大深度为3./** * Definition for a binary tree node. * struct TreeNode { * int val;...原创 2020-02-29 16:16:53 · 105 阅读 · 0 评论 -
102
二叉树的层次遍历给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7]返回其层次遍历结果:C++,应该是最短的代码了。层序遍历一般来说确实是用队列实现的,但是这里很明显用递归前序遍历就能实现呀,而且复杂度O(n)。。。要点有几个:利用depth变量记录当前在第几层(从0开始),进入下层时...原创 2020-02-29 16:05:43 · 135 阅读 · 0 评论 -
101
对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。/** * Definition for a binary tree node. * struct TreeNode { * ...原创 2020-02-29 14:57:03 · 216 阅读 · 1 评论 -
100
相同的树给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1/ 2...原创 2020-02-29 14:34:22 · 75 阅读 · 0 评论 -
232
用栈实现队列使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.po...原创 2020-02-27 20:38:40 · 89 阅读 · 0 评论 -
225
用队列实现栈使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或...原创 2020-02-27 20:00:46 · 132 阅读 · 0 评论 -
287
寻找重复数给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n...原创 2020-02-27 18:43:43 · 112 阅读 · 0 评论 -
237
删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9....原创 2020-02-27 16:45:25 · 87 阅读 · 0 评论 -
234
回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: trueint get_length(struct ListNode *head){ int n = 0; while(head){ n++; head = head->next; } retur...原创 2020-02-27 16:06:50 · 75 阅读 · 0 评论 -
206
反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *n...原创 2020-02-27 15:23:36 · 113 阅读 · 0 评论 -
203
移除链表元素删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5/** * Definition for singly-linked list. * struct ListNode { * int val; * ...原创 2020-02-27 15:06:40 · 75 阅读 · 0 评论 -
202
快乐数:编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 0...原创 2020-02-27 14:52:44 · 84 阅读 · 0 评论 -
142
环形链表二/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode *detectCycle(struct ListNode *head) { struct ListNode *...原创 2020-02-25 17:03:11 · 126 阅读 · 0 评论 -
160
相交链表/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode...原创 2020-02-25 16:41:47 · 76 阅读 · 0 评论 -
141
环形链表/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool hasCycle(struct ListNode *head) { struct ListNode *p = head, *q = h...原创 2020-02-25 16:10:17 · 76 阅读 · 0 评论 -
83
删除排序链表中的重复元素/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteDuplicates(struct ListNode* head){ stru...原创 2020-02-25 15:51:03 · 154 阅读 · 1 评论 -
24
两两交换链表中的节点/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* swapPairs(struct ListNode* head){ struct ListNo...原创 2020-02-25 15:06:05 · 99 阅读 · 0 评论 -
19
链表删除倒数第N个元素/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ ...原创 2020-02-25 14:47:29 · 83 阅读 · 0 评论 -
leetcode84
leetcode84转载 2020-02-14 22:30:27 · 70 阅读 · 0 评论 -
leecode42
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接:htt...原创 2020-02-14 21:58:45 · 104 阅读 · 0 评论 -
leetcode20
这道题利用栈的思想,进行括号匹配,现将基本的左括号类型push栈中,然后依照顺序对比右括号的类型,匹配成功则pop栈,最后检查栈是否为空,若非空,说明含有未成功匹配的括号。bool isValid(char * s){ if(!s || s[0] == "") return 1; char *stack = (char *)malloc(strlen(s)); int t...原创 2020-02-14 20:44:10 · 81 阅读 · 0 评论