TechBlog
首页分类标签搜索关于
← 返回分类列表
加载中...

© 2025 TechBlog. All rights reserved.

分类

共 91 篇文章
LeetCode-Hot100-滑动窗口面试纯背版四

LeetCode-Hot100-滑动窗口面试纯背版四

本文介绍了两个字符串处理问题及其滑动窗口解法。第一个问题要求找出无重复字符的最长子串长度,通过维护哈希集合和双指针实现,时间复杂度为O(n)。第二个问题需要找到字符串中所有字母异位词的起始索引,通过比较固定长度窗口内的字符频率数组来判定异位词。两个问题都利用了滑动窗口技术,通过动态调整窗口边界来高效解决问题,避免了暴力枚举的低效性。这些方法在处理字符串子串问题时具有通用性,能有效降低时间复杂度。

时间:12/18/2025

Leetcode-3370.-Smallest-Number-With-All-Set-Bits

Leetcode-3370.-Smallest-Number-With-All-Set-Bits

本文提出了一个寻找大于等于给定正整数n的最小全1二进制数的算法。算法通过位运算逐步增加1的位数,直到找到满足条件的最小数字。

时间:10/29/2025

图论理论基础1

图论理论基础1

图论理论基础(1)

时间:10/23/2025

LeetCode-3143.正方形中的最多点数

LeetCode-3143.正方形中的最多点数

输入:points = [[2,2],[-1,-2],[-4,4],[-3,1],[3,-3]], s = “abdca”任何正方形都无法只包含 points[0] 和 points[1] 中的一个点,所以合法正方形中都不包含任何点。输入:points = [[1,1],[-2,-2],[-2,2]], s = “abb”输入:points = [[1,1],[-1,-1],[2,-2]], s = “ccd”边长为 4 的正方形包含两个点 points[0] 和 points[1]。

时间:10/21/2025

LeetCode-刷题122.-买卖股票的最佳时机-II

LeetCode-刷题122.-买卖股票的最佳时机-II

股票买卖的最佳时机II问题。通过一次遍历数组,算法维护三个变量:最大利润(max)、当前利润(profit)和历史最低点(min_price)。当股价低于历史最低点时更新min_price;当当前利润上涨时记录profit;若利润下降则将累计利润加入max并重置变量。遍历结束时,若股价持续上涨则抛出最终利润。

时间:10/16/2025

2025年-Lc170-H289.-生命游戏矩阵-Java版

2025年-Lc170-H289.-生命游戏矩阵-Java版

如果你直接根据规则更新原始数组,那么就做不到题目中说的 同步 更新。假设你直接将更新后的细胞状态填入原始数组,那么当前轮次其他细胞状态的更新就会引用到当前轮已更新细胞的状态,但实际上每一轮更新需要依赖上一轮细胞的状态,是不能用这一轮的细胞状态来更新的。

时间:10/07/2025

LeetCode-分类刷题74.-搜索二维矩阵

LeetCode-分类刷题74.-搜索二维矩阵

本文探讨了在特殊有序矩阵中查找目标值的问题。该矩阵满足:每行递增且每行首元素大于前一行末元素。提出了两种解法:1)逐行二分查找,时间复杂度O(mlogn);2)将矩阵视为整体有序数组进行二分查找,时间复杂度O(log(mn))。后者通过数学映射将二维索引转换为一维坐标,显著提升了查找效率。两种方法均只需常数空间。

时间:10/05/2025

力扣图论

力扣图论

该摘要总结了7个基于深度优先搜索(DFS)和广度优先搜索(BFS)的图算法问题解决方案。主要涉及连通分量计数(547)、路径检测(1971)、数组可达性(1306)、源到目标路径(797)、房间访问(841)、节点对计数(2316)和网络连接(1319)等问题。这些方案都采用了递归DFS或BFS遍历图的邻接结构,使用访问数组标记已处理节点,通过遍历未访问节点来解决问题。其中大部分使用DFS实现,最后一个问题(1368)使用BFS计算最短距离。这些算法展示了图遍历在解决连通性和路径问题中的典型应用模式。

时间:10/02/2025

LeetCode_88合并两个有序数组

LeetCode_88合并两个有序数组

本文用C++实现LeetCode第88题,合并两个有序数组

时间:09/22/2025

LeetCode算法日记-Day-45-为高尔夫比赛砍树矩阵

LeetCode算法日记-Day-45-为高尔夫比赛砍树矩阵

本文包含两个算法问题的解析与实现:1. 高尔夫比赛砍树问题:通过将问题拆分为按树高排序后的多段BFS最短路径搜索,逐步从当前位置移动到目标树位置,累计步数。若任意路径不可达则返回-1。2. 01矩阵问题:使用多源BFS,从所有0点同时出发分层扩散,计算每个1点到最近0的距离。该方法避免重复计算,将时间复杂度优化为O(mn)。两个问题均采用BFS解决,但针对不同特性(单目标路径vs多源最短距离)设计了相应算法。

时间:09/18/2025

2025年-H128-Lc205.-同构字符串哈希表-Java版

2025年-H128-Lc205.-同构字符串哈希表-Java版

只在遍历完整个字符串之后,没有发现冲突时返回 true。不要在循环中直接 return true。把映射关系放入map中。

时间:09/11/2025

Leetcode2749.-得到整数零需要执行的最少操作数中等__builtin_popcountl

Leetcode2749.-得到整数零需要执行的最少操作数中等__builtin_popcountl

本文介绍了LeetCode 2749题的解题思路和实现代码。题目要求计算将整数num1减至零所需的最少操作次数,每次操作可以减去num2加上2的幂次方。通过枚举0到60次操作,检查剩余值target的二进制1的个数是否不超过操作次数,且target不小于操作次数。代码使用__builtin_popcountl计算二进制1的个数,满足条件时返回操作次数,否则返回-1。文章配有运行结果截图,并附有作者鼓励持续更新和点赞支持的提示。

时间:09/05/2025

Leetcode721.-账户合并中等

Leetcode721.-账户合并中等

本文介绍了LeetCode 721题「账户合并」的解法,使用并查集数据结构高效合并相同用户的邮箱账户。通过构建邮件到索引的映射和按索引分组邮件的映射,实现账户合并。最终将合并结果按用户名排序输出。代码采用带路径压缩和按秩合并的优化并查集,时间复杂度接近线性。运行结果验证了算法的正确性。文章结尾鼓励读者点赞关注支持作者持续更新内容。

时间:09/05/2025

LeetCode-面试经典-150_矩阵_有效的数独34_36_C_中等额外数组

LeetCode-面试经典-150_矩阵_有效的数独34_36_C_中等额外数组

LeetCode 面试经典 150_矩阵_有效的数独(34_36_C++_中等)题目描述:请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 1. 数字 1-9 在每一行只能出现一次。 2. 数字 1-9 在每一列只能出现一次。 3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

时间:09/03/2025

LeetCode热题100道笔记动画完全平方数

LeetCode热题100道笔记动画完全平方数

将问题转化为完全背包问题:完全平方数视为物品(面值为1², 2², …, ⌊√n⌋²),目标是用最少物品数凑成总和n。通过动态规划追踪每个数的最少完全平方数组成数量。完全平方数 是一个整数,其值等于另一个整数的平方;例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。该方法通过完全背包思路,高效求解最少平方数组合,利用数学特性(限制j的范围为1到⌊√i⌋)减少无效计算。给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。解释:12 = 4 + 4 + 4。

时间:09/01/2025

LeetCode-74.-搜索二维矩阵

LeetCode-74.-搜索二维矩阵

文章摘要:题目要求在满足特定条件的二维矩阵中搜索目标值。解法一将矩阵拉平为一维数组后使用二分查找。解法二则利用矩阵特性,从右上角开始比较,通过排除行或列来高效查找。两种方法都能有效解决问题,分别提供了不同思路的解决方案。

时间:08/27/2025

Leetcode1163.-按字典序排在最后的子串困难

Leetcode1163.-按字典序排在最后的子串困难

本文介绍了LeetCode 1163题"按字典序排在最后的子串"的解决方案。该算法使用双指针方法,通过比较字符逐步确定字典序最大的子串起始位置。代码实现中,i和j分别表示当前比较的两个子串起始位置,k为比较偏移量。当s[i+k] > s[j+k]时移动j指针,否则更新i指针。时间复杂度为O(n),空间复杂度O(1)。运行结果验证了算法的正确性。

时间:08/26/2025

LeetCode-923.多重三数之和

LeetCode-923.多重三数之和

给定一个整数数组 arr ,以及一个整数 target 作为目标值,返回满足 i < j < k 且 arr[i] + arr[j] + arr[k] == target 的元组 i, j, k 的数量。输入:arr = [1,1,2,2,3,3,4,4,5,5], target = 8。输入:arr = [1,1,2,2,2,2], target = 5。从 [2,2,2,2] 中选出两个 2,有 6 种情况。(2, 2, 4) 出现 2 次;(2, 3, 3) 出现 2 次。

时间:07/27/2025

niceLeetCode-每日一题-1717.-删除子字符串的最大得分-贪心

niceLeetCode-每日一题-1717.-删除子字符串的最大得分-贪心

【代码】(nice!!!)(LeetCode 每日一题) 1717. 删除子字符串的最大得分 (贪心)

时间:07/23/2025

Leetcode-1278.Palindrome-Partitioning-IV-CJava

Leetcode-1278.Palindrome-Partitioning-IV-CJava

Given a string s, return true if it is possible to split the string s into three non-empty palindromic substrings. Otherwise, return false.​​​​​

时间:03/16/2025

Leetcode-1278.Palindrome-Partitioning-III-CJava

Leetcode-1278.Palindrome-Partitioning-III-CJava

You are given a string s containing lowercase letters and an integer k. You need to : First, change some characters of s to other lowercase English letters. Then divide s into k non-empty disjoint substrings such that each substring is a palindrome.

时间:03/16/2025

Leetcode-132.Palindrome-Partitioning-II-CJava

Leetcode-132.Palindrome-Partitioning-II-CJava

Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s.

时间:03/16/2025

Leetcode-2272.-Substring-With-Largest-Variance-CJava

Leetcode-2272.-Substring-With-Largest-Variance-CJava

The variance of a string is defined as the largest difference between the number of occurrences of any 2 characters present in the string.

时间:03/16/2025

LeetCode-440周赛

LeetCode-440周赛

LeetCode --- 440周赛 --- 模拟 + 排序 & 前 k 大的数 + 线段树求最左的第一个大于x的数 + 找规律 & 求子数组

时间:03/15/2025

上一页
1234
下一页第 1 / 4 页