Leetcode
本专栏为记录自己的刷题经历,算法之路,共同学习进步
True | Fasle
图像处理、NLP、AI算法、Python
展开
-
389.找不同2020.12.18
2020.12.18.##找不同给定两个字符串 s 和 t,它们只包含小写字母。字符串 *t* 由字符串 *s* 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = "abcd", t = "abcde"输出:"e"解释:'e' 是那个被添加的字母。示例 2:输入:s = "", t = "y"输出:"y"解题思路:做过同一个数组,找出奇数个数的字母那的题,这很容易想位运算,相当于把这个数组给拆开了呗,一样的思路,既然拆开了,就把两个字符串并原创 2020-12-18 10:42:23 · 96 阅读 · 0 评论 -
买卖股票的最佳时机2020.12.17
714. 买卖股票的最佳时机含手续费给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。输入: prices = [1, 3, 2, 8, 4, 9], fee = 2 输出: 8 解释: 能够达到的最大原创 2020-12-17 10:19:21 · 87 阅读 · 0 评论 -
209.单词规律2020.12.16
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。实例:输入: pattern = "abba", str = "dog cat cat dog"输出: true输入:pattern = "abba", str = "dog cat cat fish"输出: false输入: pattern = "aaaa", str = "d原创 2020-12-16 15:15:37 · 109 阅读 · 0 评论 -
单调递增的数字2020.12.15
2020.12.15.##单调递增的数字给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)示例 1:输入: N = 10输出: 9示例 2:输入: N = 1234输出: 1234示例 3:输入: N = 332输出: 299暴力解法:对范围(N,0)遍历逐个判断是否满足单调递增的特性,选取第一个满足条件的数字即可,作为一原创 2020-12-15 16:14:19 · 113 阅读 · 0 评论 -
字母异位分组2020.12.14
2020.12.14.##字母异位词分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。输入: ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ]这个题思路很简单,一般都是以下两种思路遍历数组,然后对每个字符串元素进行排序,然后使用排序后的字符串作为map的keys,遍历完后即可遍历数组,然后对每个字符串元素的字母个数进行统原创 2020-12-14 10:48:16 · 73 阅读 · 0 评论 -
leetcode572. 另一个树的子树
leetcode572. 题目描述 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。解题思路: 这个题虽然是简单题,但是他的别的解法可没那么简单呀,这里提供的解法是暴力解法,先实现两个二叉树是否相等isequal的函数,这个应该比较简答,只需在dfs遍历的时...原创 2020-05-07 22:36:04 · 216 阅读 · 0 评论 -
leetcode983. 最低票价
leetcode983. 题目描述 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美...原创 2020-05-06 21:16:47 · 922 阅读 · 0 评论 -
leetcode98. 验证二叉搜索树
leetcode98.题目描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。解题思路:1.错误思路 上来没看清题,用了这种解法,中间节点必须小于左孩子和大于右孩子,然后我们对每个子节点进行递归看成一个子问题,并返回True或者...原创 2020-05-05 21:57:28 · 514 阅读 · 1 评论 -
leetcode53. 最大子序和
leetcode53.题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。解题思路:1.动态规划解法 分析明白了其实很简单,我们从左到右扫描整个数组,如果加到i位置时候,和小于0了,说明前面0到i,对于后面的数是不是一点没有了呢,我们应该重新开始加,相当于抛弃了一段无用数组,但是我们需要把把0到i里的最大值统计出来,相当于我们在...原创 2020-05-05 01:03:57 · 282 阅读 · 0 评论 -
leetcode3. 无重复字符的最长子串
leetcode3.题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。解题思路:1.暴力解法:首先把所有子串列出来,两层for循环就可解决这个问题,然后判断每个子串里有没有重复的字符,如果有去掉即可,然后对剩下的子串返回最大长度就可以。比较简单,这里就不给出代码了。2.滑动窗口,其实做这道题,脑子里大概有个这么个思路,但是不知道这个方法就可以滑动窗口算法呀。 其...原创 2020-05-03 01:43:34 · 302 阅读 · 0 评论 -
leetcode2. 两数相加
leetcode2.题目描述 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 今天leetcode上的每次一题其实是归并有序链表,但是比较简单,而且我上次已经把归并有...原创 2020-05-01 23:31:39 · 187 阅读 · 0 评论 -
leetcode202. 快乐数
编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。解题思路:今天的leetcode上的每日一题推荐的是简单题,真不是我偷懒,每天写得...原创 2020-04-30 21:40:17 · 396 阅读 · 0 评论 -
Leetcode1095. 山脉数组中查找目标值
Leetcode1095.题目描述给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。如果不存在这样的下标 index,就请返回 -1。何为山脉数组?如果数组 A 是一个山脉数组的话,那它满足如下条件:注意:对 MountainArray.get 发起超过 100 次调用的提交将被...原创 2020-04-30 00:05:23 · 597 阅读 · 0 评论 -
leetcode23. 合并K个排序链表
leetcode23. 问题描述合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。解题思路:1.暴力循环求解,不知道为啥不管碰到啥题,能用暴力解决的我绝不多想,可能我思想比较暴力?不多说,先感受一下暴力的快感吧。 想法很简单,K个有序链表,先把1号链表和2号链表合并得到一个新的有序链表,把新链表和3号链表合并得到新链表,然后继续循环,把K个链表循环完最后的链表就是合并...原创 2020-04-26 21:31:37 · 291 阅读 · 0 评论 -
leetcode153. 寻找旋转排序数组中的最小值
leetcode153.题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。解题思路:1.不管什么题,先简单做出来,增加一下信心吧,直接用min()函数返回最小值class Solution: def findMin(se...原创 2020-04-28 00:04:49 · 169 阅读 · 0 评论 -
leetcode面试题56 - I. 数组中数字出现的次数
leetcode56.题目描述一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。解题思路:要求时间复杂度为o(n),空间复杂度O(1),如果没有这些要求,这题很简单,直接用set去重,遍历数字用字典统计个数,输出个数为1 的key,结束。显然空间复杂度并不满足。 别问我为什么会这题,只能告诉...原创 2020-04-29 00:31:38 · 203 阅读 · 0 评论 -
Leetcode46. 全排列
46. 全排列 问题描述 给定一个 没有重复 数字的序列,返回其所有可能的全排列。解题思路: 很经典的题了,全排列问题,首先想到的就是回溯算法或者深度优先遍历,看图说话按顺序选择一个数1,然后剩下的[2,3]同样看一看成一个子问题,也进行同样的操作。回溯算法编码主要问题就是1.路径:也就是已经做出的选择。2.选择列表:也就是你当前可以做的选择。3.结束条件:也就是到达决策树底层,...原创 2020-04-25 17:41:09 · 140 阅读 · 0 评论 -
leetcode51. 数组中的逆序对
问题描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。思路1.暴力遍历:对每一个数和后面的数进行单独比较,符合条件+1,然后变量res记录个数,思路简单,代码如下#双重循环版本class Solution: def reversePairs(self, nums: List[int]) ->...原创 2020-04-24 23:36:31 · 477 阅读 · 0 评论 -
面试题 08.11. 硬币
面试题 08.11. 问题描述 硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)解题思路1.错误思路,首先想到的就是回溯法,画出解法空间 对于n=25找零方式可以分解为四个解空间,然后再对子空间进行分解,很容易用递归完成。代码如下class Solution: def __i...原创 2020-04-24 00:08:10 · 467 阅读 · 0 评论 -
leetcode199. 二叉树的右视图
leetcode199.题目描述给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。解决思路: 1.错误思路,用递归来循环保存右边节点,如果右边节点为None,则跳到保存左边节点,不能解决以下图片情况:2.正确思路,采用广度优先搜索算法来遍历整个二叉树,但是需要一个标记来记忆每个node的深度,最后将每一层最后的node节点的value保存下来即...原创 2020-04-22 23:38:27 · 228 阅读 · 0 评论