![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷题
elsieyin
这个作者很懒,什么都没留下…
展开
-
K大元素
class Solution { public: // 将arr[l...mid]和arr[mid+1...r]两部分进行归并 void __merge(T arr[], int l, int mid, int r){ T aux[r-l+1]; for (int i = l ; i <= r ; i ++) aux[i...原创 2020-02-01 15:09:09 · 168 阅读 · 0 评论 -
26. 删除排序数组中的重复项
题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给...原创 2019-09-05 17:15:53 · 95 阅读 · 0 评论 -
4. 寻找两个有序数组的中位数
题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 示例 2: nums1 = [1, 2] nums2 = [3, 4] 则中位数是...原创 2019-09-05 14:56:37 · 132 阅读 · 0 评论 -
292. Nim 游戏
题目 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3...原创 2019-09-05 10:02:49 · 80 阅读 · 0 评论 -
146.LRU缓存机制
地址 用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。 写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用...原创 2019-09-05 09:41:39 · 91 阅读 · 0 评论 -
236. 二叉树的最近公共祖先
class Solution: def __init__(self): # Variable to store LCA node. self.ans = None def lowestCommonAncestor(self, root, p, q): """ :type root: TreeNode ...原创 2019-08-22 19:57:13 · 105 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
分析 节点 pp,qq 的最近公共祖先(LCA)是距离这两个节点最近的公共祖先节点。在这里 最近 考虑的是节点的深度。注意理解 最近 这个词的含义 注意:pp 和 qq 其中的一个在 LCA 节点的左子树上,另一个在 LCA 节点的右子树上。 也有可能是下面这种情况: 朴素的算法如下: 从根节点开始遍历树 如果节点 pp 和节点 qq 都在右子树上,那么以右孩子为根节点继续 1 的操作 如果...转载 2019-08-21 21:13:53 · 109 阅读 · 0 评论 -
104. 二叉树的最大深度
题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 class Solution { public int maxDepth(Tr...原创 2019-08-16 16:09:50 · 115 阅读 · 0 评论 -
136. 只出现一次的数字
题目地址 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 分析: 首先想到的是hash表,但空间复杂度是 O(n),不满足题目要求。因此想到位操作。 如果我们对 ...原创 2019-08-12 20:42:09 · 139 阅读 · 0 评论 -
78. Subsets子集
题目地址 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 分析 数据不含重复元素,题解也要求无重复组合。 1.回溯算法 f([1,2]) = [[...原创 2019-08-11 17:33:09 · 124 阅读 · 0 评论 -
230. 二叉搜索树中第K小的元素
题目 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 1 示例 2: 输入: root = [5,3,6,2,4,null,null,1],...原创 2019-08-19 16:09:41 · 149 阅读 · 0 评论 -
231. 2的幂Power of Two
题目 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: 20 = 1 示例 2: 输入: 16 输出: true 解释: 24 = 16 示例 3: 输入: 218 输出: false 分析 数字n若是2的次方,则一定满足以下条件: 二进制表示下,n最高位为1,其余所有位为0; 二进制表示下,n - 1最高位为0,其余所有位为1(除...原创 2019-08-14 09:35:39 · 138 阅读 · 0 评论 -
124. 二叉树中的最大路径和
题目 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出: 6 示例 2: 输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / ...原创 2019-08-18 17:46:04 · 81 阅读 · 0 评论 -
169. 求众数 Majority Element
题目 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 分析 解题关键 :众数 是大小为n的数组中出现次数大于 n/2 的元素。 暴力算法 遍历整个数组,然后用另一重循环统计每...原创 2019-08-13 16:46:50 · 143 阅读 · 0 评论