LeetCode
刷题记录
mxxxkuku
这个作者很懒,什么都没留下…
展开
-
LeetCode 338 比特位计数
动态规划class Solution: def countBits(self, n: int) -> List[int]: # 动态规划 # i+1 只比 i多1 bits = [0] highbit = 0 # 最高有效位 for i in range(1, n+1): if i & (i-1) == 0: # i-1 全为1时,更新最高有效位原创 2021-07-06 09:31:19 · 67 阅读 · 0 评论 -
LeetCode 350 两个数组的交集2 Python3
1、暴力class Solution: def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]: # 1、暴力 O(n^2) res = [] size1, size2 = len(nums1), len(nums2) for num1 in nums1: if num1 in nums2:原创 2021-06-09 10:54:25 · 59 阅读 · 0 评论 -
LeetCode 344 反转字符串 Python3
1、交换字符class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ # 1 交换字符 O(n) size = len(s) for i in range(size//2): s[i],原创 2021-05-28 12:47:15 · 71 阅读 · 0 评论 -
LeetCode 326 3的幂 Python3
1、循环class Solution: def isPowerOfThree(self, n: int) -> bool: # 循环 res = n if res<=0: return False while res>1: if res%3==0: #是否为3的倍数 res = res//3 else:原创 2021-05-14 01:01:07 · 70 阅读 · 0 评论 -
LeetCode 283 移动零 Python3
1、双指针class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ # 双指针 size = len(nums) zero = -1 for i in range(size):原创 2021-05-14 00:39:32 · 75 阅读 · 0 评论 -
LeetCode 268 丢失的数字 Python3
1、原数组排序后查找class Solution: def missingNumber(self, nums: List[int]) -> int: # 排序 O(nlogn) n = len(nums) nums = sorted(nums) for i in range(0,n): if nums[i] != i: return i原创 2021-05-13 00:41:44 · 115 阅读 · 0 评论 -
LeetCode 242 有效的字母异位 Python3
1、散列表/字典记录信息class Solution: def isAnagram(self, s: str, t: str) -> bool: dict = {} # 字典存入s的信息 for ch in s: if ch in dict: dict[ch] = dict[ch]+1 else: dict[ch] = 1原创 2021-05-11 23:50:01 · 68 阅读 · 0 评论 -
LeetCode 237 删除链表中的节点 Python3
单链表只利用当前节点信息删除当前节点# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteNode(self, node): """ :type node: ListNode :rt原创 2021-05-11 23:22:12 · 80 阅读 · 0 评论 -
LeetCode 234 回文链表 Python3
1、存储再反转# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def isPalindrome(self, head: ListNode) -> bool: # O(n) O(n)原创 2021-05-11 01:24:22 · 61 阅读 · 0 评论 -
LeetCode 217 存在重复元素 Python3
1、散列表/字典/集合class Solution: def containsDuplicate(self, nums: List[int]) -> bool: m = set() for num in nums: if num in m: return True else: m.add(num) return False2原创 2021-05-11 00:08:48 · 72 阅读 · 0 评论 -
LeetCode 206 反转单链表 python3
1、迭代# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def reverseList(self, head: ListNode) -> ListNode: # 三个指针,类似于冒泡原创 2021-04-20 19:43:25 · 101 阅读 · 0 评论 -
LeetCode 204 计数质数 Python3
1、暴力 超时class Solution: def countPrimes(self, n: int) -> int: # 暴力,O(nlogn) def IsPrimes(n): for i in range(2,n//2+1): if n%i == 0: return False return True # 2以下无原创 2021-04-20 15:40:09 · 83 阅读 · 0 评论 -
LeetCode 202 快乐数 python3
实质:检查是否有循环1、循环遍历class Solution: def isHappy(self, n: int) -> bool: # 记录,以防止循环 m = set() res = n while res>1: # 主体 n = res res = 0 if n in m: # 检测是否循环 retur原创 2021-04-15 14:28:53 · 60 阅读 · 0 评论 -
LeetCode 191 位1的个数 python3
1、遍历class Solution: def hammingWeight(self, n: int) -> int: # 遍历,遇到1则count+1 时间复杂度O(n) count = 0 for i in range(32): count += n&1 n >>= 1 return count2、分治法class Solution:原创 2021-04-15 13:44:24 · 75 阅读 · 0 评论 -
LeetCode 190 颠倒二进制位 Python3
1、循环,位运算class Solution: def reverseBits(self, n: int) -> int: # 循环 res为结果,每次循环左移并和n当前位(n&1)做或运算,n右移 res = 0 for i in range(32): res = (res<<1) | (n&1) n >>= 1 return res原创 2021-04-12 10:37:37 · 145 阅读 · 0 评论 -
LeetCode 172 阶乘后的零 Python3
1、暴力 (超时)class Solution: def trailingZeroes(self, n: int) -> int: # 0乘任何数都为0 暴力 O(n) res, count = n, 0 while n>1: n = n-1 res = res*n while mod(res,10)==0: count += 1原创 2021-04-08 11:53:22 · 83 阅读 · 0 评论 -
LeetCode 171 Excel表列序号 Python3
1、倒序累加class Solution: def titleToNumber(self, columnTitle: str) -> int: # 先理解题目 AB=1*26+2 ZY=26*26+25=701 二十六进制问题 # 倒序累加 res=0 count=0 for i in range(len(columnTitle)-1,-1,-1): res += (ord(colum原创 2021-04-07 11:15:27 · 79 阅读 · 0 评论 -
LeetCode 169 多数元素 Python3
1、散列表class Solution: def majorityElement(self, nums: List[int]) -> int: # 字典存储 时间O(n) 最差空间O(n) dic = defaultdict(int) for num in nums: dic[num] = dic[num]+1 # 返回value值最大的 return max(dic,key=dic.原创 2021-04-06 10:58:26 · 96 阅读 · 0 评论 -
LeetCode 160 相交链表 Python3
1、散列表查找# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: # 存原创 2021-04-06 09:22:56 · 96 阅读 · 1 评论 -
LeetCode 141 环形链表 Python3
1、遍历并记录,如果遍历到记录过的节点则为循环链表(散列表记录)# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def hasCycle(self, head: ListNode) -> bool: # 遍历原创 2021-04-01 00:46:09 · 73 阅读 · 0 评论 -
LeetCode 136 只出现一次的数字 Python3
1、使用字典记录已出现的值,出现过(两次)则删除class Solution: def singleNumber(self, nums: List[int]) -> int: # 1、使用额外空间,散列表, dict = {} for num in nums: if dict.__contains__(str(num)): del dict[str(num)]原创 2021-03-31 01:08:48 · 69 阅读 · 0 评论 -
LeetCode 125 验证回文串 Python3
1、双指针 左右对比这里主要学习一下Python3中字符串相关函数str.lower() # 所有大写字符转换为小写str.isalnum() # 检测字符串是否由字母和数字组成ord(c) # 返回对应的 ASCII 数值class Solution: def isPalindrome(self, s: str) -> bool: s = s.lower() size = len(s) left = 0 ri原创 2021-03-30 01:47:29 · 73 阅读 · 0 评论 -
LeetCode 121 122 买卖股票的最佳时机 python3
1、暴力(超时)class Solution: def maxProfit(self, prices: List[int]) -> int: # 1、暴力 O(n2) days = len(prices) maxpro = 0 for i in range(days): for j in range(i+1,days): maxpro = max(prices[原创 2021-03-26 17:27:27 · 53 阅读 · 0 评论 -
LeetCode 118 119 杨辉三角 python3
1、双循环class Solution: def generate(self, numRows: int) -> List[List[int]]: if numRows==1: return [[1]] # 一二层 res = [[1],[1,1]] # 之后的前后各增加1以及上一层相近的两个数之和:res[i-1][j]+res[i-1][j+1] for i in range (2原创 2021-03-25 15:41:28 · 86 阅读 · 0 评论 -
LeetCode 112 路径总和 python3
1、递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def hasPathSum(self, root: TreeNode,原创 2021-03-18 15:24:06 · 73 阅读 · 0 评论 -
LeetCode 111 二叉树的最小深度 python3
1、深度优先搜索# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def minDepth(self, root: TreeNode原创 2021-03-17 16:11:44 · 100 阅读 · 0 评论 -
LeetCode 110 平衡二叉树 Python3
1、深度搜索,自顶向下遍历节点时都判断是否满足平衡的条件# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def isBalan原创 2021-03-17 14:05:23 · 94 阅读 · 0 评论 -
LeetCode 108 将有序数组转换为二叉搜索树 Python3
1、 暴力递归,由于有序,每次取中间数为节点# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def sortedArrayToBS原创 2021-03-16 15:06:23 · 50 阅读 · 0 评论 -
LeetCode 104 二叉树的最大深度 python3
1、深度优先搜索# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def maxDepth(self, root: TreeNode原创 2021-03-15 23:29:05 · 81 阅读 · 0 评论 -
LeetCode 100 相同的树 python3
1、深度优先搜索# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def isSameTree(self, p: TreeNode.原创 2021-03-15 16:28:07 · 97 阅读 · 1 评论 -
LeetCode 101 对称二叉树 python3
1、深度优先搜索活用递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def isSymmetric(self, root:原创 2021-03-15 16:26:50 · 54 阅读 · 0 评论 -
LeetCode 88 合并两个有序数组 python3
1、使用python中的list插入class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. """ # 思路:遍历nums2,如果大于nums1中的数字则插入 fo原创 2021-03-15 09:41:55 · 75 阅读 · 0 评论 -
LeetCode 83 删除排序链表中的重复元素 python3
1、简单遍历链表只要熟悉python中的链表操作即可# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def deleteDuplicates(self, head: ListNode) -> ListN原创 2021-03-12 13:51:00 · 89 阅读 · 0 评论 -
LeetCode 70 爬楼梯 python3
1、暴力递归超时class Solution: def climbStairs(self, n: int) -> int: # 递归 if n<=3: return n else: return self.climbStairs(n-1)+self.climbStairs(n-2)2、循环 从上一个解法不难看出 f(n) = f(n-1) +f(n-2)class So原创 2021-03-12 10:37:34 · 60 阅读 · 0 评论 -
LeetCode 69 x的平方根 Python3
1、二分查找class Solution: def mySqrt(self, x: int) -> int: # 思路:二分查找 left,right = 0,x while left <= right: mid = left+(right-left)//2 temp = mid*mid if temp == x or (temp<x原创 2021-03-11 23:42:42 · 77 阅读 · 0 评论 -
LeetCode 67 二进制求和 python3
1、简单暴力,将每个字符转化为数字后相加class Solution: def addBinary(self, a: str, b: str) -> str: # 思路:如果大于等于2,则进位 i, cur = 0, 0 res = list() while a or b or cur: # 如果还有字符未存 if a: # 每次存完数字后丢弃 num1 = int原创 2021-03-10 14:23:36 · 78 阅读 · 0 评论 -
LeetCode 66 加一 Python3
1、循环,考虑进位情况即可class Solution: def plusOne(self, digits: List[int]) -> List[int]: # 思路:需要注意需要进位的情况 # 不进位 if digits[-1] < 9: digits[-1] += 1 return digits # 进位 size = len(digits) .原创 2021-03-10 00:10:34 · 77 阅读 · 0 评论 -
LeetCode 58 最后一个单词的长度 Python3
1、倒着计数class Solution: def lengthOfLastWord(self, s: str) -> int: # 思路:倒着计数,直到遇到空格 size = len(s) if size == 0: return 0 res = 0 for i in range(size-1,-1,-1): if s[i] != ' ':原创 2021-03-09 23:35:19 · 56 阅读 · 0 评论 -
LeetCode 53 最大子序和 python3
1、暴力,O(n^3) ,超时2、贪心 (官方解法一)class Solution: def maxSubArray(self, nums: List[int]) -> int: # 思路:贪心,保留当前最大和 size = len(nums) array=list() pre, maxsum = 0, nums[0] for i in range(size): pre = max原创 2021-03-09 10:52:38 · 53 阅读 · 0 评论 -
LeetCode 38 外观数列 python3
1、暴力思路:使用两个list,一个用来存表述。class Solution: def countAndSay(self, n: int) -> str: array=list() array.append(1) for j in range(n-1):# 外循环 i = 0 size = len(array) newarray=list()原创 2021-03-08 16:25:20 · 84 阅读 · 0 评论