
Leetcode
yyyyyyyuande
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode 4. 寻找两个有序数组的中位数,c语言
leetcode上第四道题,如下。 给定两个大小为 m 和 n 的有序数组nums1 和nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。 你可以假设nums1和nums2不会同时为空。 题目很简洁,首先要搞懂中位数的概念,这玩意和平均数是有差别的。一开始我就搞错了,把中位数和平均数搞混了,结果做了半天结果越来越离谱。百度...原创 2019-10-30 17:20:38 · 788 阅读 · 1 评论 -
leetcode 450. 删除二叉搜索树中的节点 c语言实现
如题: 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 O(h),h 为树的高度。 示例: root = [5,3,6,2,4,null,7] key = ...原创 2019-10-30 17:31:15 · 786 阅读 · 0 评论 -
leetcode 106. 从中序与后序遍历序列构造二叉树 c语言递归解法
如题: 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder =[9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 这道题明显是有套路的,如果你还不会,说明你是第一次遇到,还好现在...原创 2019-10-30 17:31:09 · 1344 阅读 · 0 评论 -
leetcode 105. 从前序与中序遍历序列构造二叉树 c语言递归解法
如题: 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder =[3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 套路题,考察你有没有学习过这种题型。同样的问题还有知道中序与后序构造...原创 2019-10-30 17:26:08 · 760 阅读 · 0 评论 -
leetcode 703. 数据流中的第K大元素 最小堆解法 c语言
如题: 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。 你的KthLargest类需要一个同时接收整数k 和整数数组nums的构造器,它包含数据流中的初始元素。每次调用KthLargest.add, 返回当前数据流中第K大的元素。 示例: int k = 3; int[] arr = [4,5,8,2]; KthLargest k...原创 2019-10-30 17:25:42 · 624 阅读 · 0 评论 -
leetcode 136. 只出现一次的数字 c语言
题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例2: 输入: [4,1,2,1,2] 输出: 4 这道题如果没有时间复杂度或者空间复杂度,的确不复杂,通过对数组排序后,两两比较,如果存在不等,返回即...原创 2019-10-30 17:24:57 · 566 阅读 · 0 评论 -
leetcode 236. 二叉树的最近公共祖先 递归解法 c语言
如题: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x, 满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root =[3,5,1,6,2,0,8,null,null,7,4] 示例 1: 输入: root...原创 2019-10-30 17:26:15 · 1995 阅读 · 2 评论 -
Leetcode 70. 爬楼梯 动态规划 c语言
假设你正在爬楼梯。需要 n阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 1. 1 阶 + 1 阶 + 1 阶 2. 1 阶 +...原创 2019-10-30 17:26:42 · 820 阅读 · 0 评论 -
面试题leetcode 3. 无重复字符的最长子串 暴力法和滑动窗口解法
最初的思路遍历每个字符,找到以它开始的最长的子串。俗称暴力法,确实很暴力,时间复杂度达到O(n^3),唯一的好处是它能解决问题。暴力遍历法的大概流程是准备一个hash字符数组,然后遍历每个字符放到hash表里,有重复的则记录子串长度,然后重置hash表并从下一个字符开始。 滑动窗口解法时间复杂度可以达到O(n),相较于暴力法节省了不少,但其思路和暴力法却没有根本差异,都是遍历字符,难就难在不容易...原创 2019-10-30 17:19:30 · 920 阅读 · 0 评论 -
leetcode 101. 对称二叉树 递归解法 c语言
如题: 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 这道题刚开始想到的是使用队列+BFS,因为...原创 2019-10-30 17:26:04 · 526 阅读 · 0 评论 -
leetcode 98. 验证二叉搜索树 递归遍历左右子树和中序遍历 c语言解法
如题: 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例1: 输入: 2 / \ 1 3 输出: true 示例2: 输入: 5 / \ 1 4 / \ 3 6...原创 2019-10-30 17:25:15 · 919 阅读 · 0 评论 -
leetcode 5. 最长回文子串 暴力法、中心扩展算法、动态规划,马拉车算法(Manacher Algorithm)
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案 首先,看懂题目很重要!!!啥是回文? 把相同的词汇或句子 [1] ,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。 这道题对时间复杂度没有要求,可即便如此,刚开始还是毫无办法 ╮(...原创 2019-10-30 17:21:03 · 901 阅读 · 0 评论 -
leetcode 6 Z 字形变换 c代码
题目如下: 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN" 刚看到这道题的时候,动手在纸上画...原创 2019-10-30 17:24:04 · 450 阅读 · 0 评论 -
leetcode 349. 两个数组的交集 两种方案,c语言实现
如题: 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 属于简单类型,两种方案。 方案一:是使...原创 2019-10-30 17:25:04 · 2367 阅读 · 0 评论 -
leetcode 752. 打开转盘锁 c代码
先看题目: 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。 每个拨轮可以自由旋转:例如把 '9' 变为 '0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。 锁的初始数字为 '0000' ,一个代表四个拨轮的数字的字符串。 列表 deadends 包含了一组...原创 2019-10-30 17:24:13 · 792 阅读 · 0 评论 -
leetcode 200.岛屿数量 c代码
题目如下: 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它 是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例一: 输入: 11110 11010 11000 00000 输出: 1 示例二: 输入: 11000 11000 00100 00011 输出: 3 解法比较简单,遍历数组,遇到陆地1...原创 2019-10-30 17:24:21 · 3215 阅读 · 0 评论 -
leetcode 151. 翻转字符串里的单词 c代码 三种方案
如题: 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: "the sky is blue" 输出:"blue is sky the" 示例 2: 输入: " hello world! " 输出:"world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3: 输入: "a good example" 输...原创 2019-10-30 17:24:29 · 1259 阅读 · 0 评论 -
leetcode 279. 完全平方数 bfs广度优先解法 图解 动态规划解法 c代码
如题: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例1: 输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4. 示例 2: 输入: n = 13 输出: 2 解释: 13 = 4 + 9. 这道题和leetcode 752. 打开转盘锁类似,都可以使用广度优先搜索...原创 2019-10-30 17:24:42 · 853 阅读 · 0 评论 -
leetcode 739. 每日温度 单调栈解法和暴力法及其优化 c代码
如题: 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高, 请在该位置用0 来代替。 例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。 提示:气温 列表长度的范围是[1, 30000...原创 2019-10-30 17:24:51 · 696 阅读 · 0 评论 -
leetcode 454. 四数相加 II c语言
如题: 给定四个包含整数的数组列表A , B , C , D ,计算有多少个元组 (i, j, k, l),使得A[i] + B[j] + C[k] + D[l] = 0。 为了使问题简单化,所有的 A, B, C, D 具有相同的长度N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终 结果不会超过231 - 1 。 例如: 输入: A ...原创 2019-10-30 17:25:09 · 653 阅读 · 0 评论 -
面试题 合并两个有序链表
这道题常规解法有两种,可能还有其它。 解法1,设置指针 i, j 分别指向两个链表,比较 i, j 大小,小的先挂到新链表上,然后移动指针继续比较,直到某个链表走到最后,这时候把另一个链表剩余的全挂过去。 解法2, 使用递归方法,这个我一开始也没想到,方法也很简单,把合并两个链表为一个的过程看成是在两个链表中每次找出一个 最小值的过程。然后把这个最小值挂到prevNode->next指...原创 2019-10-30 17:19:15 · 528 阅读 · 0 评论