![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
文章平均质量分 50
Satisfying
#自律女孩养成记#
#立刻行动派#
外表平静似水,内心坚定如刚。
展开
-
【20190306】【每天一道算法题】移除元素
问题:给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。首先谈下我的看法:我的思路是,对于val=2,而nums[8]={0,1,2,2,3,0,4,2}这样的情...原创 2019-03-06 21:10:23 · 244 阅读 · 0 评论 -
【20190425】【每天一道算法题】对称二叉树(广度优先搜索)
问题:思路及代码:原创 2019-04-26 18:50:15 · 164 阅读 · 1 评论 -
【20191216】【每天一道算法题】棒球比赛(栈)
问题你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2. "+"(一轮的得分):表示本轮获得的得分是前两轮有效回合得分的总和。3. "D"(一轮的得分):表示本轮获得的得分是前一轮有效回合得分的两倍。4. "C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效回合的分数是无效...原创 2019-12-16 19:15:50 · 299 阅读 · 0 评论 -
【20191217】【每天一道算法题】用队列实现栈(双队列)
问题使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back, peek/pop from front, size, 和is empty这些操作是合法的。你所使用的语言也许不支持队列。你可以使用 ...原创 2019-12-17 14:02:32 · 142 阅读 · 0 评论 -
【20190407】【每天一道算法题】字母大小全排列(递归)
问题:给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。示例:输入: S = "a1b2"输出: ["a1b2", "a1B2", "A1b2", "A1B2"]输入: S = "3z4"输出: ["3z4", "3Z4"]输入: S = "12345"输出: ["12345"]注意:S的长度...原创 2019-04-12 10:26:07 · 463 阅读 · 0 评论 -
【20200327】【每天一道算法题】杨辉三角Ⅱ(数组、动态规划、杨辉三角通项公式)
题给定一个非负索引k,其中 k≤33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3,输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?思路及代码# 方法一:动态规划# 思路:每一行第一个元素为1,最后一个元素为1,其余用公式dp[i][j] = dp[i-1][j-1]+dp[i-1][...原创 2020-03-27 23:01:23 · 1131 阅读 · 0 评论 -
【20190908】【每天一道算法题】验证回文串(双指针)
问题给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama",输出: true示例 2:输入: "race a car",输出: false思路及解答# 方法一:滤除数字、字母以外的字符,再比较输出# 时间复杂...原创 2019-09-08 18:30:39 · 204 阅读 · 0 评论 -
【20190830】【每天一道算法题】使用最小花费爬楼梯(动态规划)
问题数组的每个索引做为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例1:输入: cost = [10, 15, 20],输出: 15解释: 最低花费是从c...原创 2019-08-30 14:49:29 · 401 阅读 · 2 评论 -
【20190709】【每天一道算法题】最小栈(栈)
问题设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。pop()-- 删除栈顶的元素。top()-- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minSta...原创 2019-07-09 19:10:02 · 150 阅读 · 0 评论 -
【20200326】【每天一道算法题】找到所有数组中消失的数字(数组)
问题给定一个范围在1 ≤ a[i] ≤ n (n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]思路及代码...原创 2020-03-26 13:38:29 · 199 阅读 · 0 评论 -
【20190515】【每天一道算法题】两句话中的不常见单词(哈希表)
问题给定两个句子A和B。(句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。返回所有不常用单词的列表。您可以按任何顺序返回列表。示例 1:输入:A = "this apple is sweet", B = "this apple is sour",输出:["sweet"...原创 2019-05-15 16:51:18 · 216 阅读 · 0 评论 -
【20190317】【每天一道算法题】最大子序和(动态规划)
问题:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。我的解答:/*DP:首先定义我们想要的(也就是最大值)初始值,然后多次迭代,每次迭代之后判断是否要更新目标值。“连续”要求要求相邻元素的和, 如果一个值累加它后面一个值之后变小了,那...原创 2019-03-18 10:32:49 · 196 阅读 · 0 评论 -
【20200403】【每天一道算法题】从两个表中查询符合条件的学生名字,并按数学成绩降序排序
问题两个表studentID和teacherMangeStudentID对应的,也就是说Ace老师有两个学生,张三和李四,查出Ace老师教的学生并且按数学成绩排序思路及代码# 方法一:子查询,用inselectstudentNamefromAwhere studentIDin(selectteacherMangeStudentIDfromBwherete...原创 2020-04-03 22:03:23 · 609 阅读 · 0 评论 -
【20190304】【每天一道算法题】两数之和
问题:给定一个整数数组 nums 和一个目标值 target ,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。我的思路:1. 嵌套循环:外层遍历整个数组;外层判断是否有 x+y=target 的元素(或存在 target-x 的元素)。2. 解决值和索引对应的有效手段:哈希表。解答...原创 2019-03-04 12:03:20 · 315 阅读 · 0 评论 -
【20190328】【每天一道算法题】寻找两个有序数组的中位数(分治算法)
问题:给定两个大小为 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-04-12 10:30:52 · 349 阅读 · 0 评论 -
【20190409】【每天一道算法题】累加数(递归)
问题:累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。给定一个只包含数字'0'-'9'的字符串,编写一个算法来判断给定输入是否是累加数。说明:累加序列里的数不会以 0 开头,所以不会出现1, 2, 03或者1, 02, 3的情况。示例 :输入:"11...原创 2019-04-15 10:21:41 · 428 阅读 · 0 评论 -
【20190401】【每天一道算法题】 删除二叉搜索树中的节点(树)
问题:给定一个二叉搜索树的根节点root和一个值key,删除二叉搜索树中的key对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明:要求算法时间复杂度为O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key =...原创 2019-04-12 10:43:05 · 404 阅读 · 0 评论 -
【20190318】【每天一道算法题】爬楼梯(动态规划)
问题:假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。解题思路及代码:1. 正确解答://第一次的想法:max(全部只走一阶)-min(尽可能多的走两阶)+1就是所有的情况,但忽略了需要排列组合,造成错误。//例如有如果11个台阶,只有一步走1个台阶,其他步都走2个台阶,那么这...原创 2019-03-18 15:38:25 · 1252 阅读 · 0 评论 -
【20190716】【每天一道算法题】两数相加(链表)
问题给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4),输出:7 -> ...原创 2019-07-16 15:54:47 · 177 阅读 · 0 评论 -
【20200403】【每天一道算法题】第二高的薪水(MySQL)
问题编写一个 SQL 查询,获取 Employee表中第二高的薪水(Salary)。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述Employee表,SQL查询应该返回200 作为第二高的薪水。如...原创 2020-04-03 21:47:46 · 192 阅读 · 0 评论 -
【20190624】【每天一道算法题】四数之和(双指针、哈希表)
问题给定一个包含n 个整数的数组nums和一个目标值target,判断nums中是否存在四个元素 a,b,c和 d,使得a + b + c + d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为...原创 2019-06-24 21:25:47 · 333 阅读 · 0 评论 -
【20190709】【每天一道算法题】加一(数组)
问题给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一,最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3],输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1],输出: [4,3,2,2]解释: 输入数组表示数字 432...原创 2019-07-09 20:28:58 · 166 阅读 · 0 评论 -
【20190307】【每天一道算法题】搜索插入位置
问题:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。我的思路:第一步:将数组元素逐一与 target 比较,如若有相同的情况,那么返回该元素下标;第二步:如果没有相同的情况,那么将数组元素逐一与 target 比较,首次出现比 target 大的那个元素的下标被返回。(因为是已...原创 2019-03-07 11:02:42 · 275 阅读 · 0 评论 -
【20190510】【每天一道算法题】有效的完全平方数(二分查找)
问题给定一个正整数num,编写一个函数,如果num是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如sqrt。示例 1:输入:16,输出:True示例 2:输入:14,输出:False思路及代码class Solution: def isPerfectSquare(self, num: int) ->...原创 2019-05-13 18:55:49 · 285 阅读 · 1 评论 -
【20190324】【每天一道算法题】颜色分类(排序)
问题:给定一个包含红色、白色和蓝色,一共n个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。思路及代码:(有Bug)//归并排序void sortColors(int* nums, int numsSize) { ...原创 2019-03-27 14:01:12 · 730 阅读 · 0 评论 -
【20190520】【每天一道算法题】有序数组的平方(双指针)
问题给定一个按非递减顺序排序的整数数组A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1:输入:[-4,-1,0,3,10],输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11],输出:[4,9,9,49,121]提示:1. 1 <= A.length <= 100002. -10000 <= A[i]...原创 2019-05-21 10:24:04 · 377 阅读 · 0 评论 -
【20190403】【每天一道算法题】路径总和Ⅱ(树)
问题:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22。返回:思路与解答:...原创 2019-04-12 10:47:36 · 140 阅读 · 0 评论 -
【20190424】【每天一道算法题】设计推特(堆)
问题:思路及代码:原创 2019-04-26 18:48:55 · 186 阅读 · 0 评论 -
【20190912】【每天一道算法题】无重复字符最长子串长度(滑窗、双指针、动态规划)
问题给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb",输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb",输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew",输出: 3解释: 因为无重复字符...原创 2019-09-12 15:47:36 · 216 阅读 · 0 评论 -
【20190422】【每天一道算法题】寻找比目标字母大的最小字母(堆)
问题:给定一个只包含小写字母的有序数组letters和一个目标字母target,寻找有序数组里面比目标字母大的最小字母。数组里字母的顺序是循环的。举个例子,如果目标字母target = 'z'并且有序数组为letters = ['a', 'b'],则答案返回'a'。示例:输入:letters = ["c", "f", "j"],target = "a"输出:"c"...原创 2019-04-22 15:41:57 · 274 阅读 · 0 评论 -
【20190419】【每天一道算法题】整数反转(数学)
问题:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1: 输入:123,输出:321示例 2:输入:-123,输出:-321示例 3:输入:120,输出:21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−,]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路与代码:/* 思路:tmp是每...原创 2019-04-21 16:54:52 · 488 阅读 · 0 评论 -
【20190325】【每天一道算法题】两个数组的交集(Ⅰ、Ⅱ)(排序)
问题:给定两个数组,编写一个函数来计算它们的交集。说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果nums1的大小比nums2小很多,哪种方法更优?如果nums2的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么...原创 2019-03-27 14:04:39 · 326 阅读 · 0 评论 -
【20190408】【每天一道算法题】单词搜索(递归)
问题:给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:给定 word = "ABCCED", 返回 true.给定 word = "SEE", 返回 true.给定 word = "ABCB", 返回 false....原创 2019-04-15 10:21:28 · 195 阅读 · 0 评论 -
【20190322】【每天一道算法题】串联所有单词的子串(双指针)
问题:给定一个字符串s和一些长度相同的单词words,找出s中恰好可以由words中所有单词串联形成的子串的起始位置。注意子串要与words中的单词完全匹配,中间不能有其他字符,但不需要考虑words中单词串联的顺序。例如:输入:s = "barfoothefoobarman", words = ["foo","bar"]输出:[0,9]解释:从...原创 2019-03-27 13:53:28 · 256 阅读 · 0 评论 -
【20200910】【每天一道算法题】一维数组的动态和(数组)
问题给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4],输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4]示例 2:输入:nums = [1,1,1,1,1],输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1原创 2020-09-10 11:04:36 · 1244 阅读 · 0 评论 -
【20190506】【每天一道算法题】缺失的第一个正数(数组)
问题:给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例1:输入: [1,2,0],输出: 3示例2:输入: [3,4,-1,1],输出: 2示例3:输入: [7,8,9,11,12],输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。思路及代码:# 第一步:去重、排序;# 第二步:判断是否为空、仅有一个...原创 2019-05-06 21:14:27 · 177 阅读 · 0 评论 -
【20191216】【每天一道算法题】删除字符串中的所有相邻重复项(栈)
问题给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca",输出:"ca"解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后...原创 2019-12-16 19:30:30 · 1657 阅读 · 0 评论 -
【20190323】【每天一道算法题】合并区间(排序)
问题:给出一个区间的集合,请合并所有重叠的区间。思路及代码:原创 2019-03-27 13:55:36 · 304 阅读 · 1 评论 -
【20190316】【每天一道算法题】复制带随机指针的链表(哈希表)
问题:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。提示:你必须返回给定头的拷贝作为对克隆列表的引用。示例:输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"...原创 2019-03-18 10:33:11 · 151 阅读 · 0 评论 -
【20200914】【每天一道算法题】七进制数
问题给定一个整数,将其转化为7进制,并以字符串形式输出。示例 1:输入: 100,输出: "202"示例 2:输入: -7,输出: "-10"思路及代码# 除 7 取余倒排列class Solution: def convertToBase7(self, num: int) -> str: result = "" if num > 0: tmp = num while tmp原创 2020-09-14 16:58:10 · 516 阅读 · 0 评论