LeetCode
ysl_ysl123
这个作者很懒,什么都没留下…
展开
-
为运算表达式设计优先级
题目描述给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: “2-1-1”输出: [0, 2]解释:((2-1)-1) = 0(2-(1-1)) = 2示例 2:输入: “2* 3-4* 5”输出: [-34, -14, -10, -10, 10]解释...原创 2019-08-28 16:22:25 · 326 阅读 · 0 评论 -
LRU缓存机制
题目描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最...原创 2019-08-01 17:45:39 · 227 阅读 · 0 评论 -
迭代实现二叉树先序、中序、后序遍历(c++)
树的定义/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */...原创 2019-08-01 17:16:01 · 403 阅读 · 0 评论 -
单词拆分
题目描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可...原创 2019-08-01 16:44:06 · 127 阅读 · 0 评论 -
求众数
题目描述给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority-e...原创 2019-08-08 09:50:46 · 123 阅读 · 0 评论 -
克隆图
题目描述给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(Int) 和其邻居的列表(list[Node])。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/clone-graph著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路深拷贝即复制原图中的结点和结点之间的边...原创 2019-08-01 11:47:17 · 271 阅读 · 0 评论 -
二进制位操作
二进制操作二进制中1的个数输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路1用count记录n中1的个数。判断此时n的最后一位是否为1,如果是count加1,否则不加,然后n右移一位,直至等于0为止。这种思路只有在n>0的时候可以。当n<0时,n每次右移最高位补1而不是0(n>0时右移最高位补0),最终陷入死循环。class Solution {...原创 2019-05-23 11:04:39 · 489 阅读 · 0 评论 -
乘积最大子序列
题目描述给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。来源:力扣(LeetCode)链接:https://leetcode-cn.com...原创 2019-08-05 09:27:32 · 165 阅读 · 0 评论 -
有序数组、链表转换二叉搜索树
有序数组转换二叉搜索树题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree著作权归领扣网络所...原创 2019-07-23 10:56:04 · 158 阅读 · 0 评论 -
恢复二叉搜索树
题目描述二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/recover-binary-search-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路二叉搜索树中序遍历是一个有序序列。交换其中两个节点相当于在有序序列中交换了...原创 2019-07-22 14:59:48 · 185 阅读 · 0 评论 -
买卖股票的最佳时机
题目描述给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获...原创 2019-07-26 09:32:18 · 143 阅读 · 0 评论 -
分发糖果
题目描述老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例 2...原创 2019-07-30 11:35:25 · 241 阅读 · 0 评论 -
阶乘后的零
题目描述给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/factorial...原创 2019-08-08 11:14:30 · 119 阅读 · 0 评论 -
最大间距
题目描述给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例 1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例 2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明:你可以假设数组中所有元...原创 2019-08-07 10:31:28 · 148 阅读 · 0 评论 -
分数到小数
题目描述给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。示例 1:输入: numerator = 1, denominator = 2输出: “0.5”示例 2:输入: numerator = 2, denominator = 1输出: “2”示例 3:输入: nume...原创 2019-08-07 10:45:57 · 283 阅读 · 0 评论 -
二叉树的最近公共祖先
题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,...原创 2019-08-26 10:47:59 · 198 阅读 · 0 评论 -
实现 Trie (前缀树)
题目描述实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple”); // 返回 truetrie.search(“app”); // 返回 falsetrie.startsWith(“ap...原创 2019-08-13 10:52:23 · 105 阅读 · 0 评论 -
数组中的第K个最大元素(TopK问题)
题目描述在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。来源:力扣(LeetCode)...原创 2019-08-15 16:46:31 · 4229 阅读 · 0 评论 -
最短回文串
题目描述给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。示例 1:输入: “aacecaaa”输出: “aaacecaaa”示例 2:输入: “abcd”输出: “dcbabcd”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shortest-palindrome...原创 2019-08-15 16:45:49 · 1523 阅读 · 0 评论 -
完全二叉树的节点个数
题目描述给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-complet...原创 2019-08-19 17:15:01 · 313 阅读 · 0 评论 -
打家劫舍 II
题目描述你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释...原创 2019-08-14 15:43:17 · 87 阅读 · 0 评论 -
最大正方形
题目描述在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximal-square著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明...原创 2019-08-19 11:46:27 · 136 阅读 · 0 评论 -
存在重复元素 III
题目描述给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。示例 1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2:输入: nums = [1,0,1,1], k = 1, t = 2输出: true示例 3:...原创 2019-08-19 11:29:22 · 102 阅读 · 0 评论 -
天际线问题
题目描述城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。现在,假设您获得了城市风光照片(图A)上显示的所有建筑物的位置和高度,请编写一个程序以输出由这些建筑物形成的天际线(图B)。每个建筑物的几何信息用三元组 [Li,Ri,Hi] 表示,其中 Li 和 Ri 分别是第 i 座建筑物左右边缘的 x 坐标,Hi 是其高度。可以保证 0 ≤ Li, Ri ≤ INT_MAX, 0 ...原创 2019-08-19 11:15:43 · 348 阅读 · 0 评论 -
重复的DNA序列
题目描述所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来查找 DNA 分子中所有出现超多一次的10个字母长的序列(子串)。示例:输入: s = “AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”输出: [“AAAAACCCCC”, “CCC...原创 2019-08-09 11:24:36 · 654 阅读 · 0 评论 -
最大数
题目描述给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-number著作权...原创 2019-08-09 11:13:24 · 126 阅读 · 0 评论 -
加油站
题目描述在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的...原创 2019-07-30 11:16:38 · 181 阅读 · 0 评论 -
单词接龙
题目描述给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 ...原创 2019-07-30 10:56:00 · 151 阅读 · 0 评论 -
扰乱字符串
题目描述给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树。下图是字符串 s1 = “great” 的一种可能的表示形式。在扰乱这个字符串的过程中,我们可以挑选任何一个非叶节点,然后交换它的两个子节点。例如,如果我们挑选非叶节点 “gr” ,交换它的两个子节点,将会产生扰乱字符串 “rgeat” 。我们将 "rgeat” 称作 “great” 的一个...原创 2019-07-17 18:05:17 · 241 阅读 · 0 评论 -
实现strStr()(KMP解法)
题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle =...原创 2019-06-24 17:09:55 · 426 阅读 · 0 评论 -
最长有效括号
题目描述给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-valid-...原创 2019-06-26 10:57:52 · 2114 阅读 · 1 评论 -
三数之和
题目描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]来源:力扣(LeetCode...原创 2019-06-18 11:08:44 · 107 阅读 · 0 评论 -
无重复字符的最长子串
题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “w...原创 2019-06-12 11:50:01 · 121 阅读 · 0 评论 -
下一个排列
题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1来源:力扣(LeetCode)链接:https:...原创 2019-06-25 16:29:30 · 109 阅读 · 0 评论 -
盛最多水的容器
题目描述给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。示例:输入: [1,8,6,2,5,4,8,3,7]输出: 49来源:力扣(LeetC...原创 2019-06-17 11:01:06 · 94 阅读 · 0 评论 -
正则表达式匹配
题目描述请实现一个函数用来匹配包括’.‘和’*‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配思路1、首先考虑字符串与模式串中有空串的情况:a.当字符串和模式串都为空的时候,说明匹配完成...原创 2019-06-03 20:07:05 · 259 阅读 · 0 评论 -
链表相关问题
链表中的倒数第k个结点输入一个链表,输出该链表中倒数第k个结点。思路在牛客网上看到一个很巧妙的方法。设置两个指针p,q。其中q先移动k-1步,然后p和q一起往后移,直至q移动到链表末尾。此时p指向的元素即为倒数第k个元素。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), ...原创 2019-05-23 16:43:38 · 130 阅读 · 0 评论 -
两两交换链表中的节点
题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs著作权归领扣...原创 2019-06-20 17:12:36 · 97 阅读 · 0 评论 -
括号生成
题目描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/generate-parentheses著作权归...原创 2019-06-19 22:00:01 · 116 阅读 · 0 评论 -
整数反转
题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetC...原创 2019-06-13 15:45:08 · 110 阅读 · 0 评论