随笔分类 - LeetCode
摘要:给你一个二维整数数组 ranges 和两个整数 left 和 right 。每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 。 如果闭区间 [left, right] 内每个整数都被 ranges 中 至少一个 区间覆盖,那么请你返回
阅读全文
摘要:给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中
阅读全文
摘要:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 和LeetCode-剑指 Offer 52. 两个链表的第一个公共节点一模一样,这里给出代码,原理可到该篇查看 # Definition for singly-li
阅读全文
摘要:输入两个链表,找出它们的第一个公共节点。 a,b结点分别指向两个列表的头结点,开始依次往下判断,当a结点到达末尾,转向b结点所指头结点;当b结点到达末尾,转向a结点所指头结点;这样当两个人相遇的时候就是第一个公共节点。 核心原理:假设a节点长度为La+C,b节点长度为Lb+C,两个节点的公共节点长度
阅读全文
摘要:给定一个字符串数组,将字母异位词组合在一起。可以按任意顺序返回结果列表。 字母异位词指字母相同,但排列不同的字符串。 和面试题 10.02. 变位词组一模一样 class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[
阅读全文
摘要:编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。 注意:本题相对原题稍作修改 方法:首先对每一个字符串排序,然后用字典存储同一个变位词在列表中的位置,用列表存储变位词,最后返回列表就可以,时间上达到了100% class Solution: def
阅读全文
摘要:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 class Solution: def reverseVowels(self, s: str) -> str: x = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] a, b = 0,
阅读全文
摘要:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 class Solution: def
阅读全文
摘要:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” # Definition for a binar
阅读全文
摘要:请判断一个链表是否为回文链表。 前半段压栈,后半段出栈,看最后是不是空 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None
阅读全文
摘要:给定一个二叉树,返回它的 后序 遍历。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self
阅读全文
摘要:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val =
阅读全文
摘要:给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅
阅读全文
摘要:给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 class Solution: def maxP
阅读全文
摘要:给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 叶子节点 是指没有子节点的节点。 # Definition for a binary tree node. # cla
阅读全文
摘要:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 思路1: class Solution: def maxSubArray(self, nums: List[int]) -> int: maxi, sub = nums[0], 0 f
阅读全文
摘要:统计一个数字在排序数组中出现的次数。 最简单python语句,可能并不是出题人的意愿: class Solution: def search(self, nums: List[int], target: int) -> int: return nums.count(target) 当然这题用二分试试
阅读全文
摘要:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, l
阅读全文
摘要:给定一个二叉树,检查它是否是镜像对称的。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # sel
阅读全文
摘要:给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, va
阅读全文