leetcode整理
文章平均质量分 86
阿阿哼
这个作者很懒,什么都没留下…
展开
-
python十进制转化为二进制
python十进制转化为二进制实例:给定一个非负十进制数n,如何将其转换成为一个二进制数?输入:123输出:1111011输入:1363输出:10101010011输入:12输出:1100首先我们看一下二进制,由十进制来类比。考虑一个十进制数,8327,那么数字: 8 3 2 7权值:1000 100 10 1所以, 值为 ...原创 2019-08-07 08:47:47 · 22029 阅读 · 0 评论 -
leetcode53:最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路:首先当给定数组中全部元素都为负数的时候,最大子序和就是数组中最大的那个元素;当数组中元素有正有负的时候,最大子序和一定是大于等于零的。因为找的是连续...原创 2019-05-11 15:15:38 · 79 阅读 · 0 评论 -
leecode70:爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶...原创 2019-05-11 13:26:06 · 128 阅读 · 0 评论 -
leetcode746. 使用最小花费爬楼梯
数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即...原创 2019-05-11 12:24:25 · 187 阅读 · 0 评论 -
leetcode1025:除数博弈
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。...原创 2019-05-11 12:02:07 · 278 阅读 · 0 评论 -
leetcode20:有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)...原创 2019-05-07 18:43:38 · 251 阅读 · 0 评论 -
LeetCode415:字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。思路:字符串相加与二进制相加同理。区别就是一个逢十进一,一个逢二进一。class Solu...原创 2019-05-14 21:46:19 · 157 阅读 · 0 评论 -
LeetCode:67.二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”思路:首先在求和的时候,是先计算个位数,然后再计算十位数,以此类推,所以在读取字符串的时候要倒序读取。这个题在加减过程中还要注意str...原创 2019-05-14 21:37:51 · 112 阅读 · 0 评论 -
LeetCode387. 字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = “leetcode”返回 0.s = “loveleetcode”,返回 2.思路:将字符串中字母及其出现的次数储存在字典中(可以先对字符串利用set()去重),然后用index遍历字符串,如果s[index]这个字母在字典中对应的值为1,就返回index,反之继续遍历,如果遍历结束都...原创 2019-05-14 21:07:19 · 241 阅读 · 0 评论 -
leetcode:383. 赎金信
给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)注意:你可以假设两个字符串均只含有小写字母。canConstruct(“a”, “b”) -...原创 2019-05-14 20:24:22 · 126 阅读 · 0 评论 -
leetcode345: 反转字符串(中的元音字母)中的字母
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: “hello”输出: “holle”示例 2:输入: “leetcode”输出: “leotcede”说明:元音字母不包含字母"y"。思路:字符串的反转问题,首先考虑一头一尾的双指针。在这个题中要注意字母大小写问题首先从头开始循环遍历,一直到找到元音字母退出循环,然后开始从尾部遍历,一直到找到元音字...原创 2019-05-14 20:05:16 · 244 阅读 · 0 评论 -
LeetCode925:长按键入
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。示例 1:输入:name = “alex”, typed = “aaleex”输出:true解释:‘alex’ 中的 ‘a’ 和 ‘e’ 被长按。示...原创 2019-05-19 09:50:59 · 205 阅读 · 0 评论 -
LeetCode917:仅仅反转字母
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 1:输入:“ab-cd”输出:“dc-ba”示例 2:输入:“a-bC-dEf-ghIj”输出:“j-Ih-gfE-dCba”示例 3:输入:“Test1ng-Leet=code-Q!”输出:“Qedo1ct-eeLg=ntse-T!”提示:S.length <...原创 2019-05-19 09:26:40 · 183 阅读 · 0 评论 -
LeetCode:541反转字符串II
给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。示例:输入: s = “abcdefg”, k = 2输出: “bacdfeg”要求:该字符串只包含小写的英文字母。给定字符串的长度和 k 在[1, ...原创 2019-05-16 09:58:28 · 253 阅读 · 0 评论 -
LeetCode824. 山羊拉丁文
给定一个由空格分割单词的句子 S。每个单词只包含大写或小写字母。我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"。例如,单词"apple"变为"applema"。如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添...原创 2019-05-19 08:11:12 · 249 阅读 · 0 评论 -
LeetCode819. 最常见的单词
给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。示例:输入:paragraph = “Bob hit a ball, the hit BALL flew far after it ...原创 2019-05-18 21:03:15 · 146 阅读 · 0 评论 -
LeetCode606. 根据二叉树创建字符串
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# s...原创 2019-05-18 17:18:08 · 140 阅读 · 0 评论 -
LeetCode557. 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”方法1:利用指针class Solution(object): def reverseWords(self, s): """ ...原创 2019-05-18 16:17:13 · 94 阅读 · 0 评论 -
LeetCode520. 检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: “USA”输出: True示例 2:输入: “FlaG”输出: F...原创 2019-05-18 13:59:25 · 209 阅读 · 0 评论 -
LeetCode459. 重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: “abab”输出: True解释: 可由子字符串 “ab” 重复两次构成。示例 2:输入: “aba”输出: False示例 3:输入: “abcabcabcabc”输出: True解释: 可由子字符串 “abc” 重复四次构成。 (或者...原创 2019-05-18 13:56:17 · 272 阅读 · 0 评论 -
leetcode443. 压缩字符串
给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。进阶:你能否仅使用O(1) 空间解决问题?示例 1:输入:[“a”,“a”,“b”,“b”,“c”,“c”,“c”]输出:返回6,输入数组的前6个字符应该是:[“a”,“2”,“b”,“2”,“...原创 2019-05-18 10:47:57 · 182 阅读 · 0 评论 -
LeetCode434. 字符串中的单词数
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: “Hello, my name is John”输出: 5class Solution(object): def countSegments(self, s): """ :type s: str :rtyp...原创 2019-05-18 09:59:23 · 261 阅读 · 0 评论 -
LeetCode:283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路:要用index来记录遍历到的不是0的元素个数。比如当遍历到第一个不是0的元素时,index=0,此时nums的第index个元素就应该是遍历到的这个元...原创 2019-05-26 14:11:53 · 159 阅读 · 0 评论 -
LeetCode937. 重新排列日志文件
你有一个日志数组 logs。每条日志都是以空格分隔的字串。对于每条日志,其第一个字为字母数字标识符。然后,要么:标识符后面的每个字将仅由小写字母组成,或;标识符后面的每个字将仅由数字组成。我们将这两种日志分别称为字母日志和数字日志。保证每个日志在其标识符后面至少有一个字。将日志重新排序,使得所有字母日志都排在数字日志之前。字母日志按内容字母顺序排序,忽略标识符;在内容相同时,按标识符排序...原创 2019-05-26 14:08:14 · 218 阅读 · 0 评论 -
leetcode231: 2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false思路1:2的幂都是大于0的数,所以如果输入为负数的话,直接返回False否则的话进行循环,让输入n不断的除以2,如果n是2的幂,最终得到的结果应该是1,返回T...原创 2019-05-12 21:15:44 · 216 阅读 · 0 评论 -
leetcode922:按奇偶排序数组 II
思路:将偶数和奇数分别放在even和odd列表中,然后利用zip()和chain()函数,将两个列表交叉组合在一起。重点是利用的zip函数和chain函数。zip():注意:zip() 返回的是一个元组对象。如需展示列表,需手动 list() 转换。zip(*) 与zip()相反,相当于解压示例:chain():使用 chain() 的一个常见场景是当你想对不同的集合中所有元素...原创 2019-05-12 19:35:50 · 215 阅读 · 0 评论 -
LeetCode929. 独特的电子邮件地址
每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名。除了小写字母,这些电子邮件还可能包含 ‘.’ 或 ‘+’。如果在电子邮件地址的本地名称部分中的某些字符之间添加句点(’.’),则发往那里的邮件将会转发到本地名称中没有点的同一地址。例如,"alice.z@leetcod...原创 2019-05-19 09:25:40 · 626 阅读 · 0 评论 -
LeetCode859. 亲密字符串
给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。示例 1:输入: A = “ab”, B = “ba”输出: true示例 2:输入: A = “ab”, B = “ab”输出: false示例 3:输入: A = “aa”, B = “aa”输出: true示例 4:输入...原创 2019-05-19 08:10:57 · 181 阅读 · 0 评论 -
LeetCode 680:验证回文字符串
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: “aba”输出: True示例 2:输入: “abca”输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。思路:首先判断原输入字符串是否是回文字符串,如果是就直接返回True;如果输入字符串不是回文字符串,就要检查不满足回文的...原创 2019-05-03 13:46:35 · 260 阅读 · 0 评论 -
LeetCode409:最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:“abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。思路:找到最长回文串长度与不同输入字母个数之间的关系。1、如果输入的...原创 2019-05-03 13:38:34 · 325 阅读 · 0 评论 -
Leecode125:验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: falseTips:注意字母的的大小写class Solution(object): def is...原创 2019-05-03 12:51:35 · 140 阅读 · 0 评论 -
leetcode234:回文链表
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true方法1:利用列表。将链表中的每个值都添加进列表中,然后倒序读取得到一个新的列表,判断两个列表是否相等。刚开始出错的地方:注意利用列表的reverse()方法反转列表的时候会对原列表直接更改,而且没有返回值,这个时候就没办法用原列表与...原创 2019-05-03 12:03:08 · 168 阅读 · 0 评论 -
leetcode876:链表的中间结点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.v...原创 2019-05-03 09:42:54 · 94 阅读 · 0 评论 -
leetcod203:移除链表元素
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):#...原创 2019-05-03 09:23:44 · 99 阅读 · 0 评论 -
LeetCode160:相交链表
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如...原创 2019-05-02 18:25:10 · 1764 阅读 · 1 评论 -
leetcode206:反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.va...原创 2019-05-02 17:37:35 · 81 阅读 · 0 评论 -
leetcode141:环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解释...原创 2019-05-02 17:02:55 · 98 阅读 · 0 评论 -
leetcode83: 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3# Definition for singly-linked list.# class ListNode:# def __init__(self...原创 2019-05-02 14:06:30 · 126 阅读 · 0 评论 -
leetcode21 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4...原创 2019-05-02 11:58:09 · 91 阅读 · 0 评论 -
LeetCode14:最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。利用集合set()class Solution: d...原创 2019-05-01 21:59:13 · 688 阅读 · 0 评论