LeetCode
文章平均质量分 53
zjrn
这个作者很懒,什么都没留下…
展开
-
LeetCode--Python解析【Valid Palindrome】(125)
题目:方法:class Solution: def isPalindrome(self, s): """ :type s: str :rtype: bool """ a=''.join([x for x in s if x.isalpha() or x.isdigit()]).lower() ...原创 2018-07-30 15:08:37 · 419 阅读 · 0 评论 -
LeetCode--Python解析【Insertion Sort List】(147)
题目:方法一:用到的基本概念有两个:链表的插入操作和插入排序方法首先说说链表的插入操作,就是在链表要插入的位置,断开当前链接,然后将前一节点的指针域指向要插入的节点,然后将插入节点的指针域指向下一个节点。插入排序则是将一个新的元素根据大小,插入已排序好的列表中的操作方法的具体代码实现如下构造一个新的链表,每次取原始链表的一个元素,根据大小关系插入新的链表中,最后返回新的链表# Definition...原创 2018-05-27 20:55:56 · 992 阅读 · 0 评论 -
LeetCode--Python解析【Maximum Gap】(75)
题目:方法:python可以用一种偷懒的方法使用python内置的sort()排序直接一行代码搞定class Solution(object): def sortColors(self, nums): """ :type nums: List[int] :rtype: void Do not return anything, modify n...原创 2018-05-22 12:48:44 · 594 阅读 · 0 评论 -
LeetCode--Python解析【Delete Node in a Linked List】(237)
题目:方法:链表为一种常见的数据结构本题目考察链表节点的删除操作首先取到该节点指针域所指节点的value,赋予node.val然后将指针域所指的下一个节点的地址,赋予node.next完成需要注意的是,由于需要先取到下一个节点的值所以两行语句的顺序不能改变否则取到的值就不是下一个节点的值了这里需要理解一下# Definition for singly-linked list.# class Li...原创 2018-05-25 19:00:52 · 811 阅读 · 0 评论 -
LeetCode--Python解析【Maximum Gap】(164)
题目:方法:使用了python中的内置排序方法sort()剩下就是根据题目要求,依次计算差值最后返回最大差值class Solution(object): def maximumGap(self, nums): """ :type nums: List[int] :rtype: int """ res = 0...原创 2018-05-21 20:13:10 · 1081 阅读 · 0 评论 -
LeetCode--Python解析【Two Sum II - Input array is sorted】(167)
题目:方法一:二分查找的方法由于是顺序数组,所以一次遍历数组中的元素然后求target与该元素的差值从数组中以该元素为开头的子数组中,使用二分查找,寻找等于差值的元素下标组成列表返回class Solution(object): def twoSum(self, numbers, target): """ :type numbers: List[int] ...原创 2018-05-21 16:21:45 · 818 阅读 · 0 评论 -
LeetCode--Python解析【Search Insert Position】(35)
题目:方法一:一个非常简单又实用的方法,用到了python内建的函数sort()和index()体现出了python的简洁之美~这里忠心的想说一句:人生苦短,我用Python~class Solution(object): def searchInsert(self, nums, target): """ :type nums: List[int] ...原创 2018-05-21 15:16:16 · 567 阅读 · 0 评论 -
LeetCode--Python解析【Contiguous Array】(525)
题目:方法:首先考虑如何计算具有相同数量的0和1,可以通过将0转换为-1,若长度n的元素之和为0,则说明n个元素中的0与1的个数相等。若前n个元素之和等于前n+j个元素之和,则n到n+j个元素中的0与1个数相等。可以通过2*nums[i] -1的方法,将nums中的0转换为1。接下来创建一个dict,键值为元素累加求和,value为最后一个累加元素的角标遍历的同时,当前元素与dict中键值相同元素...原创 2018-05-14 16:33:37 · 1043 阅读 · 0 评论 -
LeetCode--Python解析【Binary Tree Inorder Traversal】(94)
题目:首先说说二叉树的遍历,分为,前序,中序和后序遍历前序遍历:根结点、左子树、右子树。中序遍历:左子树、根结点、右子树。后序遍历:左子树、右子树、根结点。方法一:递归递归的方法很简单,反复调用方法本身,当其没有左右孩子时,返回该节点的值,再根据中序遍历的顺序对二叉树进行遍历。代码如下。# Definition for a binary tree node.# class TreeNode:#...原创 2018-05-14 11:36:09 · 836 阅读 · 0 评论 -
LeetCode--Python解析【Contains Duplicate】
题目:方法:把给定list中的元素依次取出作为key值放入定义好的dict中,不需要value可赋None检查是否有重复的key存在class Solution: def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ ...原创 2018-04-28 16:31:27 · 638 阅读 · 0 评论 -
LeetCode--Python解析【Reverse Linked List】(206)
题目:方法一:考察链表的操作和遍历新建一个链表创建一个头节点,头节点不用来储存数据,只用指针域然后每次将原始链表的元素插入新链表的头节点后的位置最后返回主链表结束# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# ...原创 2018-05-27 21:45:31 · 690 阅读 · 0 评论 -
LeetCode--Python解析【Missing Number】(268)
题目:方法:class Solution: def missingNumber(self, nums): """ :type nums: List[int] :rtype: int """ a = len(nums) b = int(a*(a+1)/2) for n...原创 2018-07-23 17:19:03 · 316 阅读 · 0 评论 -
LeetCode--Python解析【Max Consecutive Ones】(485)
题目:方法:class Solution: def findMaxConsecutiveOnes(self, nums): """ :type nums: List[int] :rtype: int """ n = 0 res = 0 for i in nums:...原创 2018-07-23 17:34:05 · 397 阅读 · 0 评论 -
LeetCode--Python解析【Remove Element】(27)
题目:方法:class Solution: def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ n = 0 for i in num...原创 2018-07-30 14:01:59 · 466 阅读 · 0 评论 -
LeetCode--Python解析【Move Zeroes】(283)
题目:方法:class Solution: def moveZeroes(self, nums): """ :type nums: List[int] :rtype: void Do not return anything, modify nums in-place instead. """ j...原创 2018-07-30 10:50:09 · 377 阅读 · 0 评论 -
LeetCode--Python解析【Remove Duplicates from Sorted Array】(26)
题目:方法:class Solution: def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ if not nums:return 0 len_list = len(nums) ...原创 2018-07-26 20:38:58 · 1494 阅读 · 0 评论 -
LeetCode--Python解析【Add Binary】(67)
题目:方法:class Solution: def addBinary(self, a, b): """ :type a: str :type b: str :rtype: str """ len_a = len(a) - 1 len_b = len(b) - 1...原创 2018-07-26 16:18:35 · 369 阅读 · 1 评论 -
LeetCode--Python解析【Largest Number】(179)
题目:方法:class Solution: def cmp(self,x,y): return (x > y) - (x < y) def comper(self,x,nums): temp = 0 for n in nums: n = str(n) ...原创 2018-07-26 14:24:51 · 1126 阅读 · 0 评论 -
LeetCode--Python解析【Length of Last Word】(58)
题目:方法:class Solution: def lengthOfLastWord(self, s): """ :type s: str :rtype: int """ temp = s.split(" ") while temp: x = temp.p...原创 2018-07-24 17:32:21 · 258 阅读 · 0 评论 -
LeetCode--Python解析【String Compression】(443)
题目:方法:class Solution: def compress(self, chars): """ :type chars: List[str] :rtype: int """ n = len(chars) i , count = 0 , 1 for j in...原创 2018-07-24 17:13:04 · 2056 阅读 · 0 评论 -
LeetCode--Python解析【Detect Capital】(520)
题目:方法:class Solution: def detectCapitalUse(self, word): """ :type word: str :rtype: bool """ test = word.upper() test1 = word.lower() ...原创 2018-07-24 16:33:18 · 710 阅读 · 0 评论 -
LeetCode--Python解析【Longest Continuous Increasing Subsequence】(674)
题目:方法:class Solution: def findLengthOfLCIS(self, nums): """ :type nums: List[int] :rtype: int """ if not nums: return 0 res = num...原创 2018-07-24 16:01:41 · 527 阅读 · 0 评论 -
LeetCode--Python解析【Contains Duplicate II】
题目:方法:首先定义一个dict用来存储出现重复值的下标temp用来存储重复的值,方便遍历dict最后通过三个for循环来验证重复的数字的下标是否符合题目给定的已知条件程序用时56ms不算很慢但是三个for循环的嵌套增加了时间复杂度感觉应该会有更好的方法欢迎一起交流class Solution: def containsNearbyDuplicate(self, nums, k): ...原创 2018-04-28 16:04:00 · 706 阅读 · 0 评论 -
LeetCode--Python解析【Isomorphic Strings】
题目:方法:定义两个dict一个用来储存s中各字母出现的下标另一个储存t中各字母的下标key为字母,value为下标再通过一个循环比较字符串中重复出现的字母的下标是否相同class Solution: def isIsomorphic(self, s, t): """ :type s: str :type t: str :rt...原创 2018-04-28 15:22:16 · 821 阅读 · 0 评论 -
LeetCode--Python解析【Group Anagrams】(49)
题目:方法:首先将strs中的每一个字符串转换为list进行排序,再append进新的list中此时字符串的顺序变为一致,但在strs中的索引没有变化接下来构建一个dict,采用hash table的方法,遍历新的listkey值为字符串,value为出现的索引最后把索引对应的字符串添加进新的列表中输出,结束class Solution: def groupAnagrams(self, s...原创 2018-05-06 18:22:26 · 966 阅读 · 0 评论 -
LeetCode--Python解析【Sort Characters By Frequency】(451)
题目:方法:遍历字符串s到字典中,key为s中出现的字符,value为出现次数随后遍历字典,每次将最大值输出value次依次将最大值输出至result中返回result,结束class Solution: def frequencySort(self, s): """ :type s: str :rtype: str """...原创 2018-05-11 10:44:28 · 1037 阅读 · 0 评论 -
LeetCode--Python解析【Maximum Subarray】(53)
题目:方法:这道题虽然是easy tag,但是从编程思想上来说还是有一定难度,参考了别人的算法进行完成。算法时间复杂度为O(n),一次遍历数组,对数组进行累加的操作。需要维护两个变量,分别为局部最优curr_sum,和全局最优max_sum。遍历数组时,从第一个元素开始累加,并赋值给局部最优curr_sum,当局部最优为负数时,可放弃对应子串,重置局部最优为0。每一次计算出新的局部最优时,与当前全...原创 2018-05-17 11:39:32 · 1470 阅读 · 3 评论 -
LeetCode--Python解析【Top K Frequent Elements】(347)
题目:方法:首先将nums遍历进字典之中键值为nums中的数字,value为数字出现的次数随后每次求字典中的最大元素的索引,将索引append进list中,并删除该元素重复k次,取出现次数最多的k个元素class Solution: def topKFrequent(self, nums, k): """ :type nums: List[int] ...原创 2018-05-09 22:45:19 · 1302 阅读 · 0 评论 -
LeetCode--Python解析【Longest Palindrome】(409)
题目:方法:首先设置一个字典dict1,和两个计数器j,zj用来计算回文长度,z统计出现单数次字符的个数字典用来存储出现过的字符和出现的次数出现的字符作为键值,次数作为value构造好字典之后,对字典进行遍历出现双数次数的字符一定可以用来构造回文出现单数次数的字符要构造回文就需要次数-1因为如果 出现单数次的字符 的次数 为单数(这句话比较难理解),就是判断z是单数还是双数回文长度需要+1(...原创 2018-05-02 22:41:25 · 1394 阅读 · 0 评论 -
LeetCode--Python解析【Find the Difference】(389)
题目:方法1:这道题的的解法类似于LeetCode--Python解析【Intersection of Two Arrays II】(350),第一种方法也用list的方法来解将s转为list,然后遍历t中的字符,若存在于s中,则删除s中的该字符若s中无该字符,则证明该字符是被添加的字符,返回该字符class Solution: def findTheDifference(self, s,...原创 2018-05-01 18:42:06 · 807 阅读 · 0 评论 -
LeetCode--Python解析【Intersection of Two Arrays II】(350)
题目:方法1:每次pop出nums2中的第一个元素,查找nums1中是否存在。若存在,将该元素放入result中,并删除nums1中的该元素。class Solution: def intersect(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int]...原创 2018-05-01 18:14:36 · 944 阅读 · 0 评论 -
LeetCode--Python解析【Intersection of Two Arrays】
题目:方法:首先设置一个dict,遍历num1,将不重复的的数字作为键值放入dict再对nums2进行去重的处理遍历nums2,若数字存在于dict中,则加入result列表最后返回result列表class Solution: def intersection(self, nums1, nums2): """ :type nums1: List[int]...原创 2018-05-01 17:33:30 · 835 阅读 · 0 评论 -
LeetCode--Python解析【Valid Anagram】
题目:方法:设置两个dict,键值分别为t,与s中出现的字母value为出现的次数遍历两个字符串对比两个dict如果键值对应的value相等则返回True,value不等或键值不同则返回Falseclass Solution: def isAnagram(self, s, t): """ :type s: str :type t: str ...原创 2018-05-01 17:16:20 · 717 阅读 · 0 评论 -
LeetCode--Python解析【First Unique Character in a String】
题目:方法:利用collections.OrderedDict库创建有序字典遍历字符串,字母为k,下标为value放入字典中遍历字典,value长度为1则返回最后如果未找到不重复的字符,则返回-1class Solution: def firstUniqChar(self, s): """ :type s: str :rtype: int ...原创 2018-05-01 16:47:54 · 870 阅读 · 0 评论 -
LeetCode--Python解析【Two Sum】
题目:方法1:暴力算法,直接循环套循环。class Solution: def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ result = list(...原创 2018-04-26 20:15:00 · 4678 阅读 · 0 评论 -
LeetCode--Python解析【Reverse Integer】
题目:方法:利用Python切片的方法来做,首先转换成str,再进行切片操作。[::-1]的使用是精髓。这个是python的slice notation的特殊用法。a = [0,1,2,3,4,5,6,7,8,9]b = a[i:j] 表示复制a[i]到a[j-1],以生成新的list对象b = a[1:3] 那么,b的内容是 [1,2]当i缺省时,默认为0,即 a[:3]相当于 a[0:3]当j...原创 2018-04-26 21:06:06 · 792 阅读 · 0 评论 -
LeetCode--Python解析【Plus One】(66)
题目:方法:很简单的一道题,时间复杂度为O(n),首先将数组转换为数字,加一后再转换回数组,最后返回,结束。其中对数组进行了str到int的两次转换。class Solution(object): def plusOne(self, digits): """ :type digits: List[int] :rtype: List[int]...原创 2018-05-17 17:10:08 · 608 阅读 · 0 评论 -
LeetCode--Python解析【Happy Number】
题目:方法:使用一个求余和int保留整数的小技巧,取平方和的每个位置上的数字。新建一个list,每次求和的结果放进去。每求一次和判断是否等于1,等于1的话True。不等于1的话在list里检索是否有重复的值。有的话False。class Solution: def isHappy(self, n): """ :type n: int :rty...原创 2018-04-28 03:19:20 · 1332 阅读 · 0 评论 -
LeetCode--Python解析【Single Number】
题目:方法:很简单的一道题目,很多方法都可实现,由于是Hash Table的题目,就用Hash的方法来写,其他方法就不一一赘述了。思想是建立一个字典,key值储存list里的元素,value储存出现的次数,遍历一遍list之后,统计出现次数,再对字典里的value进行遍历,取最小值即可。class Solution: def singleNumber(self, nums): ...原创 2018-04-28 02:20:27 · 1118 阅读 · 0 评论 -
LeetCode--Python解析【Set Mismatch】(645)
题目:方法:非常简单的一道题,首先将nums遍历进一个dict,同时找出重复的数字,放入result中下一步在遍历n个整数,找出不在dict中的整数,放入result中返回,结束class Solution: def findErrorNums(self, nums): """ :type nums: List[int] :rtype: Li...原创 2018-05-05 21:40:48 · 1090 阅读 · 0 评论