首页
AI Coding
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
算法
专业抄代码选手
创建于2024-07-08
订阅专栏
一些算法题目
暂无订阅
共216篇文章
创建于2024-07-08
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
【leetcode】148. 排序链表
链表的归并排序 分割链表: 使用快慢指针找到链表的中点,将链表分割成两个部分。 递归排序: 对分割后的两个部分分别递归地进行排序。 合并有序链表: 使用归并的方法将两个有序链表合并成一个有序链表。
【leetcode】2. 两数相加
链表式加法,只不过开头的是个位,注意处理进位即可 两个链表的长度不一致,也需要注意处理这个问题 下面是gpt给予建议后优化的代码
【leetcode】240. 搜索二维矩阵 II
其实这一题,主要的是处理从哪里搜索的问题,如果从左上角来进行搜索,这里就比较难处理了 如果当前的数字current < target,此时应该是向右还是向下搜索,这里就产生了分歧 所以这里可以直接从右
【leetcode】48. 旋转图像
基本思路就是:原始矩阵,沿着对角线翻转,最后再每一行单独reverse即可 原始矩阵 对角线翻转 每一行reverse
【leetcode】54. 螺旋矩阵
需要处理好边界值即可,在四个方向上逐步缩减迭代的范围,同时进行计数 跳出循环的条件是 < ,不能是 <=,因为在相等的时候已经迭代完了,就跳不出循环,导致超时
【leetcode】41. 缺失的第一个正数
原地哈希: 遍历数组,对于每个数字 nums[i],如果它在 [1, n] 范围内(其中 n 是数组长度),并且它不在正确的位置上(即 nums[i] 不是 i+1),那么我们尝试将 nums[i]
【leetcode】238. 除自身以外数组的乘积
题目要求不能用除法,按照暴力思路来,那时间复杂度就到了n*n,这个也不符合题意 先来看下之前写的一个解法 这里的解法,有点类似于前缀和的意思,分别把从左往右以及从右往左的乘积计算出来,最后对应位置进行
【leetcode】189. 轮转数组
翻转 时间复杂度:O(n),其中 n 是数组的长度。每次翻转都需要遍历数组的一部分,总共三次翻转,因此时间复杂度为 O(n)。 空间复杂度:O(1),不需要额外的空间,仅仅是原地修改数组。
【leetcode】53. 最大子数组和
寻找数组中连续的元素组合成的最大和 起初准备用前缀和来解决这一题,但是把简单的问题复杂化了,无需那么麻烦
【leetcode】560. 和为 K 的子数组
需要连续的数字才行 题解:这里采用前缀和来解决这一题 注意第八行,这里判断的是前缀和 sum - k,如果存在sum - k的前缀和,此时又存在 sum的前缀和,那么相差的k肯定也存在
【leetcode】438. 找到字符串中所有字母异位词
滑动窗口来解决这一题 将两者都放入数组计数器中进行比较。 s的窗口大小维持在p.length的大小,随时进行缩减(第13行判断) 滑动窗口
【leetcode】3. 无重复字符的最长子串
要找到最长的无重复子串,那就需要一个容器来记录当前的子串,判断是否重复,如果重复,那就寻找下一处,按照这个思路,我们可以使用map来存储当前的字符以及索引,然后再次碰到该字符时,就更新索引,达到目的。
【leetcode】11. 盛最多水的容器
这一题肉眼一看,直接暴力解题,但是也很显然,暴力会超时 暴力 时间复杂度O(n^2) 优化后 时间复杂度O(n)
【leetcode】 128. 最长连续序列
借用set来解决 找到序列的开头(第5行 然后开始逐步向后寻找 +1 保存最大的长度 使用hash来解决 每次循环找到当前数字的左右可拓展的长度,然后将其存起来(map存 例如对于这个数组来说,首先3
【leetcode】146.LRU 缓存
非常经典的一道题,没啥难度,主要就是考察如何构建数据结构 使用used来存储最近使用的元素,队头就是最久没有使用过的元素了 使用map的性质来解决这一题,get元素的时候,如果存在,就把当前的k-v删
【leetcode】3151. 特殊数组 I
思路:这种非黑即白的问题,处理逻辑的时候,只要处理好一边,另外一边反过来弄就好了。主打一个逻辑严谨。 下面的解法思路比较简单,增加一个标志位,但是总感觉不够优雅 优雅的写法,连续比较相邻的两个数字即可
【leetcode】72. 编辑距离
动态规划 1. 定义状态 我们定义一个二维数组 dp,其中 dp[i][j] 表示将 word1[0:i] 转换为 word2[0:j] 所需的最小操作数。 2. 状态转移方程 如果 word1[i-
【leetcode】1035. 不相交的线
最长公共子序列问题 使用动态规划来解题 定义一个二维数组 dp,其中 dp[i][j] 表示在 nums1[0...i-1] 和 nums2[0...j-1] 范围内,能够画出的最多的不交叉线数。 状
【leetcode】676. 实现一个魔法字典
主要实现的地方就在search这个方法,需要找到长度相同,但是字母只相差1个的字符串,符合条件返回true,不符合返回false. 这里的实现思路还是比较简单的,使用diff来计数,长度超过的直接br
【leetcode】3132.找出与数组相加的整数 II
3131进阶版,在nums1中删除两个元素之后,找到x,使其满足nums1[i] + nums[i] = x 首先要对两个数组进行排序,排序过后,便于进行比较 第一步,寻找x,在nums1中的每个元素
下一页