随笔分类 - LeetCode
摘要:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 废话不多说 直接分治 1 class Solution: 2 def majorityElement(self, nums: List
阅读全文
摘要:简单题见242 升级版为49 ython中通过Key访问字典,当Key不存在时,会引发‘KeyError’异常。为了避免这种情况的发生,可以使用collections类中的defaultdict()方法来为字典提供默认值。 class Solution(object): def groupAnagr
阅读全文
摘要:方法一:暴力 时间O(nk) 1 class Solution: 2 def maxInWindows(self, num, size): 3 # write code here 4 if len(num)*size == 0: 5 return [] 6 res=[] 7 for i in ran
阅读全文
摘要:题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 1 # -*- c
阅读全文
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(这里只取前32位) -2的补码为:先求-2的反码 10000.。。10 -》 11111.。。01 再求补码,即反码末尾加1:111.。。10 方法1: 1 # -*- coding:utf-8 -*- 2 class So
阅读全文
摘要:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: class Solution: def generateParenthesis(self, n: int) -> List[str]: res=[] def helper
阅读全文
摘要:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 先对nums进行排序,再用双指针,L=i+1,R=len(nums)-1,i从索引0开始遍历,until nums[i]>0退出 1 c
阅读全文
摘要:判断一个数是否为回文数,回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 通常让数字逆序,然后判断和原数字是否相等,这里只需逆序一般就可以。 case1.奇数位例如判断12321 while循环到x=12 res = 123 x!>res 跳出循环 res //10 == x 为Tru
阅读全文
摘要:示例 1: 输入: "42"输出: 42示例 2: 输入: " -42"输出: -42解释: 第一个非空白字符为 '-', 它是一个负号。 我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。示例 3: 输入: "4193 with words"输出: 4193解释: 转换截止于数
阅读全文
摘要:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。 请你实现这个将字符串进行指定行数变换的
阅读全文
摘要:给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例 1: 输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2: 输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 令i
阅读全文
摘要:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 输入: Tree 1 Tree 2 1 2
阅读全文
摘要:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3输出: 1->2->3->4示例 2: 输入: -1->5->3->4->0输出: -1->0->3->4->5 插入排序,肯定超时了,时间复杂度最坏是O(n^2) 归并
阅读全文
摘要:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) -
阅读全文
摘要:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 示例 1: 输入:head = [3,2,0
阅读全文
摘要:给定一个二叉树,原地将它展开为链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 将root的右子树放到root的左子树的最右边作为右孩子 将root的左孩子变为自己的右孩子 (root.left=None) root = r
阅读全文
摘要:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1: 输入: s = "leetcode", wordDict = ["leet", "
阅读全文
摘要:给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 暴力超时。。。 先排序,在有序list中,判断前一个数字是否比后一个少1,
阅读全文
摘要:根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7 1 class Solution
阅读全文
摘要:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果: [ [3], [9,20], [15,7]] 1 class Solution: 2 d
阅读全文