![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
weixin_43160613
小菜鸟的坚持历程
展开
-
leetcode371:两整数之和
思想:1.转换成列表c=[a,b]2.运用sum求和class Solution: def getSum(self, a, b): """ :type a: int :type b: int :rtype: int """ c=[a,b] return sum(c)...原创 2018-11-18 11:03:28 · 92 阅读 · 0 评论 -
leetcode118:杨辉三角
思想:先通过一个列表表达式生成一个全1的杨辉三角列表。然后开始循环,设置两个循环变量i和j,i控制第几行操作,j控制第几列操作。从杨辉三角图示可知,第一行和第二行不需改变,而且第三行,第四行,第五行只需要改1列,2列,3列,所以i的范围为0—nnumRows+1,j的范围为0—i-1。class Solution: def generate(self, numRows): ...原创 2018-10-24 10:00:53 · 75 阅读 · 0 评论 -
leetcode189:旋转数组
思想:首先判断nums是否为空以及k是否为零,若是则直接返回nums。然后定义一个反转函数reverse,使得数组前后元素调换位置,直到全部调换。最后先nums[0,len(nums)-1-k]开始调换,然后nums[en(nums)-1-k+1,len(nums)-1]开始调换,最后nums[0,len(nums)-1]调换。class Solution: def rotate...原创 2018-10-31 10:30:22 · 81 阅读 · 0 评论 -
leetcode171:EXCLE表列序号
思想:首先将字符转换成其对应的ASCII码,然后将ASCII码+1求余65得到余数(65是大写A的ASCII),最后将余数乘以26的次方(次方数是多少由其所在位置决定)class Solution: def titleToNumber(self, s): """ :type s: str :rtype: int ""...原创 2018-10-29 14:48:06 · 77 阅读 · 0 评论 -
leetcode169:求众数
思想:先将nums通过set()函数找出各不相等的元素item,然后通过nums.count(item)计算每个item的个数并判断是否大于len(nums)/2,若大于则返回该数。class Solution: def majorityElement(self, nums): """ :type nums: List[int] :...原创 2018-10-26 09:54:59 · 126 阅读 · 0 评论 -
leetcode217:存在重复元素
思想:将列表nums先通过sort()函数排序,然后比较nums[i]和nums[i+1]是否相等,若相等则返回ture,反之返回falseclass Solution: def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool "...原创 2018-10-21 14:26:34 · 80 阅读 · 0 评论 -
leetcode268:缺失的数字
思想:先算出没有缺失情况下的所有数的总和,然后计算给出序列的数字总和,最后两个相减即为缺失的数字。class Solution(object): def missingNumber(self, nums): """ :type nums: List[int] :rtype: int """ n = l...原创 2018-10-21 11:30:28 · 98 阅读 · 0 评论 -
leetcode263:丑数
思想:先判断num是不是负数,若是则返回False。若不是则进入while循环。若是丑数,经过不断除2或者除3或者5,最终商一定为1,反之则不是。class Solution: def isUgly(self, num): """ :type num: int :rtype: bool """ if nu...原创 2018-10-23 09:54:35 · 77 阅读 · 0 评论 -
leetcode258:各位相加
思想:根据举例,发现最后所得数是num求余9。但有个特殊情况,nums是9的倍数时,求余等于0,但是按题目要求应该是9。大佬的处理是nums-1在求余9,最终返回1+(nums-1)%9。这样很好解决问题class Solution: def addDigits(self, num): """ :type num: int :rty...原创 2018-10-28 10:39:11 · 82 阅读 · 0 评论 -
leetcode283:移动零
思想:定义变量i控制遍历列表nums,变量控制j控制0元素下标移动。判断nums[i]是否等于0,若是则将nums[i]和nums[j]调换位置并且j+1。反之继续遍历。class Solution: def moveZeroes(self, nums): """ :type nums: List[int] :rtype: void...原创 2018-10-28 10:17:48 · 114 阅读 · 0 评论 -
leetcode219:存在重复元素Ⅱ
思想:1.先判断nums是否为空,为空则返回false。再判断k是否等于0,为0则返回false。2.由于range函数后面的范围取不到则需要k+1,然后需要判断加1后的k有什么超过nums的长度。若超过,则选择nums的长度作为k值。3.定义了一个双向队列windows来存储元素的下标,一个集合d来存储元素。4.先从下标0开始取元素并判断是否已经存在d中,由于我们的下标范围是0-...原创 2018-10-25 10:19:25 · 188 阅读 · 0 评论 -
leetcode125:验证回文串
思想:首先去除字符串里面所有的空格和标点符号。当所有的空格和标点去除后,将字符串所有字母变成小写。最后取出后面一半字符串并逆序再和前面一半字符比较是否相等。import reclass Solution: def isPalindrome(self, s): """ :type s: str :rtype: bool ...原创 2018-10-17 16:01:44 · 241 阅读 · 0 评论 -
leetcode167:Excel表列名称
思想:先将n求余26,若余数等于0,则是26的倍数,代表的字母是Z,然后n-26,继续求余。若余数不等0,通过ord计算出A的ASCII然后加上余数减1,得到相应字母的ASCII码,最后通过char函数将ASCII码转换成对应字母。class Solution: def convertToTitle(self, n): """ :type n: int...原创 2018-10-22 10:03:19 · 79 阅读 · 0 评论 -
leetcode35:搜索插入位置
思想:1.判断target是否大于等于nums[i],若是则return i,反之继续12.若循环结束,则返回len(nums)class Solution: def searchInsert(self, nums, target): """ :type nums: List[int] :type target: int ...原创 2018-10-10 19:56:51 · 100 阅读 · 0 评论 -
leetcode167:两数之和Ⅱ-输入有序数组
思想:定义下标start=0和end=len(numbers-1),将numbers[strat]和numbers[end]相加,相加的结果和target进行比较。若大于targe则end=end-1,若小于target则start=start-1,若相等则返回start+1和end+1。由于数组是有序数组,从数组头和尾元素相加开始判断和target的大小关系,这样可以快速找到目标元素c...原创 2018-10-19 09:43:38 · 116 阅读 · 0 评论 -
leetcode104:二叉树的最大深度
利用迭代的思想算出最大深度# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: d...原创 2018-10-16 10:07:36 · 490 阅读 · 0 评论 -
leetcode28:实现strStr
思想:将haystack按needle的长度进行分割,如果needle == haystack[i:i+len(needle)],则return i反之return -1class Solution2(object): def strStr(self, haystack, needle): """ :type haystack: str ...原创 2018-10-09 09:59:28 · 109 阅读 · 0 评论 -
leetcode172:阶乘后的零
思想:5的阶乘有一个零,6,7,8,9的阶乘同样也是一个零。10的阶乘有两个零,11-14的阶乘同样也是二个零。15的阶乘的有三个零,16-19的阶乘同样也是三个零。即阶乘尾数的零的个数是n除5取整,直到n等于0。class Solution(object): def trailingZeroes(self, n): """ :type...原创 2018-10-30 09:32:59 · 196 阅读 · 0 评论 -
leetcode190:颠倒二进制
思想:定义变量ans保存反转之后的二进制数,默认是全0。变量mask是1,若mask与n相与为真,则n的二进制形式最后一位为1,此时ans需要和1或,使得当前为二进制为1,反之ans不变即为0。n不断左移(左移的目的是去除最后一位二进制数),直到结束。class Solution: # @param n, an integer # @return an integer ...原创 2018-11-01 10:07:05 · 88 阅读 · 0 评论 -
leetcode367:有效的完全平方数
思想:1.定义变量l和h,存放中间变量2.将l加h整除2等于mid,然后算出mid的平方t,最后比较t和num的大小。3.若t<num,l等于mid+1;若t>num,h等于mid-1;若t=num,返回True4.直到循环结束,返回Falseclass Solution: def isPerfectSquare(self, num): "...原创 2018-11-17 10:31:27 · 135 阅读 · 0 评论 -
leetcode349:两个数组交集
思想:题目要求给定两个数组,编写一个函数来计算它们的交集。1.定义变量ans储存两个数组的交集2.将nums1和nums2去重3.判断nums1中的元素num是否在nums2中,若在则添加ans中,不在则继续for循环class Solution(object): def intersection(self, nums1, nums2): """ ...原创 2018-11-15 12:09:00 · 114 阅读 · 0 评论 -
leetcode345:反转字符串中的元音字母
思想:题目要求编写一个函数,以字符串作为输入,反转该字符串中的元音字母。1.定义一个列表vowels存放元音字母,变量start开始下标,end结束下标2.判断s[start]是否在vowels中,不在start+1。在的话再判断s[end]是否在vowels中,不在end-1。在的话s[start]和s[end]交换并且start+1,end-1。3.转换成字符串格式输出c...原创 2018-11-15 11:02:31 · 134 阅读 · 0 评论 -
leetcode350:两个数组的交集Ⅱ
思想:1.定义变量ans存放重复的元素,然后分别对nums1和nums2排序2.开始while循环,i和j都是从0开始。若nums1[i]<nums2[j] i+1,若nums1>nums2 j+1,若nums1=nums2 将元素放入ans并i和j同时加1class Solution(object): def intersect(self, nums1, num...原创 2018-11-16 10:20:24 · 66 阅读 · 0 评论 -
leetcode342:4的幂
思想:题目要求给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。1.判断n是否小于等于0,若是返回False,反之跳转22.将num%4的值加入n中,并且num整除4,一直到num等于1结束循环3.将n中余数相加,若和等于0则是4的幂,反之则不是。class Solution(object): def isPowerOfFour(sel...原创 2018-11-12 10:45:22 · 153 阅读 · 0 评论 -
leetcode42:有效的字母异位词
思想:题目要求给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。1.判断s和t长度是否相等,若相等则跳转2,反之则返回False。2.运用replace()函数将s[0]以''来代替,即去除字符串中所有s[0]元素,先对字符串t处理,然后对字符串s处理,处理完需判断剩下的字符串s和t是否相等,若相等则代表字符串s和t含有个数相等的s[0],继续2。若不...原创 2018-11-08 10:42:56 · 126 阅读 · 0 评论 -
leetceode324:3的幂
思想:题目要求给定一个整数,写一个函数来判断它是否是 3 的幂次方。1.判断n是否小于等于0,若是返回False,反之跳转22.将n%3的值加入num中,并且n整除3,一直到n等于1结束循环3.将num中余数相加,若和等于0则是3的幂,反之则不是。class Solution(object): def isPowerOfThree(self, n): ...原创 2018-11-11 14:11:13 · 113 阅读 · 0 评论 -
leetcode344:反转字符串
思想:题目要求编写一个函数,其作用是将输入的字符串反转过来。class Solution(object): def reverseString(self, s): """ :type s: str :rtype: str """ return(s[::-1])知识点:a = [0,1,2,3,...原创 2018-11-13 10:36:10 · 90 阅读 · 0 评论 -
leetcode204:计算质数
思想:判断n是否小于2,若是则返回0(由于0和1都不是质数)。定义一个dp存放标志位,若为值1则标志是质数,若为值0则标志不是质数。dp[0]=0和dp[1]=0代表数字0和1都不是质数。循环函数helper的功能是给比n小的2的倍数自己除外(例如4,6,8...),3的倍数,5的倍数,7的倍数等等质数的倍数赋值0(代表他们都不是质数)。当其中一个质数的倍数大于n则结束循环。然后计算dp中1的...原创 2018-11-05 15:57:43 · 353 阅读 · 0 评论 -
leetcode292:Nim游戏
思想:题目要求你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。每个人可以拿掉1-3块石头,当留给对手4个石头时,不管怎样我都能赢。所以我们只要给对手留下4的整数倍个石子,我们就能稳赢。比如现在有7个...原创 2018-11-10 11:14:04 · 70 阅读 · 0 评论 -
leetcode231:二的幂
思想:题目要求给定一个整数,编写一个函数来判断它是否是 2 的幂次方。若一个整数是2的幂次方,则二进制数表达形式中只有一个1,这样才会是2的幂次方。首先定义一个变量记录1出现的次数,再者判断这个数是否小于等于0,若是则直接返回False,反之进入循环。将n和1相与,若为1则count+1,在判断count是否大于1,若是则返回False,反之将n左移1位,继续判断,直到结束。class ...原创 2018-11-07 15:02:56 · 146 阅读 · 0 评论 -
leetcode202:快乐数
思想:定义字典record记录正整数每个位置上的数字的平方和,每次计算出来的平方和都保存。若平方和出现重复则不是快乐数,反之则是。变量sq_num记录每次的平方和。将n先求余10得到个位上的数并平方,然后整除10得到去除个位上数的其他数,n其次进行循环直到结束计算出平方和,然后判断平方和有没有出现过,若没有则继续算,反之则返回false。class Solution: def i...原创 2018-11-04 12:14:31 · 124 阅读 · 0 评论 -
leetcode290:单词模式
思想:题目要求给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式。这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应模式。1.首先判断pattern和str.split(" ")长度是否一致,若一致则跳转2,反之返回False2.其次先通过str.split(" ")将字符串s...原创 2018-11-09 20:46:15 · 76 阅读 · 0 评论 -
leetcode191:位1的个数
思想:定义变量mask标志1,定义变量count计数。将n和mask相与,若为1则count+1,反之n左移一位。依次循环直到n等于0结束class Solution(object): def hammingWeight(self, n): """ :type n: int :rtype: int """ ...原创 2018-11-02 09:34:58 · 98 阅读 · 0 评论 -
leetcode205:同构字符串
思想:定义一个空字典reserve,先判断s[i]是否再字典键中,若不在则继续判断t[i]是否在字典值中,若不在则赋值,若在则返回False。若在则判断值是否相等,相等则继续,反之则返回False。class Solution: def isIsomorphic(self, s, t): """ :type s: str :type...原创 2018-11-06 16:49:42 · 107 阅读 · 0 评论 -
leetcode198:打家劫舍
思想:判断nums的个数,若等于0直接返回,若等于1直接返回,若等于2取其中最大一个返回。1.当nums中元素大于2,定义变量dp存放每次结果的最大值。原始dp[0]=nums[0],dp[1]=max(nums[0],nums[1])。为何dp[1]不等于nums[1]呢?当nums[0]+nums[3]>nums[1]+nums[3]时,我们应该要的是nums[0]+nums[3...原创 2018-11-03 10:24:40 · 101 阅读 · 0 评论 -
leetcode27:移除元素
思想:1.定义新下标show=-1,代表着不重复元素的下标2.判断nums[i]是否等于val,若否则跳转3,若是则继续2。3.show=show+1,再将nums[i]赋值给nums[show]。class Solution: def removeElement(self, nums, val): """ :type nums: List...原创 2018-10-08 20:20:39 · 91 阅读 · 0 评论 -
leetcode101:对称二叉数
class Solution: def isSymmetric(self, root): """ :type root: TreeNode :rtype: bool """ def helper(root, mirror): if not root and not mirror: ...原创 2018-10-15 09:50:25 · 100 阅读 · 0 评论 -
leetcode100:相同的树
由于二叉树的知识点还不懂,我先借鉴了大佬的代码。后期我会看看二叉树原理的class Solution: def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool """ if not p...原创 2018-10-14 19:56:28 · 110 阅读 · 0 评论 -
leetcode58:最后一个单词的长度
思想:1.将s尾部的空格通过rstrip函数去除,然后通过split函数将字符串s按空格分开成一个个单词并存入news列表中2.返回news中最后一个单词长度class Solution: def lengthOfLastWord(self, s): """ :type s: str :rtype: int ""...原创 2018-10-13 18:26:14 · 192 阅读 · 0 评论 -
leetcode53:最大子序和
思想:1.从nums中依次取i+1个元素且对i+1个元素求和,将求和结果通过append函数放入列表count,当依次取后将count的中最大的和赋值给maxcount,然后i++,重复步骤12.最终返回maxcount中的最大值class Solution: def maxSubArray(self, nums): """ :type num...原创 2018-10-12 10:51:31 · 102 阅读 · 0 评论