
有空多刷刷LeeCode算法题
文章平均质量分 63
本专栏专门收集笔者对数据结构学习与理解、算法题的文章
小孔靠得住
不积跬步无以至千里,不积小流无以江海
展开
-
有空多刷刷算法题:回溯理论基础、leecode-77:组合、leecode:组合总和 III
回溯法,⼀般可以解决如下⼏种问题:组合问题:N个数⾥⾯按⼀定规则找出k个数的集合切割问题:⼀个字符串按⼀定规则有⼏种切割⽅式⼦集问题:⼀个N个数的集合⾥有多少符合条件的⼦集排列问题:N个数按⼀定规则全排列,有⼏种排列⽅式棋盘问题:N皇后,解数独等等原创 2024-07-22 09:00:00 · 1194 阅读 · 1 评论 -
每日一练:LeeCode-70. 爬楼梯【动态规划】
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?原创 2024-03-30 23:58:58 · 501 阅读 · 3 评论 -
每日一练:LeeCode-48、旋转图像【二维数组+行列交换】
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。原创 2024-03-28 23:28:30 · 682 阅读 · 1 评论 -
每日一练:LeeCode-217、存在重复元素【数组+暴力+集合】
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。原创 2024-03-28 23:11:36 · 269 阅读 · 1 评论 -
每日一练:LeeCode-350. 两个数组的交集 II【数组+哈希表】
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。原创 2024-03-27 23:58:17 · 618 阅读 · 1 评论 -
每日一练:LeeCode-92、反转链表 II【链表+指定区间反转】
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left原创 2024-03-27 23:52:06 · 495 阅读 · 1 评论 -
每日一练:LeeCode-234、回文链表【链表+栈+快慢双指针】
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。原创 2024-03-26 17:55:39 · 296 阅读 · 1 评论 -
每日一练:LeeCode-21、合并两个有序链表【链表+递归+非递归】
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。原创 2024-03-25 23:52:02 · 411 阅读 · 4 评论 -
每日一练:LeeCode-200、岛屿数量【DFS递归+BFS队列】
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。原创 2024-03-25 23:42:26 · 481 阅读 · 2 评论 -
每日一练:LeeCode-622、设计循环队列【设计+队列】
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。原创 2024-03-24 23:53:47 · 379 阅读 · 2 评论 -
每日一练:LeeCode-561、 数组拆分【数组+排序】
给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该 最大总和 。原创 2024-03-24 23:48:28 · 417 阅读 · 2 评论 -
每日一练:LeeCode-498、对角线遍历【二维数组+边界判断】
给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。原创 2024-03-24 18:26:33 · 278 阅读 · 2 评论 -
每日一练:LeeCode-38、外观数列【字符串】
给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。原创 2024-03-24 18:17:35 · 859 阅读 · 2 评论 -
每日一练:LeeCode-242、有效的字母异位词【数组+字符串】
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。原创 2024-03-22 23:56:41 · 241 阅读 · 1 评论 -
每日一练:LeeCode-387、字符串中的第一个唯一字符【字符串+哈希表】
给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1 。原创 2024-03-22 23:46:16 · 660 阅读 · 1 评论 -
每日一练:LeeCode-153. 寻找旋转排序数组中的最小值【二分法+最值】
给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。原创 2024-03-20 01:06:34 · 352 阅读 · 2 评论 -
每日一练:LeeCode-283、移动零【数组】
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。原创 2024-03-20 00:21:49 · 265 阅读 · 2 评论 -
每日一练:LeeCode-485. 最大连续 1 的个数【双指针+贪心算法】
给定一个二进制数组 nums , 计算其中最大连续 1 的个数。原创 2024-03-19 23:58:09 · 605 阅读 · 2 评论 -
每日一练:LeeCode-557、反转字符串中的单词 III【字符串+双指针】
给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。原创 2024-03-18 23:56:58 · 473 阅读 · 1 评论 -
每日一练:LeeCode-5、 最长回文子串【字符串+双指针+中心扩展法】
给你一个字符串 s,找到 s 中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。原创 2024-03-18 23:50:49 · 576 阅读 · 1 评论 -
每日一练:LeeCode-125、验证回文串【字符串+双指针】
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。字母和数字都属于字母数字字符。给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。原创 2024-03-17 01:59:01 · 623 阅读 · 1 评论 -
每日一练:LeeCode-9、回文数【字符串】
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。原创 2024-03-17 01:37:12 · 546 阅读 · 2 评论 -
每日一练:LeeCode-14、最长公共前缀【字符串+最值判定】
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。原创 2024-03-16 23:57:03 · 471 阅读 · 2 评论 -
每日一练:LeeCode-3、无重复字符的最长子串【滑动窗口+双指针】
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。原创 2024-03-16 20:46:03 · 453 阅读 · 2 评论 -
每日一练:LeeCode-56、合并区间【数组+滑动窗口】
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。原创 2024-03-10 23:59:10 · 412 阅读 · 6 评论 -
每日一练:LeeCode-35、搜索插入位置【数组】、面试题 01.08. 零矩阵【数组】、面试题 01.07. 旋转矩阵【数组+行列翻转】
【代码】每日一练:LeeCode-35、搜索插入位置【数组】、面试题 01.08. 零矩阵【数组】、面试题 01.07. 旋转矩阵【数组+行列翻转】原创 2024-03-10 23:54:52 · 594 阅读 · 4 评论 -
每日一练:LeeCode-209、长度最小的子数组【滑动窗口+双指针】
给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足 其总和大于等于 target 的长度最小的 连续子数组[numsl, numsl+1, ..., numsr-1, numsr] 。原创 2024-03-09 23:25:18 · 642 阅读 · 1 评论 -
每日一练:LeeCode-977、有序数组的平方【双指针法】
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。原创 2024-03-08 00:32:57 · 438 阅读 · 10 评论 -
每日一练:LeeCode-面试题 02.07. 链表相交 【链表+迭代】 LeeCode-142. 环形链表 II【链表+集合】
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。原创 2024-03-06 14:34:00 · 961 阅读 · 3 评论 -
每日一练:LeeCode-24. 两两交换链表中的节点 【链表+虚拟头结点】 LeeCode-19. 删除链表的倒数第 N 个结点【链表+虚拟头结点+双指针(快慢)】
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。原创 2024-03-05 17:34:51 · 965 阅读 · 8 评论 -
每日一练:LeeCode-707. 设计链表 【链表+虚拟头结点+设计】
你可以选择使用单链表或者双链表,设计并实现自己的链表。单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果是双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。原创 2024-03-04 16:07:05 · 447 阅读 · 10 评论 -
每日一练:LeeCode-203. 移除链表元素 【链表+虚拟头结点】
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。原创 2024-03-04 15:49:08 · 519 阅读 · 2 评论 -
每日一练:LeeCode-704. 二分查找、69.x 的平方根 【二分查找+循环不变量】
LeeCode-704. 二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。LeeCode-69. x 的平方根给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。原创 2024-03-03 23:36:40 · 1197 阅读 · 5 评论 -
每日一练:笔试题复盘-LeeCode原题-判断二叉树两数之和-->找到满足二叉树两数之和的所有路径
1、用Java实现,给定一个二叉树root和一个值 sum ,找到从根节点到叶子节点的节点值之和等于 sum 的路径。2、给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。原创 2024-03-03 00:01:10 · 404 阅读 · 7 评论 -
每日一练:笔试题复盘-java随机生成数字和字符组合(复习Java常用字符串API)
每日一练:笔试题复盘-java随机生成数字和字符组合(复习Java常用字符串API)原创 2024-03-02 22:59:48 · 538 阅读 · 3 评论 -
每日一练:LeeCode-701、二叉搜索树中的插入操作【二叉搜索树+DFS+全搜】
给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。原创 2024-03-01 02:00:00 · 896 阅读 · 4 评论 -
每日一练:LeeCode-235、二叉搜索树的最近公共祖先【二叉搜索树+DFS+从上往下】
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。原创 2024-02-27 21:48:12 · 1043 阅读 · 2 评论 -
每日一练:LeeCode-236、二叉树的最近公共祖先【二叉树+DFS+从下往上】
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”原创 2024-02-20 00:40:28 · 1168 阅读 · 3 评论 -
每日一练:LeeCode-501、二叉搜索树中的众数【二叉搜索树+pre辅助节点+DFS】
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按 任意顺序 返回。原创 2024-02-18 23:22:45 · 664 阅读 · 1 评论 -
每日一练:LeeCode-530、二叉搜索树的最小绝对差【二叉搜索树+pre辅助节点+DFS】
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。原创 2024-02-17 02:36:33 · 512 阅读 · 3 评论