04 2023 档案
摘要:题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 限制: 1 <= 数组长度 <= 50000 解题思路: 摩尔投票法: 核心理念为 票数正负抵消 。此方法时间和空间复杂度分别为 O(N) 和 O(1) ,为本题的最
阅读全文
摘要:题目描述: 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量).)。 提示: •请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是
阅读全文
摘要:题目描述: 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 提示: 0 < nums.length <= 100说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0 注:+ 代表的是
阅读全文
摘要:题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。 对于双向循环链表,第一个节点的前
阅读全文
摘要:题目描述: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 限制: 0 <= 链表长度 <= 1000 解题思路: class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { Lis
阅读全文
摘要:题目描述: 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 限制: 1 <= s 的长度 <= 8 class Solution{ Set<String> res = new HashSet<>(); public String[] pe
阅读全文
摘要:题目描述: 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。 在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 限制: 1 <= 数组长度 <= 10000 解题思路: 复杂度分析: 时间复杂度 O(logN): 二分法为对数级别
阅读全文
摘要:题目描述: 统计一个数字在排序数组中出现的次数。 提示: •0 <= nums.length <= 105 •-109 <= nums[i] <= 109 •nums 是一个非递减数组 •-109 <= target <= 109 解题思路:排序数组中的搜索问题,首先想到 二分法 解决。 排序数组
阅读全文
摘要:题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。 例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数
阅读全文
摘要:题目描述: 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 限制: 0 <= 数组长度 <= 10^5 class Solution{ public int maxProfit(int prices[]){ //状态定义:dp[i]记为利润 profit
阅读全文
摘要:题目描述: 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。 给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 提示: 0 < grid.length
阅读全文
摘要:题目描述: 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 提示: 1 <= arr.length <= 10^5 -100 <= arr[i] <= 100 class Solution{ public int maxSubArr
阅读全文
摘要:题目描述: 请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均
阅读全文
摘要:题目描述: 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m - 1] 。 请问 k[0]*k[1]*...*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、
阅读全文
摘要:题目描述: 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少? 例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的
阅读全文
摘要:题目描述:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 限制: 0 <= s 的长度 <= 50000 题解:哈希表 遍历字符串 s ,使用哈希表统计 “各字符数量是否 >1 ”。 再遍历字符串 s ,在哈希表中找到首个 “数量为 1 的字符”,并返回
阅读全文
摘要:题目描述: 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 提示: s.length <= 40000 思路: 双指针(滑动窗口) + 哈希表: 复杂度分析: 时间复杂度 O(N) : 其中 N 为字符串长度,动态规划需遍历计算 dp 列表。 空间复杂度 O(1) :
阅读全文
摘要:题目描述: 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 限制: 2 <= n <= 100000 哈希表 / Set利用数据结构特
阅读全文
摘要:题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。 如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5
阅读全文
摘要:题目描述: 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 限制: 0 <= k <= arr.length <= 10000 0 <= arr[i] <= 10000 题解:本题使用排序算法解决最直观,对数组
阅读全文
摘要:题目描述: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为: “对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root =
阅读全文
摘要:题目描述: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root
阅读全文
摘要:题目描述: 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 示例 2: 限制: 0 <= 树的结点个数 <= 10000 方法基于以下性质推出: 此树的深度 等于 左子树的深度 与 右子树的深度 中的 最大
阅读全文
摘要:题目描述: 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 。 树的遍历方式总体分为两类:深度优先搜索(DFS)、广度优先搜索
阅读全文
摘要:题目描述: 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 解题思路:本文解法基于此性质:二叉搜索树的中序遍历为 递增序列 。 •根据以上性质,易得二叉搜索树的 中序遍历倒序 为 递减序列 。 •因此,求 “二叉搜索树第 k 大的节点” 可转化为求 “此树的中序遍历倒序的第 k 个节点”。 中
阅读全文
摘要:题目描述: 请实现两个函数,分别用来序列化和反序列化二叉树。 你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。 提示:输入输出格式与 LeetCode 目前使用的方式
阅读全文
摘要:题目描述: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targe
阅读全文
摘要:题目描述: 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如:给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果: [ [3], [20,9], [15,7]]
阅读全文