Skip to content

力扣

约 2784 字大约 9 分钟

2025-09-03

3. 无重复字符的最长子串 - 力扣(LeetCode)

滑动窗口实现

比较版本号

165. 比较版本号 - 力扣(LeetCode)

切割字符串并转换成数字类型 还可以使用生成器返回迭代器的方式优化性能

合并两个有序数组

88. 合并两个有序数组 - 力扣(LeetCode)

三指针从后往前遍历,避免数据覆盖。

字符串相加

415. 字符串相加 - 力扣(LeetCode) 从后往前遍历字符串,将字符转换成数字相加 也可以在位数不足的前面补上0

有效括号

20. 有效的括号 - 力扣(LeetCode)

两数之和

1. 两数之和 - 力扣(LeetCode)

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function (nums, target) {
  for (let i = 0; i < nums.length; ++i) {
    for (let j = i + 1; j < nums.length; ++j) {
      if(nums[i] + nums[j] === target){
        return [i, j];
      }
    }
  }
};

全排列

46. 全排列 - 力扣(LeetCode)

回溯:有状态的递归

使用回溯法 递归进行深搜,遍历数字数组,如果当前元素存在于状态数组中表示当前元素已经在结果数组中了就跳过,如果不在就添加入状态数组中,继续递归,当递归出来后将当前元素从状态数组中取出(修改状态)

反转链表

206. 反转链表 - 力扣(LeetCode)

双指针,在反转时需要构造一个temp做中转

最大子数组和

53. 最大子数组和 - 力扣(LeetCode) 每次遍历查看上次的和是否大于0,如果大于0表示此前的和相加是有益的,就相加,否则就将和赋值为当前值,再与保存的最大和比较

二叉树的层序遍历

102. 二叉树的层序遍历 - 力扣(LeetCode) 每次遍历传递当前层级数,层级数的索引就是自己在二维结果数组中对应的数组

三数之和

15. 三数之和 - 力扣(LeetCode) 一次遍历+双指针 先排序整个数组,让数组有序,每次遍历在当前值的前一个位置设置一个指针,在数组末尾设置第二个指针,如果值相加大于则右指针前移再比较,如果大于则左指针后移,如果等于则直接添加到结果数组中并两个指针都相向移动一次,再再次循环中循环左指针的值是否小

买卖股票的最佳时机

121. 买卖股票的最佳时机 - 力扣(LeetCode) 记录买入价值,和当前利润 遍历数组,如果当前值比此前的买入价值小则将当前值记录为买入价值,否则的话就尝试卖出,取当前卖出利润和此前的利润的最大值

环形链表

141. 环形链表 - 力扣(LeetCode)

快慢指针,快指针一次走两步,慢指针一次走异步,如果快指针遇到null则无环,如果遇到慢指针则有环

路径求和

112. 路径总和 - 力扣(LeetCode)

回溯:带状态的递归 每次递归传递上次的目标值减去当前值,也就是后续节点要达到的目标总值,遇到叶子节点则返回判断

爬楼梯

70. 爬楼梯 - 力扣(LeetCode) 类似斐波那契数列,单独递归会栈溢出,需要存储之前的状态 如果台阶等于1只有一种方式,如果等于2则有两种方式,因此初始的f(1)和f(2)的值就可求出 后续的每个台阶所包含的方法就是前一次和前两次所能达到方法的和,也就是满足:f(n)=f(n-1)+f(n-2)

合并两个有序链表

21. 合并两个有序链表 - 力扣(LeetCode)

构建一个虚拟头节点指向新链表,并在两个链表中各设置一个指针,将相对较小的添加到新链表队尾,最后返回虚拟头节点的下一个节点

数组中的第k个最大元素

215. 数组中的第K个最大元素 - 力扣(LeetCode) 将数组排序后取第k个值(索引为k-1)

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
function findKthLargest(nums, k) {
  const temp = nums.sort((a, b) => b - a);
  return temp[k - 1];
}

排序数组

912. 排序数组 - 力扣(LeetCode) 归并排序符合O(nlogn)

LRU

146. LRU 缓存 - 力扣(LeetCode)

使用map做缓存,调用get时如果元素存在就删除后再添加进去

最长回文子串

5. 最长回文子串 - 力扣(LeetCode)

每次遍历一个字符就从当前字符开始分别向左右设置一个指针,根据判断是否相等 每次遍历要执行两种情况:i和i+1,因为回文子串有两种:bab、baab

岛屿数量

200. 岛屿数量 - 力扣(LeetCode) 双层遍历二维数组,如果遇到值为1的则先加上岛屿数量,接着深搜向四周扩散,如果遇到值为1的则将值置为0表示已经遍历过了,并继续向四周扩散,如果越界或者遇到0则返回。 必须向四周扩散,不能只向右或下,因为深搜是从后往前跳出执行栈的,如果只向左或向右会人为地跳过相连的1,后面再计算岛屿数时污染数据

螺旋矩阵

54. 螺旋矩阵 - 力扣(LeetCode)

在上下左右各设置一个边界,以一定顺序按边界执行,每次循环遍历这个边界上的值,循环结束后缩小边界,直到某个边界与它对应的边界接触后就跳出循环

贡献者

PinkDopeyBug

公告

本博客内容原本使用obsidian编写,由于没有仔细配置,以至图片引用使用obsidian风格。

且图片存储路径频繁变更导致部分文章图片无法正常显示。

为您带来不便请谅解。

ps:贡献者一直都只有wynnsimon一人,显示Pink的贡献者是因为我没好好配置git。后面因为懒就没一个个修改。如果被提及的人不希望被显示可以联系我我会立即删除。