leetcode

a187927218311 小时前
数据结构·算法·leetcode·链表·go·指针·环形链表
【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本链表系列第二篇。数组转场链表时我说"快慢指针做过"——做到 LC19 才发现链表上的双指针是另一个世界:数组指针是下标(可以回头看),链表指针是节点地址(改了就丢),于是双指针在链表上长出了三种新形态。本篇四题:LC141 环形链表(变速双指针——快 2 慢 1 的恒定节拍;"快走 3 步行不行"的奇偶性论证;以及 Val 比较误报的教训——有环的判定是同一个节点被再次到达,认点不认值);LC142 环形链表 II(四版弧线——先判后动的初始同点、两段判定顺序必须相反、a ≡ c (mod 环长) 的路程
hanlin036 小时前
笔记·算法·leetcode
刷题笔记:力扣第287题-寻找重复数1.本题最简单的做法便是利用哈希表,统计数组中所有元素出现的个数,超过1次的元素即为答案。完整代码如下:
橘子汽水1686 小时前
算法·leetcode
Leetcode 322 279 零钱兑换,完全平方数这道题涉及到动态规划的完全背包,而不是0/1背包,这两者的区别就是完全背包可以将一个元素重复使用多次,而不是像01背包一样只能使用一次,同时,这道完全背包求的是达成目标的最小次数,0/1背包求得的是能获取到的最大的价值,这两者完全不同。
土司大王7 小时前
java·leetcode·剪枝
LeetCode hot100——51.N 皇后:Java 回溯模板、列与对角线剪枝、O(n!) 复杂度分析按行逐层放置皇后(每行必放一个),用 三个 HashSet 分别记录已占用的列、主对角线、副对角线 做剪枝,递归到第 n 行就收集一份棋盘快照,这就是经典的“行优先 + 集合剪枝”回溯。
木井巳8 小时前
java·算法·leetcode·深度优先·剪枝·推荐算法
【记忆化搜索】斐波那契数题目链接:509. 斐波那契数记忆化搜索 是一种通过记录已经遍历过的状态的信息,从而避免对同一状态重复遍历的搜索实现方式(是一种常见的动态规划实现方式)。
Navigator_Z1 天前
c语言·算法·leetcode
LeetCode //C - 1240. Tiling a Rectangle with the Fewest SquaresGiven a rectangle of size n x m, return the minimum number of integer-sided squares that tile the rectangle.
稻米哟1 天前
算法·leetcode
力扣100——双指针给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
橘子汽水1681 天前
算法·leetcode
Leetcode 198,118打家劫舍,杨辉三角对于这道题,我们可以把每一层看成一个数组,核心思路是一行一行地推:先把第一行 [1] 当作地基塞进去,然后从第 1 行开始往右推导每一行,每一行的新元素都只依赖上一行,这就是典型的"状态转移"——上一行是状态,新一行是结果。推新行时按 j 从左到右遍历,用三个分支判断当前位置怎么算:开头 j=0 时上一行没有左邻居,直接取 prelist.get(0)(恒为 1);结尾 j==prelist.size() 时已经走到上一行最右下标的下一位,没有右邻居可加,取 prelist.get(j-1)(也是 1);
alphaTao1 天前
算法·leetcode
LeetCode 每日一题 2026/9/7-2026/9/13记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步动态规划 dp[i] 代表以s[i]结尾的子序列数目 如果a<b s[a]=s[b] 则dp[a],dp[b]会存在重复的子序列 但是dp[a]必定是dp[b]的真子集 只要将dp[a]中的s[a]变为s[b]及全部包含进了dp[b] 所以对于dp[i]只要记录[0~i-1]间的最近的不同字符dp res[0,25]分别记录a~z最近的位置
土司大王1 天前
java·算法·leetcode·深度优先
LeetCode 79 单词搜索:Java 回溯模板、网格 DFS 与剪枝优化从网格的每个格子出发,沿上下左右做 DFS,字符匹配就深入、不匹配就剪枝;为避免重复使用同一格子,用原地标记 + 回溯撤销 来记录访问状态,任意一条路径走到 index == word.length() 即成功。
All for pursuit.1 天前
数据结构·c++·算法·leetcode
【数组-5】560.和为K的子数组给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。
土司大王2 天前
java·leetcode·决策树
LeetCode 17 电话号码的字母组合:Java 回溯模板、多叉决策树与复杂度分析把 digits 的每一位看作决策树的一层,每层从"当前数字对应的一组字母"里选一个,用回溯 DFS 走完所有层,叶子节点拼出的字符串就是一个合法组合。
find1star2 天前
java·数据结构·算法·leetcode·链表·职场和发展·动态规划
LeetCode 25:K 个一组翻转链表这道题要求每 k 个节点翻转一次,如果最后剩余节点不足 k 个,则保持原顺序。我的第一反应不是直接操作链表指针,而是利用 Deque(双端队列)暂存当前这一组节点。
青山木2 天前
java·数据结构·算法·leetcode·贪心算法
Hot 100 --- 划分字母区间本文概览:本文讲解划分字母区间的核心思路:先记录每个字符最后出现位置,再用"最远边界"贪心切割,i == curMaxEnd 时切一刀,O(n) 完成
a187927218312 天前
算法·leetcode·区间·双指针·滑动窗口·原理·算法讲解
【算法】双指针与滑动窗口(一):框架总纲——三类问题、一个原理与判决书双指针/滑动窗口系列第一篇,只讲框架不讲题。这个结构本身是一次纠错的结果:我先前按"一题一题做、批改里提炼要点"的方式学这个系列(LC3 写了五版、LC15 四版、LC76 一版过但被拷问),十来道题做完,某天被自己问倒——"双指针的核心原理到底是什么?"竟然答不上来。回溯系列我有"选择、递归、回退"六个字,DP 系列我有手推表,双指针……只有一堆散落的教训。这篇就是补课:一个统一原理(被跳过的候选不可能是答案)、三大类地图(滑动窗口/相向双指针/二分,各自的模板与旋钮)、一份判决书规范(排除要有论证、幸
橘子汽水1682 天前
java·数据结构·算法·leetcode
Leetcode 208,207实现Trie前缀树,课程表这道题告诉了我们一种特殊的数据结构:前缀树。但其实本质上,他就是一种特殊的二叉树,也就是26叉树。对于题目中的要求,我们可以将字符串转化为字母,再将字母转化为对应的ASCII码值,在节点内部创建一个数组,里面存放孩子节点的引用,每一个索引的位置都对应一个小写字母的ASCII码,只要哪个索引上有孩子节点的引用,就说明下一个字母存在。
hanlin032 天前
笔记·算法·leetcode
刷题笔记:力扣第169题-多数元素1.本题最不动脑子的做法便是设置一个哈希表,遍历数组的同时给元素对应位置的哈希表值+1,同时判断该值是否大于numsSize / 2,可写出完整代码如下:
wabs6662 天前
数据结构·c++·算法·leetcode·二叉树·层序遍历
关于二叉树【力扣116.填充每个节点的下一个右侧节点指针的思考】目录一、本题题目二、本题代码三、关键思路四、注意事项1、层序遍历2、把当前节点存下来,遍历到同一层的下一个节点的时候,把下一个节点赋值给上一个节点的next指针