LeetCode
咸鱼在厦大
厦门大学研究生在读,哔哩哔哩账号同名(咸鱼在厦大),专注于考研和AI技术分享,欢迎去踩!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode0013罗马数字转整数
LeetCode0013罗马数字转整数代码:class Solution: def romanToInt(self, s: str) -> int: d = {'I': 1, 'IV': 3, 'V': 5, 'IX': 8, 'X': 10, 'XL': 30, 'L': 50, 'XC': 80, 'C': 100, 'CD': 300, 'D': 500, 'CM': 800, 'M': 1000} result = ..原创 2021-02-04 22:52:53 · 173 阅读 · 0 评论 -
LeetCode0012整数转罗马数字
LeetCode0012整数转罗马数字代码:class Solution: def intToRoman(self, num: int) -> str: #(key:value) digits = [(1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), (100, "C"), (90, "XC"),(50, "L"), (40, "XL"), (10, "X"), (9, "IX"), (5, "V")..原创 2021-02-03 22:31:22 · 189 阅读 · 0 评论 -
LeetCode557反转字符串中的单词3
LeetCode557反转字符串中的单词3 class Solution(object): def reverseWords(self, s): return " ".join(each[::-1] for each in s.split(" "))思路:先将字符串转换为单词,然后将其逆序,然后再将一个个的单词join成一个字符串。复杂度分析时间复杂度:O(n)空间复杂度:O(n)...原创 2021-01-29 21:27:17 · 188 阅读 · 0 评论 -
LeetCode344 反转字符串
LeetCode344 反转字符串代码:class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ s[:]=s[::-1]思路:这…,我还能说什么,python切片,绝了。...原创 2021-01-29 21:26:46 · 152 阅读 · 0 评论 -
LeetCode239 滑动窗口最大值
LeetCode239 滑动窗口最大值代码:class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: n = len(nums) # 注意 Python 默认的优先队列是小根堆 q = [(-nums[i], i) for i in range(k)] heapq.heapify(q) ans =..原创 2021-01-28 20:11:57 · 160 阅读 · 0 评论 -
LeetCode236 二叉树的最近公共祖先
LeetCode236 二叉树的最近公共祖先代码:class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'Tre..原创 2021-01-27 16:30:03 · 139 阅读 · 0 评论 -
LeetCode235 二叉搜索树的最近公共祖先
LeetCode235 二叉搜索树的最近公共祖先代码: # 利用二叉搜索树的特点,如果p、q的值都小于root,说明p q 肯定在root的左子树中;如果p q都大于root,说明肯定在root的右子树中,如果一个在左一个在右 则说明此时的root记为对应的最近公共祖先class Solution(object): def lowestCommonAncestor(self, root, p, q): """ :type root: TreeNode ..原创 2021-01-27 16:28:13 · 173 阅读 · 0 评论 -
LeetCode0231 2的幂
LeetCode0231 2的幂代码:class Solution: def isPowerOfTwo(self, n: int) -> bool: return n > 0 and n & (n - 1) == 0思路:巧妙利用位运算,若 n = 2^x,且 x 为自然数(即 n 为 2 的幂),则一定满足以下条件:恒有 n & (n - 1) == 0,这是因为:n 二进制最高位为 1,其余所有位为 0;n−1 二进..原创 2021-01-27 16:27:35 · 148 阅读 · 0 评论 -
LeetCode230 二叉树中第K小的元素
LeetCode230 二叉树中第K小的元素代码:#生成器写法class Solution: def mid_order(self, root): if not root: return yield from self.mid_order(root.left) yield root.val yield from self.mid_order(root.right) def kthSmallest(self, r..原创 2021-01-26 16:51:32 · 179 阅读 · 0 评论 -
LeetCode217 存在重复元素
LeetCode217 存在重复元素代码:class Solution: def containsDuplicate(self, nums: List[int]) -> bool: return False if len(set(nums))==len(nums) else True思路:直接将列表转换为set,然后利用set的性质,比较前后两者长度是否一样。...原创 2021-01-26 16:50:53 · 204 阅读 · 0 评论 -
[LeetCode0215 数组中的第K个最大元素
LeetCode0215 数组中的第K个最大元素代码:# 时间复杂度:o(nlogn)# 快速排序def quick_sort(alist, start, end): if start >= end: return mid_value = alist[start] low = start hight = end while low < hight: while low<high and alist[..原创 2021-01-26 16:50:13 · 166 阅读 · 0 评论 -
LeetCode206反转链表
206反转链表代码:#递归class Solution(object): def reverseList(self, head): """ :type head: ListNode :rtype: ListNode """ # 递归终止条件是当前为空,或者下一个节点为空 if(head==None or head.next==None): return head # 这里的cur就是最后..原创 2021-01-25 17:09:32 · 179 阅读 · 0 评论 -
LeetCode169 多数元素
169 多数元素代码:# Boyer-Moore 投票算法class Solution: def majorityElement(self, nums): count = 0 candidate = None for num in nums: if count == 0: candidate = num count += (1 if num == candi..原创 2021-01-25 17:08:55 · 153 阅读 · 0 评论 -
LeetCode160 相交链表
160 相交链表代码:class Solution(object): def getIntersectionNode(self, headA, headB): ha, hb = headA, headB while ha != hb: ha = ha.next if ha else headB hb = hb.next if hb else headA return ha思路: ..原创 2021-01-25 17:08:05 · 147 阅读 · 0 评论 -
LeetCode0155
LeetCode0155 最小栈题目描述设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。sh(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出..原创 2021-01-23 22:47:09 · 167 阅读 · 0 评论 -
LeetCode0148
LeetCode148 排序链表题目描述:代码:# Definition for singly-linked list.class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = nextclass Solution: def sortList(self, head: ListNode) -> ListNode: #..原创 2021-01-23 22:45:43 · 180 阅读 · 0 评论 -
LeetCode0146
0146 LRU缓存机制题目描述:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓..原创 2021-01-23 22:43:58 · 179 阅读 · 0 评论 -
LeetCode0088
题目:合并两个有序数组题目解释:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1: 输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6]..原创 2021-01-22 22:15:01 · 195 阅读 · 0 评论 -
LeetCode0142
LeetCode142 环形链表二题目描述:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:..原创 2021-01-22 19:47:19 · 161 阅读 · 0 评论 -
LeetCode0141
LeetCode 141 环形链表代码:class Solution: def hasCycle(self, head: ListNode) -> bool: seen = set() while head: if head in seen: return True seen.add(head) head = head.next r..原创 2021-01-22 19:37:15 · 160 阅读 · 0 评论 -
LeetCode0136
题目:只出现一次的数字代码:from functools import reduceclass Solution: def singleNumber(self, nums) -> int: return reduce(lambda x, y: x ^ y, nums)思路:使用位运算符,可以很简单的解决这道题,其中涉及到Python reduce函数,链接已经准备好了,还有就是位运算符的知识点,这是链接:Python位运算符...原创 2021-01-22 19:35:22 · 168 阅读 · 0 评论 -
LeetCode0124
LeetCode0124 二叉树的最大路径和代码:class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = rightclass Solution: def __init__(self): self.maxSum = float("-inf") ..原创 2021-01-21 19:09:03 · 188 阅读 · 2 评论 -
LeetCode0122
如果你不够优秀,遇见也不配拥有,加油,亲爱的自己!LeetCode0122买卖股票的最佳时机2代码:class Solution: def maxProfit(self, prices: List[int]) -> int: profit = 0 for i in range(1, len(prices)): dayprofit = prices[i] - prices[i - 1] if tmp.原创 2021-01-21 18:56:23 · 153 阅读 · 1 评论 -
LeetCode合集
如果你不够优秀,遇见也不配拥有,加油,亲爱的自己! List itemList item List item原创 2021-01-21 18:50:10 · 335 阅读 · 1 评论 -
LeetCode0121
如果你不够优秀,遇见也不配拥有,加油,亲爱的自己!LeetCode0121买卖股票的最佳时机1代码:class Solution: def maxProfit(self, prices) -> int: inf = int(1e9) minprice = inf maxprofit = 0 for price in prices: maxprofit = max(price - minpr.原创 2021-01-21 18:47:46 · 144 阅读 · 1 评论 -
LeetCode0088、0089、0104
LeetCode0088代码:class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: nums1_copy = nums1[:m] nums1[:] = [] p1 = 0 p2 = 0 while p1 < m and p2 < n: .原创 2021-01-20 16:44:58 · 198 阅读 · 5 评论 -
LeetCode0062、0070、0078
LeetCode0062代码:class Solution: def uniquePaths(self, m: int, n: int) -> int: f = [[1] * n] + [[1] + [0] * (n - 1) for _ in range(m - 1)] #注意,这里[1] * n是先创建了一个全是1的1*n维的行矩阵,然后在让其加上两个开头为1 的(m-1)* n 维的矩阵。 #print(f) f..原创 2021-01-19 17:01:20 · 235 阅读 · 0 评论 -
LeetCode0056、0059、0061
LeetCode0054class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: if not matrix or not matrix[0]: return list() rows, columns = len(matrix), len(matrix[0]) visited = [[False] * c.原创 2021-01-18 22:46:47 · 159 阅读 · 2 评论 -
LeetCode 0043、0046、0053
LeetCode0043LeetCode0043代码:def multiply(self, num1: str, num2: str) -> str: if num1 == "0" or num2 == "0": return "0" ans = "0" m, n = len(num1), len(num2) for i in range(n - 1, -1, -1): .原创 2021-01-17 22:10:35 · 250 阅读 · 0 评论 -
2021-01-16
LeetCode0023代码:def mergeKLists(self, lists: List[ListNode]) -> ListNode: import heapq dummy = ListNode(0) p = dummy head = [] for i in range(len(lists)): if lists[i] : heapq.heappus.原创 2021-01-16 14:46:36 · 151 阅读 · 0 评论 -
Leetcode0016、0020、0021
0016题目 LeetCode0016思路:就是先排序,然后双指针遍历一下,先考虑枚举第一个元素 a,对于剩下的两个元素 b 和 c,我们希望它们的和最接近target−a,设数组的长度为 n,我们先枚举 a,它在数组中的位置为 i;为了防止重复,我们在位置 [i+1, n)的范围内枚举 b 和 c,b从i+i开始向后遍历,然后c从n向i+i反向遍历,直到相遇为止,如果 a+b+c≥target,那么就将c向左移动一个位置,反之b向右移动一个位置。代码:class Solution: de.原创 2021-01-15 23:06:16 · 224 阅读 · 0 评论 -
Leetcode每日三题0011、0014、0015
由于本人之前一直是按照顺序,每天一道,但目前在刷腾讯精选50道,所以暂时就不按照顺序刷了,刷完腾讯精选50道之后在按照顺序开始刷。以下代码全部基于Python,后续会补齐C、Java、R、C++版本。第0011题目:盛水最多的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器.原创 2021-01-13 15:46:45 · 208 阅读 · 0 评论 -
Leetcode 0007-0009
因为之前已经发过博客了,所以这里贴一下链接。LeetCode0007LeetCode0008LeetCode0009原创 2021-01-12 18:23:35 · 156 阅读 · 0 评论 -
Leetcode0002,0004,0005
以下全部基于python0002代码: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: prenode = ListNode(0) lastnode = prenode val = 0 while val or l1 or l2: val, cur = divmod(val + (l1.val if l1 else .原创 2021-01-11 22:51:34 · 176 阅读 · 0 评论 -
Leetcode0010
看家本领不能丢,准备2021年每天一道leetcode题目,尽量不间隔,Python3.8class Solution: def isMatch(self, s: str, p: str) -> bool: @lru_cache(None) def recur(i,j): if j==len(p): return i==len(s) first_match = (len(s) > i) and (p[j.原创 2021-01-10 20:45:24 · 150 阅读 · 0 评论 -
Leetcode0009
看家本领不能丢,准备2021年每天一道leetcode题目,尽量不间隔,Python3.8 def isPalindrome(self, x: int) -> bool: s = str(x) l = len(s) h = l//2 return s[:h] == s[-1:-h-1:-1]原创 2021-01-10 20:41:39 · 159 阅读 · 0 评论 -
Leetcode0008
看家本领不能丢,准备2021年每天一道leetcode题目,尽量不间隔,Python3.8import redef myAtoi(s: str) -> int: return max(min(int(*re.findall('^[\+\-]?\d+', s.lstrip())), 2 ** 31 - 1), -2 ** 31)s = "4193 with words"print(myAtoi(s))思路,首先是数值范围问题,这里我们可以用min和max函数来搞定,然后匹配的话.原创 2021-01-09 23:32:34 · 178 阅读 · 1 评论 -
Leetcode0007
看家本领不能丢,准备2021年每天一道leetcode题目,尽量不间隔,Python3.8def reverse(x: int) -> int: y, res = abs(x), 0 boundry = (1 << 31) - 1 if x > 0 else 1 << 31 while y != 0: res = res * 10 + y % 10 if res > boundry: .原创 2021-01-08 22:47:32 · 181 阅读 · 0 评论 -
Leetcode0006
看家本领不能丢,准备2021年每天一道leetcode题目,尽量不间隔,Python3.8def convert(s: str, numRows: int) -> str: if numRows < 2: return s res = ["" for _ in range(numRows)] i, flag = 0, -1 for c in s: res[i] += c if i == 0 or i == numRows - .原创 2021-01-07 23:18:24 · 187 阅读 · 0 评论 -
Leetcode0005
看家本领不能丢,准备2021年每天一道leetcode题目,尽量不间隔,Python3.8#动态规划def longestPalindrome(s: str) -> str: size = len(s) if size < 2: return s dp = [[False for _ in range(size)] for _ in range(size)] max_len = 1 start = 0 for i in.原创 2021-01-06 23:40:15 · 167 阅读 · 0 评论
分享