![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
Ivan-Zhang
这个作者很懒,什么都没留下…
展开
-
精选50题之 557. 反转字符串中的单词 III
腾讯精选练习(50 题)之 557. 反转字符串中的单词 III原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词...原创 2019-10-10 21:56:58 · 96 阅读 · 0 评论 -
精选50题之 206. 反转链表
腾讯精选练习(50 题)之 206. 反转链表原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?直接实现复杂度分析:时...原创 2019-09-24 22:32:06 · 117 阅读 · 0 评论 -
精选50题之 169. 求众数
腾讯精选练习(50 题)之 169. 求众数原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2直接实现...原创 2019-09-23 23:44:21 · 255 阅读 · 0 评论 -
精选50题之 160. 相交链表
腾讯精选练习(50 题)之 160. 相交链表原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3...原创 2019-09-22 22:11:32 · 110 阅读 · 0 评论 -
精选50题之 155. 最小栈
腾讯精选练习(50 题)之 155. 最小栈原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack ...原创 2019-09-22 20:36:37 · 105 阅读 · 0 评论 -
精选50题之 141. 环形链表
腾讯精选练习(50 题)之 141. 环形链表原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表...原创 2019-09-21 21:57:03 · 119 阅读 · 0 评论 -
精选50题之 136. 只出现一次的数字
腾讯精选练习(50 题)之 136. 只出现一次的数字原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]...原创 2019-09-21 20:27:22 · 104 阅读 · 0 评论 -
精选50题之 124. 二叉树中的最大路径和
腾讯精选练习(50 题)之 124. 二叉树中的最大路径和原题目链接题目分析解题分析代码实现其他方式写在最后原题目链接给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。题目分析涉及到搜索以及不同层结点值的比较,且父亲节点对应的值等于其左孩子和右孩子的数值的代数和。应该使用的是递归的思想。...原创 2019-09-20 22:54:25 · 171 阅读 · 0 评论 -
精选50题之 122. 买卖股票的最佳时机 II
腾讯精选练习(50 题)之 122. 买卖股票的最佳时机 II原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3...原创 2019-09-19 22:06:53 · 131 阅读 · 0 评论 -
精选50题之 121. 买卖股票的最佳时机
腾讯精选练习(50 题)之 121. 买卖股票的最佳时机原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 ...原创 2019-09-19 22:03:13 · 88 阅读 · 0 评论 -
精选50题之 89. 格雷编码
腾讯精选练习(50 题)之 89. 格雷编码原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2...原创 2019-09-19 21:56:09 · 205 阅读 · 0 评论 -
精选50题之 142. 环形链表 II
腾讯精选练习(50 题)之 142. 环形链表 II原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:...原创 2019-09-25 17:57:36 · 98 阅读 · 0 评论 -
精选50题之 146. LRU缓存机制
腾讯精选练习(50 题)之 146. LRU缓存机制原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(...原创 2019-09-28 21:29:10 · 129 阅读 · 0 评论 -
精选50题之 148. 排序链表
腾讯精选练习(50 题)之 148. 排序链表原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1-&g...原创 2019-09-28 23:13:26 · 85 阅读 · 0 评论 -
精选50题之 344. 反转字符串
腾讯精选练习(50 题)之 344. 反转字符串原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[...原创 2019-10-10 21:28:39 · 110 阅读 · 0 评论 -
精选50题之 292. Nim 游戏
腾讯精选练习(50 题)之 292. Nim 游戏原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: fal...原创 2019-10-10 21:05:13 · 107 阅读 · 0 评论 -
精选50题之 238. 除自身以外数组的乘积
腾讯精选练习(50 题)之 238. 除自身以外数组的乘积原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组output,其中 output[i]等于 nums中除 nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O...原创 2019-10-10 20:01:53 · 87 阅读 · 0 评论 -
精选50题之 237. 删除链表中的节点
腾讯精选练习(50 题)之 237. 删除链表中的节点原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定...原创 2019-10-10 17:02:33 · 104 阅读 · 0 评论 -
精选50题之 236. 二叉树的最近公共祖先
腾讯精选练习(50 题)之 236. 二叉树的最近公共祖先原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:...原创 2019-10-08 13:46:02 · 251 阅读 · 0 评论 -
精选50题之 235. 二叉搜索树的最近公共祖先
腾讯精选练习(50 题)之 原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6...原创 2019-10-06 22:16:22 · 267 阅读 · 0 评论 -
精选50题之 231. 2的幂
腾讯精选练习(50 题)之 231. 2的幂原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false直接实现复杂度分析:时间复...原创 2019-10-05 13:32:57 · 108 阅读 · 0 评论 -
精选50题之 230. 二叉搜索树中第K小的元素
腾讯精选练习(50 题)之 230. 二叉搜索树中第K小的元素原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \...原创 2019-10-04 21:23:19 · 174 阅读 · 0 评论 -
精选50题之 215. 数组中的第K个最大元素
腾讯精选练习(50 题)之 215. 数组中的第K个最大元素原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] ...原创 2019-10-02 00:16:33 · 101 阅读 · 0 评论 -
精选50题之 217. 存在重复元素
腾讯精选练习(50 题)之 217. 存在重复元素原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3...原创 2019-09-30 11:49:41 · 192 阅读 · 0 评论 -
精选50题之 104. 二叉树的最大深度
腾讯精选练习(50 题)之 104. 二叉树的最大深度原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:直接实现复杂度分析:时间复杂度:空间复杂度:题目分析解题分析代码实现复杂度分析:时间复杂度:空间复杂度:...原创 2019-09-18 01:26:40 · 97 阅读 · 0 评论 -
精选50题之 88. 合并两个有序数组
腾讯精选练习(50 题)之 88. 合并两个有序数组原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保...原创 2019-09-18 00:54:58 · 198 阅读 · 0 评论 -
精选50题之 20. 有效的括号
腾讯精选练习(50 题)之 20. 有效的括号原题目链接题目分析解题思路代码实现原题目链接给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}...原创 2019-09-03 20:26:06 · 95 阅读 · 0 评论 -
精选50题之 16. 最接近的三数之和
腾讯精选练习(50 题)之 16. 最接近的三数之和原题目链接题目分析解题思路代码实现原题目链接题目分析解题思路代码实现class Solution {public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(),nums.end()); ...原创 2019-09-03 19:37:27 · 98 阅读 · 0 评论 -
精选50题之 15. 三数之和
腾讯精选练习(50 题)之 15. 三数之和原题目链接题目分析解题思路代码实现原题目链接给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:...原创 2019-09-02 21:54:41 · 173 阅读 · 0 评论 -
精选50题之 14. 最长公共前缀
腾讯精选练习(50 题)之 14. 最长公共前缀原题目链接题目分析解题思路代码实现原题目链接编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说...原创 2019-09-01 16:13:39 · 154 阅读 · 0 评论 -
精选50题之 11. 盛最多水的容器
腾讯精选练习(50 题)之 11. 盛最多水的容器原题目链接直接尝试题目分析解题思路代码实现写在最后原题目链接给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少...原创 2019-09-01 13:16:03 · 135 阅读 · 0 评论 -
精选50题之 9. 回文数
腾讯精选练习(50 题)之 9. 回文数原题目链接题目分析解题思路代码实现写在最后原题目链接判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输...原创 2019-08-31 19:34:32 · 116 阅读 · 0 评论 -
精选50题之 8. 字符串转换整数 (atoi)
@[TOC](腾讯精选练习(50 题)之 8. 字符串转换整数 (atoi))原题目链接请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符...原创 2019-08-30 22:16:21 · 88 阅读 · 0 评论 -
精选50 题之 7. 整数反转
腾讯精选练习(50 题)之 7. 整数反转原题目链接题目分析解题思路代码实现优化原题目链接给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[-2ˆ31, 2ˆ31-...原创 2019-08-28 23:01:41 · 97 阅读 · 0 评论 -
精选50题之 5. 最长回文子串
腾讯精选练习(50 题)之 5. 最长回文子串原题目链接题目分析 v1.0解题思路 v1.0代码实现 v1.0题目分析 v2.0其他几种算法写在最后原题目链接给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”...原创 2019-08-27 22:56:28 · 135 阅读 · 0 评论 -
精选50题之 4. 寻找两个有序数组的中位数
腾讯精选练习(50 题)之 4. 寻找两个有序数组的中位数原题目链接题目分析解题思路代码实现另一种思路写在最后原题目链接给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [...原创 2019-08-27 00:13:39 · 107 阅读 · 0 评论 -
精选50题之 21. 合并两个有序链表
腾讯精选练习(50 题)之 21. 合并两个有序链表原题目链接题目分析解题思路代码实现另一种思路原题目链接将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题目分析链表合并,可以认为是元素之间重新连线,可...原创 2019-09-05 09:03:47 · 114 阅读 · 0 评论 -
精选50题之 23. 合并K个排序链表
腾讯精选练习(50 题)之 23. 合并K个排序链表原题目链接直接实现题目分析原题目链接合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6直接实现上一篇Blog 精选50题...原创 2019-09-06 14:02:37 · 124 阅读 · 0 评论 -
精选50题之 26. 删除排序数组中的重复项
腾讯精选练习(50 题)之 26. 删除排序数组中的重复项原题目链接题目分析解题分析代码实现写在最后原题目链接给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组...原创 2019-09-07 22:16:39 · 78 阅读 · 0 评论 -
精选50题之 78. 子集
腾讯精选练习(50 题)之 78. 子集原题目链接直接实现题目分析解题分析代码实现其他方式写在最后原题目链接给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]直接实现复杂...原创 2019-09-17 23:11:03 · 380 阅读 · 0 评论