leetcode
algo▪Tempest
一天亿点,法力无边
展开
-
257
二叉树的所有路径 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输入: 输出: [“1->2->5”, “1->3”] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 class Solution { public: vector<string> binaryTreePat...原创 2020-02-29 20:29:09 · 174 阅读 · 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 · 185 阅读 · 0 评论 -
226
翻转二叉树 翻转一棵二叉树。 示例: 输入: 输出: 备注: 这个问题是受到 Max Howell 的 原问题 启发的 : 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。 /** * Definition for a binary tree node. * struct TreeNode { * int...原创 2020-02-29 18:46:45 · 120 阅读 · 0 评论 -
112
路径总和 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 ...原创 2020-02-29 18:36:34 · 158 阅读 · 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 · 120 阅读 · 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 · 108 阅读 · 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 · 97 阅读 · 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 · 114 阅读 · 0 评论 -
102
二叉树的层次遍历 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7] 返回其层次遍历结果: C++,应该是最短的代码了。 层序遍历一般来说确实是用队列实现的,但是这里很明显用递归前序遍历就能实现呀,而且复杂度O(n)。。。 要点有几个: 利用depth变量记录当前在第几层(从0开始),进入下层时...原创 2020-02-29 16:05:43 · 147 阅读 · 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 · 231 阅读 · 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 · 87 阅读 · 0 评论 -
232
用栈实现队列 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 示例: MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // 返回 1 queue.po...原创 2020-02-27 20:38:40 · 98 阅读 · 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 · 145 阅读 · 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 · 124 阅读 · 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 · 96 阅读 · 0 评论 -
234
回文链表 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true int get_length(struct ListNode *head){ int n = 0; while(head){ n++; head = head->next; } retur...原创 2020-02-27 16:06:50 · 83 阅读 · 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 · 124 阅读 · 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 · 86 阅读 · 0 评论 -
202
快乐数: 编写一个算法来判断一个数是不是“快乐数”。 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。 示例: 输入: 19 输出: true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 0...原创 2020-02-27 14:52:44 · 91 阅读 · 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 · 137 阅读 · 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 · 85 阅读 · 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 · 83 阅读 · 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 · 168 阅读 · 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 · 108 阅读 · 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 · 93 阅读 · 0 评论 -
leetcode84
leetcode84转载 2020-02-14 22:30:27 · 79 阅读 · 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 · 114 阅读 · 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 · 91 阅读 · 0 评论