
leetcode
_missTu_
努力大于天赋的女孩,英语专八通过者,岗位是算法工程师。
展开
-
Leetcode 875 爱吃香蕉的珂珂 (python)
一、题目描述珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。示例 1:输入: piles = [3,6,7,11], H = 8原创 2020-08-08 11:40:56 · 1017 阅读 · 0 评论 -
Leetcode1223 分割平衡字符串(python)
1. 题目描述在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。返回可以通过分割得到的平衡字符串的最大数量。实例1:输入:s = “RLRRLLRLRL”输出:4解释:s 可以分割为 “RL”, “RRLL”, “RL”, “RL”, 每个子字符串中都包含相同数量的 ‘L’ 和 ‘R’。实例2:输入:s = “RLLLLRRRLR”输出:3解释:s 可以分割为 “RL”, “LLLRRR”, “LR”, 每个子字原创 2020-07-30 23:55:08 · 455 阅读 · 1 评论 -
Leetcode 13、罗马数字转整数(Python)
Leetcode 13、罗马数字转整数(Python)1、题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 , 数值I , 1V , 5X , 10L , 50C, 100D, 500M, 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X +原创 2020-07-29 20:04:13 · 260 阅读 · 0 评论 -
Leetcode 453. 最小移动次数使数组元素相等 —— python
1. 题目描述给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。示例:输入:[1,2,3]输出:3解释:只需要3次移动(注意每次移动会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]来源:力扣(LeetCode)链接:https...原创 2019-07-20 17:14:34 · 329 阅读 · 0 评论 -
Leetcode 51. N皇后(回溯) —— python
这道题面试的时候问到了,hard程度的题啊,没做过真的想不出来的,所以说还是要刷题,每天刷会有感觉的。(做这道题哭liao)1. 题目描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。即不能在同一行、同一列、同一对角线、同一逆对角线。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含...原创 2019-07-19 17:23:18 · 704 阅读 · 0 评论 -
Leetcode 22. 括号生成(回溯) —— python
1. 题目描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]链接:https://leetcode-cn.com/problems/generate-parentheses2. 解题思路用回溯法求解所有的...原创 2019-07-17 17:44:07 · 383 阅读 · 0 评论 -
Leetcode 39. 组合总和(回溯)—— python
1. 题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集...原创 2019-07-16 15:36:48 · 496 阅读 · 1 评论 -
Leetcode 40. 组合总和 II(回溯) —— python
1. 题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解...原创 2019-07-16 11:38:49 · 297 阅读 · 0 评论 -
Leetcode 90.子集II(回溯)—— python
1. 题目描述给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]2. 解题思路这题思路也是回溯法,跟题目求子集https://blog.youkuaiyun.com/u013075024/article/details/93...原创 2019-07-15 19:30:36 · 541 阅读 · 0 评论 -
Leetcode 452. 用最少数量的箭引爆气球(贪心)——python
前几天在补充数据方面的业务知识,有四五天没刷leetcode了,有点生疏的感觉。1. 题目描述链接:https://leetcode-cn.com/problems/minimum-number-of-arrows-to-burst-balloons在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开...原创 2019-07-11 17:23:35 · 495 阅读 · 0 评论 -
Leetcode 128. 最长连续序列 ---- python
1. 题目描述给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。2. 解题思路题目要求算法时间复杂度为 O(n),所以不能排序,因为排序算法的时间复杂度至少为 O(nlogn).然后想到用字典。第一步,set去重...原创 2019-07-04 10:58:16 · 464 阅读 · 0 评论 -
Leetcode 594. 最长和谐子序列 ---- python
1. 题目描述和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。示例 1:输入: [1,3,2,2,5,2,3,7]输出: 5原因: 最长的和谐数组是:[3,2,2,2,3].2. 解题思路用python自带的collection统计出现次数,比自己统计次数加入字典快得多。然后找出子序列长度...原创 2019-07-01 17:24:30 · 316 阅读 · 0 评论 -
Leetcode 217. 存在重复元素 ---- python
1.题目描述给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true2. 解题思路把元素放在set()集合里...原创 2019-07-01 11:37:43 · 148 阅读 · 0 评论 -
Leetcode 1. 两数之和 ---- python
哈哈哈这是leetcode的第一题,18年12月份的时候第一次做leetcode的题,超出时间限制了。当时还不懂怎么写测试用例。现在重新做题,总结每种类型的题目的做题思路。1. 题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例...原创 2019-07-01 11:26:48 · 132 阅读 · 0 评论 -
Leetcode 17. 电话号码的字母组合 ---- python
1. 题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].2. 解题思路可用树的思想3. 代码实现class Solution(object): ...原创 2019-06-27 16:11:38 · 360 阅读 · 0 评论 -
Leetcode 78. 子集 ---- python(待刷第二遍)
1.题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]2. 解题思路这题可以用回溯法,位运算法,但思路都比较难懂,以后再把这两种解法放上来。下面代码用的是一种比较巧妙的...原创 2019-06-25 17:01:37 · 381 阅读 · 0 评论 -
Leetcode 55. 跳跃游戏----python(待刷第二遍)
1. 题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位...原创 2019-06-25 10:48:59 · 503 阅读 · 0 评论 -
Leetcode 9. 回文数 ---- python
1. 题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...原创 2019-06-23 21:36:46 · 189 阅读 · 0 评论 -
Leetcode 205. 同构字符串 ---- python
1. 题目描述给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = “egg”, t = “add”输出: true示例 2:输入: s = “foo”, t = “bar”输出:...原创 2019-06-22 14:09:05 · 191 阅读 · 0 评论 -
Leetcode 409. 最长回文串 ----python
1. 题目描述给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:“abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。2. 解题思路回文串的特点:回文串的总长度既可以为...原创 2019-06-22 11:36:24 · 309 阅读 · 0 评论 -
Leetcode 242. 有效的字母异位词----python
1. 题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。2. 解题思路两字符串字母异位,满足两个特征:(1)长度相等(2)包含的字母...原创 2019-06-22 10:40:52 · 159 阅读 · 0 评论 -
Leetcode 402. 移掉K位数字(贪心+栈)----python
前言:这题真的有点难的,改了几遍之后把自己给绕晕了。。。然后花了点时间把思路捋清楚了。要考虑比较多种情况。1. 题目描述给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且 ≥ k。num 不会包含任何前导零。示例 1 :输入: num = “1432219”, k = 3输出: “1219”解释: 移...原创 2019-06-21 16:42:49 · 804 阅读 · 0 评论 -
Leetcode 435. 无重叠区间(贪心)----python
1. 题目描述给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2],...原创 2019-06-21 11:25:07 · 1401 阅读 · 0 评论 -
Leetcode 376. 摆动序列----python
1、题目描述如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为...原创 2019-06-19 23:34:14 · 829 阅读 · 1 评论 -
Leetcode 455. 分发饼干----python
1. 题目描述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口...原创 2019-06-19 16:16:43 · 199 阅读 · 0 评论 -
Leetcode 739. 每日温度(数组中元素与下一个比它大的元素之间的距离)----python
1.题目描述根据每日气温列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个...原创 2019-06-19 11:57:25 · 567 阅读 · 0 评论 -
Leetcode 20.有效的括号 ----python
1. 题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意:空字符串可被认为是有效字符串。2. 解题思路(1)法一:可用字符串的思路处理(参考leetcode讨论区代码)(2)法二:借助栈进行处理,用栈处理这种基本方法还是要会的,基础知识要打劳,虽...原创 2019-06-19 10:38:39 · 271 阅读 · 3 评论 -
Leetcode 19. 删除链表的倒数第N个节点 ----python
1. 题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.2.解题思路这题要分情况讨论(1)当链表为空或只有一个节点时,返回结果为None(2)当删除的元素为链表首元素时,返回head.next...原创 2019-06-17 10:53:56 · 241 阅读 · 0 评论 -
Leetcode 445. 两数相加 II ----python
1. 题目描述给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出: 7 -> 8 -> 0 -> 72. 解题思路此题若...原创 2019-06-17 10:01:37 · 652 阅读 · 0 评论 -
Leetcode 83. 删除排序链表中的重复元素----python
题目描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3解题思路:这道题思路很简单,就是判断上一个节点的值和下一个节点的值是否相等,若相等,则删除节点。循环判断。我觉得这道题主要是考链表删除操作...原创 2019-06-15 18:23:17 · 167 阅读 · 0 评论 -
Leetcode 21. 合并两个有序链表 ----python
题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:先开辟一个头节点的空间(我先假设头节点值为0,方便后面尾插法)然后遍历两个链表,取出更小的那一个链表的节点,然后指针往后移动一个位置。代...原创 2019-06-15 17:26:07 · 146 阅读 · 0 评论 -
Leetcode 206. 反转链表 ----python
刷题是真的有用的,这道题我第一遍做花了将近三个小时才看懂解题思路,然后慢慢理解。隔了一个月之后,做第二遍,不到10分钟就做出来了。一点一滴的积累也许很慢,但这是最踏实的方法,要对自己有耐心。题目描述:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路:本...原创 2019-06-15 11:52:22 · 221 阅读 · 0 评论 -
Leetcode 637. 二叉树的层平均值-------python
题目描述:给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例 1:输入:3/ \9 20/ \15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].解题思路:二叉树的层次遍历,每一层求平均值。代码实现:# Definition for a binary...原创 2019-06-15 00:09:01 · 292 阅读 · 0 评论 -
Leetcode 160. 相交链表-----python
160. 相交链表题目描述:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:解题思路:python代码实现:class Solution(object): def getIntersectionNode(self, headA, headB): """ :type head1, head1: ListNode ...原创 2019-06-14 11:54:30 · 312 阅读 · 0 评论 -
Leetcode 617. 合并二叉树----python
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:解题思路:自顶向下进行合并,分情况进行讨论:(1)当tree1,tree2都为空时,返回None(2)当tree1为空时,返回tre...原创 2019-06-13 11:18:34 · 535 阅读 · 0 评论 -
Leetcode 226. 翻转二叉树---python
题目描述:翻转一棵二叉树。示例:输入:解题思路:采用自顶向下左右子树交换的方法,先把右子树保存下来,避免覆盖,然后交换。代码实现: def invertTree(self, root): if(root == None): return rightTree = root.right root.right ...原创 2019-06-13 10:26:41 · 331 阅读 · 0 评论 -
Leetcode 543. 二叉树的直径-----python
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树解题思路:注意看[4,2,1,3]或[5,2,1,3],是左右两棵子树路径加起来的。python代码实现:class Solution(object): def __init__(self): self.res = 0 ...原创 2019-06-12 11:31:44 · 645 阅读 · 0 评论 -
Leetcode 110. 平衡二叉树-----python
题目描述:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。解题思路:利用递归求每一棵树的两棵子树的最大深度,若深度绝对值相差>1,则返回falsepython代码实现:# Definition for a binary tree node.class TreeNode: def _...原创 2019-06-12 10:46:12 · 463 阅读 · 0 评论 -
leetcode 589. N叉树的前序遍历---python
给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树:代码实现:# Definition for a Node.class Node: def __init__(self, val,children): self.val = val self.children = childrenclass Solution: def _...原创 2019-06-11 11:39:12 · 297 阅读 · 0 评论 -
leetcode112. 二叉树 路径总和 (python代码实现)
题目描述:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。# Definition for a binary tree node.#给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。class TreeNode(object): ...原创 2019-06-10 11:44:01 · 522 阅读 · 0 评论