
LeetCode
doze want sleep
这个作者很懒,什么都没留下…
展开
-
leetcode_7.整数反转python
完整代码及注释class Solution: def reverse(self, x): """ :type x: int :rtype: int """ //确定输入的数字是否为0 if x == 0: return 0原创 2019-02-22 15:30:11 · 256 阅读 · 0 评论 -
leetcode_122. 买卖股票的最佳时机 IIpython
题目描述:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:这里是引用输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 =5)的时...原创 2019-03-06 14:14:40 · 198 阅读 · 0 评论 -
leetcode_141. 环形链表python
题目描述给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输...原创 2019-03-09 11:12:23 · 351 阅读 · 0 评论 -
leetcode_107. 二叉树的层次遍历 IIpython
题目描述:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]算法思想:使用队列,依次从根节点...原创 2019-03-04 14:35:09 · 224 阅读 · 0 评论 -
leetcode_171. Excel表列序号python
题目描述给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3…Z -> 26AA -> 27AB -> 28…示例 1:输入: “A”输出: 1示例 2:输入: “AB”输出: 28示例 3:输入: “ZY”输出: 701算法思想跟二进制转十进制是一个思想代码c...原创 2019-03-14 16:36:08 · 186 阅读 · 0 评论 -
leetcode_172. 阶乘后的零python
题目描述给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.算法思想其实说白了就是找阶乘得数里面有多少个5,因为每次只有5和2相遇时才会产生一个10,也就是会有一个“零”不断除以 5, 是因为每间隔 5 个数有一个数可以被 ...原创 2019-03-14 18:34:23 · 305 阅读 · 0 评论 -
leetcode_155. 最小栈python
题目描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() --检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(...原创 2019-03-11 11:57:38 · 157 阅读 · 0 评论 -
leetcode_125. 验证回文串python
题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false思想:将数字及字母过滤出来,过滤这个事件,就要想到filter这个函数,判断是...原创 2019-03-08 08:37:05 · 354 阅读 · 0 评论 -
leetcode_202. 快乐数python
题目描述编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:1² + 9² = 828² + 2² = 686² + 8² = 1001² + 0² + ...原创 2019-03-20 10:33:01 · 502 阅读 · 0 评论 -
leetcode_136. 只出现一次的数字python(最全方法)
题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4算法思想1重新申请一个列表s=[],遍历这个数组:1.如果不在这个新的列表中:将元素加入列表...原创 2019-03-08 09:39:07 · 851 阅读 · 0 评论 -
leetcode_189. 旋转数组python
题目描述给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3...原创 2019-03-16 10:16:32 · 115 阅读 · 0 评论 -
leetcode_203. 移除链表元素python
题目描述删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5算法思想其实这道题并不是很难,比较有难度的地方其实是头指针head指向的就是元素,而不是一个空的节点,这就要巧妙地重新声明一个新的空节点,然后就是遍历并删除节点就可以了...原创 2019-03-20 14:32:48 · 275 阅读 · 0 评论 -
leetcode_160. 相交链表python
题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 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输入解释:相交节点的...原创 2019-03-12 08:51:45 · 178 阅读 · 0 评论 -
leetcode_167. 两数之和 II - 输入有序数组python
题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15],...原创 2019-03-12 10:25:28 · 116 阅读 · 0 评论 -
leetcode_204. 计数质数python
题目描述统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。算法思想厄拉多塞筛法西元前250年,希腊数学家厄拉多塞(Eeatosthese)想到了一个非常美妙的质数筛法,减少了逐一检查每个数的的步骤,可以比较简单的从一大堆数字之中,筛选出质数来,这方法被称作厄拉多塞筛法(Sieve of...原创 2019-03-20 19:31:25 · 154 阅读 · 0 评论 -
leetcode_169. 求众数python
题目描述给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2算法思想1.使用一个.set()函数对数组去重,再找到无重复的元素在原来数组中的位置,使用.count()函数2...原创 2019-03-13 19:41:16 · 227 阅读 · 0 评论 -
leetcode_168. Excel表列名称python
题目描述给定一个正整数,返回它在 Excel 表中相对应的列名称。例如,1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB ...示例 1:输入: 1输出: “A”示例 2:输入: 28输出: “AB”示例 3:输入: 701输出: “ZY”算法思想其实就是十进制转26...原创 2019-03-13 20:35:10 · 187 阅读 · 0 评论 -
leetcode_53. 最大子序和python
算法思想:这是一个最大子数列问题:Kadane算法扫描一次整个数列的所有数值,在每一个扫描点计算以该点数值为结束点的子数列的最大和(正数和)。该子数列由两部分组成:以前一个位置为结束点的最大子数列、该位置的数值。因为该算法用到了“最佳子结构”(以每个位置为终点的最大子数列都是基于其前一位置的最大子数列计算得出),该算法可看成动态规划的一个例子。是想办法将这个数组转变成一个和数组代码:cla...原创 2019-02-27 10:51:27 · 130 阅读 · 0 评论 -
leetcode_121. 买卖股票的最佳时机python
题目描述:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...原创 2019-03-06 13:56:32 · 102 阅读 · 0 评论 -
leetcode_104. 二叉树的最大深度python
题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。class Solution(object): def maxDep...原创 2019-03-02 14:37:51 · 252 阅读 · 0 评论 -
leetcode_9.回文数python
完整代码及注释:(一行代码就搞定)class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """ return str(x)[::-1] == str(x)思路就是跟整数反转是一样的,利用了列表的切..原创 2019-02-22 15:48:00 · 129 阅读 · 0 评论 -
leetcode_13. 罗马数字转整数python
完整代码及注释:class Solution(object): def romanToInt(self, s): """ :type s: str :rtype: int """ //这里把罗马数字转化成汉字形式使用字典的键值对模式 a = {'I':1, 'V':5, 'X':10, 'L'...原创 2019-02-22 18:49:13 · 253 阅读 · 0 评论 -
leetcode_14. 最长公共前缀python
思想:纵向比较,利用一个for循环的嵌套,内层循环控制列表的位置,外层循环控制列表里单个元素的每个字母位置,例如strs[1][2]的含义就是:列表里第二个单词的第三个字母比较1.找到列表中最短的元素,求出它的长度2.纵向比较,利用flag作为一个参考,当flag为0,就说明有不相同的字母了,就不是公共前缀完整代码及注释:class Solution: def longestCo...原创 2019-02-23 12:15:30 · 501 阅读 · 0 评论 -
leetcode_ 58. 最后一个单词的长度python
题目描述:给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。我的思法:这是一个字符串,每个单词之间都是由空格隔开,这就想到了Python的内置split函数,可以将字符串经特定字符分割开来,这句语法是a = s.split(' ')变成了一个列表,最后取他最后一个元素即...原创 2019-02-28 10:21:48 · 239 阅读 · 0 评论 -
leetcode_20. 有效的括号python
算法思想利用一个列表模拟堆栈进行匹配,遍历字符串,遇见左括号就进行入栈操作,遇见一次右括号就进行一次出栈,并进行一次比较。例如栈内的符号是:({,下一个遍历的字符是},见到右括号则进行一次出栈操作,进行一次比较,比较的是{和}两个符号,是匹配的,则接着遍历下一个位置。利用字典的键值对特性进行比较详细代码及注释:class Solution: def isValid(self, s):...原创 2019-02-24 11:01:48 · 179 阅读 · 0 评论 -
leetcode_21. 合并两个有序链表python
算法思想:1.两个链表是有序的,这里采用的是尾插法,尾插法就要使用两个指针进行操作,一个作为头结点,另一个跟踪最后一个节点,每次都指向的是做后一个节点,即尾节点。2.比较两个链表的头结点的val值,把较小的那个使用 first.next=较小节点这一操作,指向完成并使原本的链表的头指针向后移动一位。3.若有一个链表已经被比较完了,那么就使目标链表的尾指针指向另一个没有比较完的链表即可。代码...原创 2019-02-25 09:22:21 · 431 阅读 · 0 评论 -
leetcode_26. 删除排序数组中的重复项python
算法思想:1.这里需要使用两个标记指针来确定比较的位置和插入的位置,使用的不是删除元素,而是覆盖掉重复的元素。2.使用pre_index这个参数来标记上一个已经覆盖掉的位置,使用index这个参数来遍历这个数组,比较nums[index]和nums[pre_index]的值是否相同,相同的话,index += 1否则pre_index + = 1 nums[pre_index] = nums[...原创 2019-02-25 10:14:02 · 111 阅读 · 0 评论 -
leetcode_27. 移除元素python
算法思想:这题要比上一个26. 删除排序数组中的重复项简单一些,具体思想参考上一篇,还是使用的enumerate函数。代码:class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int ...原创 2019-02-25 10:35:22 · 189 阅读 · 0 评论 -
leetcode_28. 实现strStr()python
解题思路:1.可以选择暴力破解,也可采用KMP算法,KMP算法以后再研究2.切片的方法,这个切片的方法就很新颖了,就是在needle部分将这个字符串切片,然后找到第一部分的长度即可,这个方法很有意思class Solution: def strStr(self, haystack, needle): """ :type haystack: str ...原创 2019-02-25 14:21:13 · 288 阅读 · 0 评论 -
leetcode_ 66.加一python
题目描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。思想:这回几乎还是用的暴力破解,先把数组转成字符串,再进行加一操作,效率很低class Solution(object): def plusOne(self, digits): "...原创 2019-03-01 08:22:23 · 213 阅读 · 0 评论 -
leetcode_70. 爬楼梯python
这个问题没有什么思路,但是大家说这个是个斐波那契数列,到底为什么是斐波那契数列呢 ,原来是这样这样就理解了,从第三项开始,每一项是前两项的和,累加就可以了。代码:效率不高,才击败20%不到的用户class Solution(object): def climbStairs(self, n): """ :type n: int :rty...原创 2019-03-01 14:16:39 · 228 阅读 · 0 评论 -
leetcode_ 83. 删除排序链表中的重复元素python
题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3思想:没啥好说的,就是个简单的删除重复元素,掌握链表的删除操作就行了,声明一个临时变量,两个作为比较的指针。代码:# Definiti...原创 2019-03-01 14:38:37 · 214 阅读 · 0 评论 -
leetcode_118. 杨辉三角python
题目描述:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]算法思想:这道题令人难受的地方并不是求中间位置元素的大小,而是如果把每行第一个元素和最后一个元素置为1。...原创 2019-03-05 09:54:42 · 163 阅读 · 0 评论 -
leetcode_119. 杨辉三角 IIpython
题目描述:给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]算法思想:在118题的基础上,修改返回值即可代码:class Solution(object): def getRow(self, rowIndex): """ :type...原创 2019-03-05 10:05:20 · 173 阅读 · 0 评论 -
leetcode_35. 搜索插入位置python
算法思想:没什么好说的,就是一个数组的比较,四行代码搞定,主要看一下其他人的解法代码:class Solution(object): def searchInsert(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int...原创 2019-02-26 09:38:42 · 149 阅读 · 0 评论 -
leetcode_88. 合并两个有序数组python
题目描述:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2...原创 2019-03-01 20:20:15 · 689 阅读 · 0 评论 -
leetcode_100. 相同的树|101. 对称二叉树python
题目描述:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2019-03-02 08:56:54 · 157 阅读 · 0 评论 -
leetcode_198. 打家劫舍python
题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后...原创 2019-03-19 10:24:28 · 223 阅读 · 0 评论