LeetCode
琪琪汉娜
这个作者很懒,什么都没留下…
展开
-
LeetCode86 分隔链表
题目描述 解题 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def partition(self, head: ListNode, x: int) -> ListNode: p = ListNode(0)原创 2020-09-10 14:56:19 · 134 阅读 · 0 评论 -
LeetCode 142 环形链表II 快慢指针
题目描述 解题 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def detectCycle(self, head: ListNode) -> ListNode: p = head q = head原创 2020-09-09 23:54:09 · 78 阅读 · 0 评论 -
LeetCode 16 最接近的三数之和(在三数之和的基础上)
题目描述 解题方法 def threeSumClosest(self, nums: List[int], target: int) -> int: if len(nums)<3: return None nums.sort() best = 1e7 for i in range(len(nums)): if i>0 and nums[i]==nums[i-1]:原创 2020-09-03 10:53:08 · 115 阅读 · 0 评论 -
LeetCode18 四数之和 (在三数之和的基础上)
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 class Solution: def fourSum(self, nums: List[int], target:原创 2020-08-31 23:06:48 · 103 阅读 · 0 评论 -
LeetCode 27 移除元素
题目描述 解题 使用双指针 法一 需要移除的元素较多的情况,此时每次不相同nums[i]都会被赋值 def removeElement(self, nums: List[int], val: int) -> int: i = 0 j = 0 while j<len(nums): if nums[j]!=val: nums[i] = nums[j] i+=1原创 2020-08-26 01:23:37 · 73 阅读 · 0 评论 -
LeetCode 15三数之和
题目描述 解题 首先将数组进行排序,并确定第一个数(最小),第二第三分别取第一个数右边数组的第一nums[L]和最后一个数nums[R],第一个数必须小于0, 若第一个数与上一次循环的第一个数相同,则第一个数需要增大,否则会造成结果重复(注意,此处不可直接寻找相同数中的最后一个,因为会漏掉三个数中有其他数与第一个数值相等的情况) 接下来分为以下几种情况: 当L<R时, 三数相加小于0,L增大 三数相加大于0,R减小 三数相加等于0,append入数组,L增大,R减小 此时,当nums[L]与num原创 2020-08-25 17:16:49 · 165 阅读 · 0 评论 -
LeetCode 111 二叉树最小深度
题目描述 解题 DFS DFS使用分治法,每次寻找左右两子书的最小高度,区分以下几种终止条件: 当前结点为空,返回0 当前结点左右子树有一为空,返回左子树最小高度与右子树最小高度和并+1(有一为0) 当前结点左右子树都为空,返回左右子树最小高度中较小的值并+1 class Solution: def minDepth(self, root: TreeNode) -> int: if not root: return 0 min_l原创 2020-08-21 17:45:09 · 147 阅读 · 0 评论 -
LeetCode 881 救生艇
题目描述 解题方法 每次都选择最轻和最重的两个,如果超过,那么最重的单独坐船(船最多载2人) class Solution: def numRescueBoats(self, people: List[int], limit: int) -> int: people.sort() i = 0 j = len(people)-1 count = 0 while i < j: if pe原创 2020-08-20 14:03:49 · 166 阅读 · 0 评论 -
LeetCode 88合并两个有序数组
题目描述 解题方法 双指针 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. """ i = 0 j = 0 nums_copy = nums1[原创 2020-08-20 13:44:30 · 160 阅读 · 0 评论 -
LeetCode 26删除重复数组
题目描述 解题 双指针 class Solution: def removeDuplicates(self, nums: List[int]) -> int: i = 0 if not nums: return 0 for j in range(1,len(nums)): if nums[i] == nums[j]: j = j + 1 el原创 2020-08-19 00:23:28 · 88 阅读 · 0 评论 -
LeetCode 118杨辉三角
题目描述 easy 解题 class Solution: def generate(self, numRows: int) -> List[List[int]]: triangle = [] for row_num in range(numRows): row = [1 for i in range(row_num+1)] for j in range(1,row_num): r原创 2020-08-19 00:20:04 · 92 阅读 · 0 评论 -
LeetCode160 相交链表
题目描述 解题 寻找链表相交点用浪漫的解法 A+B=B+A class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: pa = headA pb = headB flagA = 0 flagB = 0 if not pa or not pb: return Non原创 2020-08-15 23:37:02 · 98 阅读 · 0 评论 -
LeetCode 101 对称二叉树
题目描述 解题 递归 class Solution(object): def isSymmetric(self, root): """ :type root: TreeNode :rtype: bool """ def helper(t1, t2): if not t1 and not t2: return True if not t1 o原创 2020-08-11 14:55:14 · 75 阅读 · 0 评论 -
LeetCode 104 二叉树最大深度(DFS和BFS)注意Python3中deque(双向队列)的初步使用方法
题目描述 有很多解法 递归 class Solution(object): def maxDepth(self, root): """ :type root: TreeNode :rtype: int """ if root == None: return 0 return max(self.maxDepth(root.left),self.maxDepth(root.right原创 2020-08-11 14:51:37 · 286 阅读 · 0 评论 -
LeetCode 61 旋转链表
题目描述 解题 首尾相接 class Solution(object): def rotateRight(self, head, k): """ :type head: ListNode :type k: int :rtype: ListNode """ p = head count = 1 if not p: return head原创 2020-08-11 01:00:58 · 103 阅读 · 0 评论 -
LeetCode 141环形链表
题目描述 解题(哈希法与快慢指针法) 哈希法 class Solution: def hasCycle(self, head: ListNode) -> bool: dict = {} while head: if head in dict: return True else: dict[head] = 1 head = he原创 2020-08-11 00:58:43 · 60 阅读 · 0 评论 -
leetcode 24. 两两交换链表中的节点
题目描述 解题方法 递归 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def swapPairs(self, head): """ :type head: ListNode原创 2020-08-09 15:17:47 · 94 阅读 · 0 评论 -
leetcode 344反转字符串(递归入门)
题目描述 解题 class Solution(object): def reverseString(self, s): """ :type s: List[str] :rtype: None Do not return anything, modify s in-place instead. """ def helper(start, end, ls): if start >= end:原创 2020-08-09 14:06:56 · 245 阅读 · 0 评论 -
LeetCode1 两数之和
题目描述 Python简单解 def twoSum(self, nums, target): for i in range(len(nums)): for j in range(i+1,len(nums)): if nums[i]+nums[j]==target: return [i,j]; 过于暴力使得运行时间超长。 Python使用注意事项 range函数的用法 range(sta原创 2020-08-07 16:33:47 · 83 阅读 · 0 评论 -
LeetCode2 两数相加
题目描述 该题为中等难度,链表、进位 解题 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def addTwoNumbers(self, l1, l2): """ :type l1:原创 2020-08-07 16:32:58 · 81 阅读 · 0 评论 -
leetcode 100 相同的树
题目描述 题目描述 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution(object): def isSameTree(s原创 2020-08-07 13:46:04 · 122 阅读 · 0 评论