自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 LeetCode 35. 搜索插入位置

题目要求在一个排序数组中查找目标值的索引,若不存在则返回其应插入的位置。三种解法均基于二分查找,时间复杂度为O(log n)。解法一使用经典二分条件left <= right,解法二调整为left < right,解法三采用开区间处理left + 1 < right。三种方法的核心差异在于循环条件和边界收缩逻辑,但最终都能正确返回目标值的插入位置。测试案例验证了三种解法在各种情况下的正确性,包括目标值存在、不存在以及边界条件。

2025-07-24 11:06:49 596

原创 LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置

题目要求在排序数组中查找目标值的起始和结束位置,若不存在则返回[-1, -1]。三种解法均基于二分查找找下界的思想:通过查找target的下界确定起始位置,查找target+1的下界确定结束位置。解法差异主要体现在循环条件和边界处理上:解法一使用经典二分循环条件l<=r,解法二改为l<r,解法三采用开区间处理l+1<r。三种方法的时间复杂度均为O(log n),解法二和解法三在边界处理上更简洁直观。

2025-07-24 10:58:32 896

原创 Java和C++的区别

Java就像一位稳重的职业经理,把复杂的事情打理得井井有条,让你专注业务目标;C++则像一位技术大牛,能突破各种性能极限,但需要你有足够的技术功底驾驭。日常通勤选Java(自动挡轿车):省心、安全、适应性强专业赛车选C++(手动挡赛车):极致性能、完全掌控,但操作难度高理解它们的差异,不是为了争论谁更好,而是为了在合适的场景用对工具——这才是优秀程序员的必备素养。

2025-07-22 10:45:59 513

原创 LeetCode 2134. 最少交换次数来组合所有的 1 II

本文介绍了解决LeetCode 2134题"最少交换次数来组合所有的1 II"的滑动窗口解法。该问题要求在二进制环形数组中,计算将所有1聚集在一起所需的最少交换次数。核心思路是:确定窗口大小为数组中1的总数w通过滑动窗口遍历所有可能的连续w个位置(包括环形情况)每次计算窗口中0的数量(即需要交换的次数)取所有窗口中最小的0数量作为答案解法通过负数索引处理环形数组,时间复杂度为O(n),空间复杂度O(1)。该方法巧妙地将问题转化为寻找含最多1的窗口,适用于大规模数据。

2025-07-22 10:02:41 822

原创 LeetCode 1888. 使二进制字符串字符交替的最少反转次数

本文介绍了解决LeetCode 1888题(使二进制字符串交替的最少翻转次数)的高效滑动窗口解法。该算法通过将字符串视为环形结构,遍历所有可能的窗口位置,计算两种交替模式(0101...和1010...)所需的翻转次数。关键点在于利用模式互补性减少计算量,并通过2n-1次遍历覆盖环形边界情况。算法实现简洁,时间复杂度O(n),空间复杂度O(1),适用于大规模输入。该方法综合运用滑动窗口和环形处理技巧,是此类问题的最优解法之一。

2025-07-15 15:35:16 880

原创 LeetCode 1984. 学生分数的最小差值

题目要求从数组中选出k个学生的分数,使最高分和最低分的差值最小。解法核心是排序后使用滑动窗口:先对数组排序,这样任意k个连续元素的差值即为窗口两端之差。通过滑动窗口遍历所有可能的k连续子数组,计算差值并更新最小值。时间复杂度为O(n log n),主要由排序决定;空间复杂度为O(1)或O(n)。该方法高效且简洁,适用于类似选择问题。

2025-07-15 11:28:03 877

原创 LeetCode 3439. 重新安排会议得到最多空余时间 I

题目描述:给定活动总时长和若干无重叠会议,最多重新安排k个会议(保持时长和顺序),目标是最大化相邻会议之间的最长连续空余时间。解法核心:采用滑动窗口法,窗口大小为k个连续会议。通过计算窗口前后的时间差减去会议总时长,得到合并这些会议后的空余时间。遍历所有可能的窗口,取最大值。关键点:滑动窗口维护k个连续会议的总时长窗口前/后边界处理活动开始/结束的特殊情况时间复杂度O(n),空间复杂度O(1) 该方法高效地解决了通过调整连续会议间隔来最大化空余时间的问题。

2025-07-11 10:48:03 753

原创 LeetCode 1652. 拆炸弹

题目描述给定一个循环数组code和密钥k,要求根据k的正负替换每个数字为后续或前驱k个元素的和。解法采用滑动窗口技术,通过初始化窗口和动态更新窗口来计算结果。代码通过取模处理循环边界,时间复杂度O(n),空间复杂度O(1)。示例分析展示了滑动窗口的具体过程,最终实现高效求解循环数组的连续元素和问题。

2025-07-10 10:53:52 1271

原创 The knee is the joints where the thigh bone meets the large bone of the lower leg...

该句为复合结构,主句“The knee is the joints”定义膝盖为关节,定语从句“where the thigh bone meets...”说明其连接大腿骨与小腿骨。关键点:①where引导定语从句修饰joints,表连接部位;②“meets”生动体现骨骼主动连接关系;③词汇如thigh bone(股骨)、lower leg(小腿)需精准掌握。句型典型,适合学习“主系表+定语从句”的生物学描述。(150字)

2025-07-09 11:02:18 859

原创 LeetCode 1052. 爱生气的书店老板

这篇题解通过滑动窗口法求解书店老板问题。首先计算基础满意顾客(老板不生气时的顾客数),然后用滑动窗口找到连续minutes分钟内可转化为满意的最大额外顾客数(老板生气时的顾客数)。总满意数为两者之和。滑动窗口高效定位最佳窗口,时间复杂度O(n),空间复杂度O(1)。示例解析验证了算法的正确性,展示了如何拆分问题并优化计算。

2025-07-09 10:54:47 875

原创 The difference between libel and slander is that libel is printed while slander is spoken...

摘要:该句为复合句,主句为"The difference between libel and slander is",表语从句由that引导,通过while对比诽谤(libel)与诋毁(slander)的核心区别:前者为书面形式(printed),后者为口头形式(spoken)。句式采用"抽象主语+be+that从句"结构,while表对比关系,被动语态强调行为属性而非施动者。词汇上,libel/slander分别指书面/口头诽谤,printed/spoken为对应媒介特征。全句精确定义两种法律概念差异,逻

2025-07-07 11:02:56 234

原创 LeetCode 1423. 可获得的最大点数

题目描述为从一行卡牌两端取k张牌,使点数之和最大。解法一将问题转化为求中间最小子数组和(滑动窗口),总点数减去最小和即为答案,时间复杂度O(n)。解法二直接计算所有两端组合的最大和,通过逐步替换优化到O(k),在k较小时更高效。两种方法均利用滑动窗口思想,解法二更优。示例分析验证了两种方法的正确性和效率差异。

2025-07-07 10:54:04 1225

原创 With modern offices becoming more mechanized, designers are attempting to personalize them with...

随着现代办公室日益机械化,设计师们正试图用更温暖、更柔和的内部装饰来增加个性化。原文通过独立主格结构"With...becoming..."展现办公室自动化的背景,主句说明设计师采取的对策。重点词汇包括mechanized(机械化)、personalize(个性化)、warmer(温暖的)和interiors(内部装饰)。这个结构常用于表达伴随状况,凸显了机械化与人性化设计之间的因果关系,反映了从功能导向到以人为本的设计理念转变。

2025-07-04 10:28:38 740

原创 LeetCode 2461. 长度为 K 子数组中的最大和

本文介绍了使用滑动窗口技术解决"长度为K且元素各不相同的子数组最大和"问题。通过维护一个固定窗口,记录窗口内元素的出现次数和总和,当窗口长度达到K时,判断元素是否各不相同并更新最大和。代码采用双指针和哈希表实现,时间复杂度O(n),空间复杂度O(k)。示例分析展示了算法的执行过程,验证了其正确性。该解法高效且可扩展,是滑动窗口与哈希计数结合的典型应用。

2025-07-04 10:22:52 760

原创 It is more difficult to write simply, directly, and effectively than to employ flowery but...

英语比较句"简明有力的写作难于华丽模糊的表达"通过"more...than..."结构对比两种表达方式的难度。形式主语"It"指代不定式短语,核心表语为"more difficult",比较对象分别为"to write simply/directly/effectively"与"to employ flowery but vague expressions that obscure meaning"。关键词汇包括obscure(掩盖)、flowery(华丽)和vague(模糊)。该句型强调清晰表达的价

2025-07-03 11:22:10 811

原创 LeetCode 2841. 几乎唯一子数组的最大和

本文介绍了一种使用滑动窗口技术求解几乎唯一子数组最大和的算法。题目要求寻找长度为k且包含至少m个不同元素的子数组。算法通过维护一个固定长度为k的窗口,利用计数器记录窗口内元素出现次数,并通过判断计数器大小来验证"几乎唯一"条件。每次窗口滑动时更新窗口和及元素计数,同时记录满足条件的最大和。时间复杂度O(n),空间复杂度O(k)。该解法高效处理了固定长度子数组的约束条件,适用于类似问题场景。

2025-07-03 11:15:35 742

原创 阿里巴巴Java开发手册(1.3.0)

《阿里巴巴Java开发手册》是阿里技术团队多年实践经验的总结,涵盖编程规约、异常日志、单元测试等六大维度。手册以"码出高效,码出质量"为目标,通过强制、推荐、参考三级规范统一研发标准。其中编程规约详细规定了命名、常量、代码格式等要求;异常处理强调预检查规避RuntimeException;单元测试需遵守AIR原则;数据库设计明确建表、索引规范;工程结构采用标准分层。手册通过正反例结合的方式,为企业级Java开发提供全面指导,旨在提升团队协作效率与代码质量。

2025-07-02 11:52:01 851

原创 人工智能所需数学知识总结

机器学习数学基础摘要:微积分(导数、梯度向量、泰勒展开)是优化算法核心;线性代数(矩阵运算、特征分解、SVD)用于数据表示与降维;概率论(贝叶斯公式、随机变量、最大似然估计)支撑概率建模;最优化(梯度下降、牛顿法、凸优化)解决参数求解问题。这些数学工具共同构成了机器学习算法的理论基础,从线性回归到神经网络都依赖这些数学方法来实现模型构建与优化。

2025-07-02 11:08:01 1017

原创 LeetCode 2379. 得到 K 个黑块的最少涂色次数

本文探讨了如何通过最少涂色次数获得连续K个黑块的问题。解法采用滑动窗口技术,核心思想是统计窗口内白色块数量,取最小值作为答案。代码遍历字符串,动态维护窗口内白色块计数,通过窗口滑动更新最小值。时间复杂度O(n),空间复杂度O(1)。该方法高效解决了定长区间统计问题,如示例所示,能正确计算最少涂色次数。

2025-07-02 10:39:25 689

原创 LeetCode 2090. 半径为 k 的子数组平均值

题目要求计算以每个下标为中心、半径为k的子数组平均值,无效位置返回-1。通过滑动窗口技术可以高效解决,时间复杂度O(n)。初始化结果数组为全-1,窗口长度固定为2k+1。当窗口完整时(i≥2k),计算中心位置的平均值(整数除法),并滑动窗口更新和。该方法避免了暴力解法的重复计算,边界处理简洁,适用于大规模数据。示例分析验证了算法的正确性,适用于类似固定长度子数组问题。

2025-07-02 10:18:37 866

原创 The greater the population there is in a locality, the greater the need there is for water...

该句为比较状语从句,采用“the + 比较级..., the + 比较级...”结构,表示“人口越多,对水、交通和垃圾处理的需求越大”。前半句以“the greater”引导条件(人口数量),后半句说明结果(需求增加)。关键词汇包括population(人口)、locality(地区)、disposal(处理)和refuse(垃圾)。该句型常用于表达正比例关系,如“The harder you study, the better grades you get”。翻译为:“地区人口越多,对水、交通和垃

2025-07-01 10:50:04 409

原创 LeetCode 1343. 大小为 K 且平均值大于等于阈值的子数组数目

这篇题解介绍了滑动窗口法解决大小为K且平均值≥阈值的子数组数目问题。文章首先说明题目要求计算满足条件的定长子数组数量,然后详细解析了滑动窗口的实现思路:维护固定窗口长度K,计算窗口和来判断平均值是否达标。代码部分展示了Python实现,通过双指针和窗口和优化效率。分析指出该算法时间复杂度O(n),空间复杂度O(1),并通过具体示例演示了执行过程。最后总结滑动窗口技术的适用场景和优势,特别强调其高效处理定长子数组问题的能力。

2025-07-01 10:43:44 666

原创 LeetCode 643. 子数组最大平均数 I

本题采用滑动窗口法解决子数组最大平均数问题。通过维护长度为k的窗口,动态计算窗口内元素之和,实时更新最大子数组和。核心步骤包括:右指针扩展窗口累加元素,当窗口达到k长度时左指针滑动并减去左边界元素,最后用最大子数组和除以k得到结果。该方法将时间复杂度从O(n²)优化到O(n),空间复杂度为O(1)。示例演示了窗口滑动过程,验证了算法的正确性和高效性。滑动窗口技术适用于各类定长子数组统计问题,是算法设计中的重要基础技巧。

2025-06-30 11:34:13 903

原创 LeetCode 1456. 定长子串中元音的最大数目

本文介绍了使用滑动窗口技术解决定长子串中元音最大数目的问题。通过维护一个长度为k的窗口,动态统计窗口内的元音数量,避免了暴力枚举所有子串的高复杂度。算法时间复杂度为O(n),空间复杂度为O(1),适用于类似子串统计问题。具体实现通过双指针控制窗口移动,实时更新元音计数,确保高效求解。示例展示了从字符串"abciiidef"中找出长度为3的元音最多子串的过程,最终得到结果3。该滑动窗口方法是处理定长子串问题的经典优化方案。

2025-06-30 11:17:10 579

原创 In order to remain in existence, a profit-making organization must, in the long run, produce...

盈利组织若要持续存在,从长远来看必须生产消费者认可的有用或理想产品。该句为复合句,含目的状语、主句及定语从句,核心逻辑清晰:组织生存取决于满足消费者需求。语法特点包括插入语"in the long run"、省略引导词的定语从句及复合宾语结构。通过逐词分析可见,句子强调盈利组织的生存法则与消费者价值之间的必然联系。

2025-06-27 11:35:57 485

原创 LeetCode 2958. 最多 K 个重复元素的最长子数组

摘要:题目要求寻找整数数组中满足每个元素出现次数最多k次的最长子数组长度。采用滑动窗口解法,通过维护窗口内元素的频率,当某元素频率超过k时收缩左边界,最终窗口的最大长度即为答案。时间复杂度O(n),空间复杂度O(m)。该解法高效利用了滑动窗口技术,避免了暴力枚举,是处理频率约束类问题的经典方法。

2025-06-27 10:02:38 723

原创 LeetCode 1695. 删除子数组的最大得分

题目要求从数组中删除一个元素唯一的子数组,计算其最大元素和。通过滑动窗口法,维护元素唯一的窗口,动态调整窗口边界并实时计算窗口内元素和。时间复杂度O(n),空间复杂度O(k)。示例验证了算法的正确性,适用于类似"唯一元素子数组"问题。

2025-06-27 09:48:50 743

原创 Because of its irritating effect on humans, the use of phenol as a general antiseptic has been...

本文分析了英文句子"Because of its irritating effect on humans, the use of phenol as a general antiseptic has been largely discontinued"及其翻译。重点解析了句子结构(原因状语+主句的简单句)、核心语法(现在完成时被动语态)和词汇用法。通过逐词分析18个单词的词性、发音及用法,阐明了介词短语、分词作定语等语法特点,揭示了句子"苯酚因对人体有刺激性而不再作为常用消毒剂"的因果逻辑。全文通过语法拆解

2025-06-26 11:07:17 470

原创 LeetCode 904. 水果成篮

题目描述了水果成篮问题:在一排果树上采摘水果,每棵树结一种水果(用整数表示种类)。使用两个篮子(每个篮子只能装一种水果),求最多能采摘的水果数量(采摘的水果种类不能超过两种)。解法采用滑动窗口法,通过维护一个窗口区间确保其中最多包含2种水果。当种类超过2种时,移动左指针缩小窗口。算法时间复杂度O(n),空间复杂度O(1)。具体实现使用字典跟踪窗口内水果种类和数量,右指针遍历果树时更新窗口状态,左指针调整窗口大小,始终保持窗口有效性并记录最大采摘数量。该方法通用性强,适用于类似"最多包含k种元素"的问题。

2025-06-26 09:54:26 971

原创 Anthropologists have discovered that fear, happiness, sadness, and surprise are universally...

人类学研究表明,恐惧、快乐、悲伤和惊讶四种情绪通过面部表情的表达具有跨文化普遍性。该结论源自对宾语从句“that fear...expressions”的语法分析,其中并列主语(四种情绪)与被动谓语“are universally reflected”构成“情绪-表情”的客观关联。主句采用现在完成时(have discovered)强调研究结果的现存意义,而从句的被动语态及副词“universally”凸显表情反映的普适性。此结构通过并列连词、时态配合及被动式,严谨呈现了人类情感表达的生

2025-06-25 11:44:23 679

原创 LeetCode 1658. 将 x 减到 0 的最小操作数

该题目要求通过移除数组两端元素使剩余元素之和等于x,求最少操作次数。核心解法是将问题转化为寻找中间子数组,其和为数组总和减去x,使用滑动窗口技术高效求解。具体步骤包括:计算总和并处理边界条件,维护滑动窗口寻找目标子数组,最终计算最少操作次数。该方法时间复杂度为O(n),空间复杂度为O(1),示例分析验证了其正确性。这种问题转换与滑动窗口的结合是解决两端操作问题的有效策略。

2025-06-25 10:35:37 776

原创 Of the millions who saw Haley’s comet in 1986, how many people will live long enough to see it ...

摘要: 该句为特殊疑问句,询问1986年目睹哈雷彗星的数百万人中,有多少人能活到21世纪见证其回归(周期约76年)。核心结构为"Of the millions who saw...how many will live to see...",含定语从句(who saw...)和目的状语(to see it return)。关键词包括millions(数百万人)、comet(彗星)、long enough(足够长寿)及twenty-first century(21世纪),反映人类寿命与天文周期的时间对比

2025-06-24 10:15:26 777

原创 LeetCode 1004. 最大连续1的个数 III

题目描述给定一个二进制数组nums和一个整数k,允许最多将k个0翻转成1,求最长连续1的子数组长度。使用滑动窗口法维护一个最多含k个0的窗口,时间复杂度O(n),空间复杂度O(1)。示例中nums=[1,1,1,0,0,0,1,1,1,1,0],k=2时翻转前两个0得到长度为6的连续1。解法通过右指针扩展窗口,左指针在0过多时收缩,并随时更新最大长度。该思路适用于类似"最多修改k次"的问题。

2025-06-24 09:43:13 604

原创 LeetCode 2024. 考试的最大困扰度

本题考察滑动窗口技巧,要求通过最多k次翻转获得最长连续相同字符子串。提供两种解法:1)分别计算以'T'和'F'为目标的最长子串;2)同时跟踪两种字符数量,确保至少一种翻转不超过k次。两种方法均为O(n)时间复杂度,O(1)空间复杂度,适用于类似"最多修改k次"的子串问题。解法一分目标处理逻辑清晰,解法二单次遍历代码更简洁,均体现了滑动窗口维护约束条件的核心思想。

2025-06-23 11:38:57 1107

原创 LeetCode 1208. 尽可能使字符串相等

本文介绍了如何使用滑动窗口技术解决字符串转换问题。题目要求将字符串s的子串转换为t对应子串时,总代价不超过maxCost,求最长子串长度。解法使用双指针维护窗口,计算字符转换代价,动态调整窗口范围,确保总代价在预算内。算法时间复杂度O(n),空间复杂度O(1)。通过示例分析,展示了滑动窗口的具体运作过程,是解决此类累加约束问题的有效方法。

2025-06-20 16:03:24 379

原创 Typical of the grassland dwellers of the continent is the American antelope, or pronghorn

本文解析了倒装句"Typical of the grassland dwellers of the continent is the American antelope, or pronghorn"的结构与用法。首先还原为正常语序,指出倒装是为强调表语。随后逐词分析每个单词的音标、词性、含义及语法功能,重点说明形容词"typical"与介词"of"的搭配、名词"dwellers"与"grassland"的修饰关系,以及同位语"or pronghorn"的作用。

2025-06-20 11:06:05 494

原创 LeetCode 1493.删掉一个元素以后全为1的最长子数组

该解法利用滑动窗口技术高效地解决了问题,通过维护窗口内0的数量不超过1个,确保删除一个0后窗口内全为1。算法使用位运算优化了0的计数过程,时间复杂度为O(n),空间复杂度为O(1),是解决该问题的最优解法之一。这种滑动窗口控制特定元素数量的思路,可广泛应用于类似的子数组问题。

2025-06-20 10:30:07 269

原创 LeetCode 3090.每个字符最多出现两次的最长子字符串

本解法通过滑动窗口和数组计数的结合,在O(n)时间复杂度和O(1)空间复杂度内高效解决问题。其核心在于利用双指针动态维护有效区间,并通过数组快速判断字符出现频率。该思路可作为处理字符频率约束类问题的通用模板,适用于更多变种题型(如每个字符最多出现k次)。

2025-06-19 14:26:47 1058

原创 LeetCode 3. 无重复字符的最长子串

两解法均为滑动窗口的经典实现,通过哈希表记录字符位置实现O(n)时间复杂度。解法二通过直接维护窗口边界,代码逻辑更贴近滑动窗口的直观理解,是更推荐的实现方式。在面试中,此类解法能体现对线性时间算法和空间换时间思想的掌握。

2025-06-19 14:16:10 415

原创 经典算法kmp实现

public class Code { public static int getIndexOf(String s, String m) { if (s == null || m == null || m.length() < 1 || s.length() < m.length()) { return -1; } char[] str1 = s.toCharArray(); char[] str2

2022-02-09 20:44:42 377

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除