随笔分类 -  算法

摘要:题目 给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。 在执行上述操作后,返回 包含相同字母的最长子字符串的长度。 示例 1: 输入:s = "ABAB", k = 2 输出:4 解释:用两个'A'替换为两个'B',反之 阅读全文
posted @ 2025-09-02 15:08 505donkey 阅读(12) 评论(0) 推荐(0)
摘要:题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 阅读全文
posted @ 2025-09-01 14:39 505donkey 阅读(14) 评论(0) 推荐(0)
摘要:题目 有一个书店老板,他的书店开了 n 分钟。每分钟都有一些顾客进入这家商店。给定一个长度为 n 的整数数组 customers ,其中 customers[i] 是在第 i 分钟开始时进入商店的顾客数量,所有这些顾客在第 i 分钟结束后离开。 在某些分钟内,书店老板会生气。 如果书店老板在第 i 阅读全文
posted @ 2025-08-19 16:45 505donkey 阅读(5) 评论(0) 推荐(0)
摘要:题目 给你字符串 s 和整数 k 。 请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。 英文中的 元音字母 为(a, e, i, o, u)。 示例 1: 输入:s = "abciiidef", k = 3 输出:3 解释:子字符串 "iii" 包含 3 个元音字母。 示例 阅读全文
posted @ 2025-08-14 23:38 505donkey 阅读(33) 评论(0) 推荐(0)
摘要:题目 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。 任何误差小于 \(10^{-5}\) 的答案都将被视为正确答案。 示例 1: 输入:nums = [1,12,-5,-6,50,3], k = 4 输出:12 阅读全文
posted @ 2025-08-12 00:03 505donkey 阅读(16) 评论(0) 推荐(0)
摘要:概述 定义 滑动窗口是一种常用的算法技术,通过维护移动窗口状态,避免重复计算,将算法复杂度从 \(O(n^2)\) 降低到 \(O(n)\),属于空间换时间。 窗口:数组或字符串中的一个连续区间; 滑动:类似窗口在数组或字符串中移动,对于固定窗口,左右边界会同时向右移动,对于可变窗口,边界移动是独立 阅读全文
posted @ 2025-08-06 00:50 505donkey 阅读(59) 评论(0) 推荐(0)
摘要:题目 你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果种类 。 你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果: 你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果 阅读全文
posted @ 2025-08-05 23:17 505donkey 阅读(18) 评论(0) 推荐(0)
摘要:给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(从第 0 层开始),则该层包含 1~ 2h 个节点。 示例 1: 阅读全文
posted @ 2025-03-08 18:50 505donkey 阅读(48) 评论(0) 推荐(0)
摘要:给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[3.00000,14.50000,11.00000] 解释:第 0 层的平均值为 3 阅读全文
posted @ 2025-03-02 23:30 505donkey 阅读(18) 评论(0) 推荐(0)
摘要:给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root = [4,2,6,1,3] 输出:1 示例 2: 输入:root = [1,0,48,null,null,12,49] 输出:1 提示: 树 阅读全文
posted @ 2025-02-23 23:53 505donkey 阅读(40) 评论(0) 推荐(0)
摘要:给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1: 输入:a = "11", b = "1" 输出:"100" 示例 2: 输入:a = "1010", b = "1011" 输出:"10101" 提示: 1 <= a.length, b.length <= 104 阅读全文
posted @ 2025-01-22 16:54 505donkey 阅读(21) 评论(0) 推荐(0)
摘要:颠倒给定的 32 位无符号整数的二进制位。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来 阅读全文
posted @ 2025-01-14 00:18 505donkey 阅读(25) 评论(0) 推荐(0)
摘要:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵平衡二叉搜索树。 示例 1: 输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案: 示例 2: 输入:n 阅读全文
posted @ 2025-01-04 18:32 505donkey 阅读(42) 评论(0) 推荐(0)
摘要:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums = [1,3,5,6], target = 5 输出: 2 示例 2: 输入: nums = [ 阅读全文
posted @ 2024-12-28 10:34 505donkey 阅读(25) 评论(0) 推荐(0)
摘要:给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位的个数(也被称为汉明重量)。 示例 1: 输入:n = 11 输出:3 解释:输入的二进制串 1011 中,共有 3 个设置位。 示例 2: 输入:n = 128 输出:1 解释:输入的二进制串 1000000 阅读全文
posted @ 2024-12-26 00:30 505donkey 阅读(24) 评论(0) 推荐(0)
摘要:给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 示例 1 : 输入:nums = [2,2,1] 输出:1 示例 2 : 输入:nums = [4, 阅读全文
posted @ 2024-12-25 23:12 505donkey 阅读(31) 评论(0) 推荐(0)
摘要:给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: 0 <= j <= nums[i] i + j < n 返回到达 n 阅读全文
posted @ 2024-12-23 16:46 505donkey 阅读(28) 评论(0) 推荐(0)
摘要:在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周 阅读全文
posted @ 2024-12-20 11:47 505donkey 阅读(58) 评论(0) 推荐(0)
摘要:给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度内完成此题。 阅读全文
posted @ 2024-12-17 15:24 505donkey 阅读(34) 评论(0) 推荐(0)