
LeetCode
文章平均质量分 81
算法每日一题,每天更新!
零點零壹
2023博客之星Top23,科班出身,在读硕士研究生,目前研究方向为人工智能目标检测领域,专注于C++、Java 的学习和求职,会一直更新自己的学习笔记以及坚持刷力扣算法笔记,涉及面向对象编程、设计模式、网络编程、docker、mysql、redis、Linux、后端开发,音视频等。(坚持每天新增0.01!)
展开
-
(链表) 25. K 个一组翻转链表 ——【Leetcode每日一题】
25. K 个一组翻转链表给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。原创 2023-10-25 19:57:05 · 404 阅读 · 0 评论 -
(矩阵) 289. 生命游戏 ——【Leetcode每日一题】
难度:中等根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 即为 活细胞 (live),或 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 网格面板 的当前状态,返回下一个状态。提示:进阶:原创 2023-10-18 20:13:39 · 1112 阅读 · 1 评论 -
(滑动窗口) 76. 最小覆盖子串 ——【Leetcode每日一题】
76. 最小覆盖子串给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。原创 2023-10-14 13:58:02 · 1224 阅读 · 4 评论 -
(数组/字符串) 380. O(1) 时间插入、删除和获取随机元素 ——【Leetcode每日一题】
380. O(1) 时间插入、删除和获取随机元素实现RandomizedSet 类:RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true ;否则,返回 false 。int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时原创 2023-09-27 20:31:20 · 923 阅读 · 1 评论 -
(数组 / 字符串) 55. 跳跃游戏 ——【Leetcode每日一题】
55. 跳跃游戏给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。原创 2023-09-21 12:49:42 · 553 阅读 · 0 评论 -
一文搞懂并查集
函数的过程中,我们知道,通过递归的方式,不断获取。数组下标对应的数值,最终找到这个集合的根。接下来围绕并查集的这两个功能来展开讲解。这三个元素是否在同一个集合里?以上代码在C++中,可以用。通过模板,我们可以知道,从代码层面,我们如何将。也在同一个元素里呢?可以解决什么问题呢?,其实就是将三个元素。在一起,如何连通呢。是否在同一个集合里?原创 2023-09-21 08:49:19 · 547 阅读 · 0 评论 -
(并查集) 1971. 寻找图中是否存在路径 ——【Leetcode每日一题】
1971. 寻找图中是否存在路径有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] = [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点对由 最多一条 边连接,并且没有顶点存在与自身相连的边。请你确定是否存在从顶点 source 开始,到顶点 destination 结束的 有效路径 。给你数组 edges 和整数 n、source 和 destinat原创 2023-09-20 20:50:09 · 638 阅读 · 0 评论 -
(图论) 827. 最大人工岛 ——【Leetcode每日一题】
827. 最大人工岛给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。返回执行此操作后,grid 中最大的岛屿面积是多少?岛屿 由一组上、下、左、右四个方向相连的 1 形成。原创 2023-09-19 08:28:01 · 881 阅读 · 0 评论 -
(图论) 1020. 飞地的数量 ——【Leetcode每日一题】
1020. 飞地的数量给你一个大小为 `m x n` 的二进制矩阵 `grid` ,其中 `0` 表示一个 **海洋单元格**、`1` 表示一个 **陆地单元格**。一次 **移动** 是指从一个**陆地单元格**走到另一个相邻(**上**、**下**、**左**、**右**)的**陆地单元格**或跨过 `grid` 的边界。返回网格中 **无法** 在任意次数的移动中离开网格边界的陆地单元格的数量。原创 2023-09-16 19:49:57 · 1460 阅读 · 0 评论 -
(其他) 剑指 Offer 61. 扑克牌中的顺子 ——【Leetcode每日一题】
剑指 Offer 61. 扑克牌中的顺子从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。原创 2023-09-11 19:53:17 · 704 阅读 · 2 评论 -
(其他) 剑指 Offer 67. 把字符串转换成整数 ——【Leetcode每日一题】
剑指 Offer 67. 把字符串转换成整数写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们原创 2023-09-09 20:35:50 · 662 阅读 · 0 评论 -
(其他) 剑指 Offer 64. 求1+2+…+n ——【Leetcode每日一题】
剑指 Offer 64. 求1+2+…+n求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。原创 2023-09-08 18:28:03 · 508 阅读 · 0 评论 -
(其他) 剑指 Offer 46. 把数字翻译成字符串 ——【Leetcode每日一题】
剑指 Offer 46. 把数字翻译成字符串给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。原创 2023-09-07 14:18:56 · 571 阅读 · 0 评论 -
(其他) 剑指 Offer 65. 不用加减乘除做加法 ——【Leetcode每日一题】
剑指 Offer 65. 不用加减乘除做加法写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。原创 2023-09-06 12:48:29 · 493 阅读 · 1 评论 -
(位运算) 剑指 Offer 56 - I. 数组中数字出现的次数 ——【Leetcode每日一题】
剑指 Offer 56 - I. 数组中数字出现的次数一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。原创 2023-09-03 14:44:40 · 508 阅读 · 0 评论 -
(位运算) 剑指 Offer 15. 二进制中1的个数 ——【Leetcode每日一题】
剑指 Offer 15. 二进制中1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数原创 2023-09-03 13:32:56 · 484 阅读 · 0 评论 -
(数学) 剑指 Offer 62. 圆圈中最后剩下的数字 ——【Leetcode每日一题】
约瑟夫环——公式法(递推公式)原创 2023-09-01 21:11:36 · 537 阅读 · 0 评论 -
(数学) 剑指 Offer 39. 数组中出现次数超过一半的数字 ——【Leetcode每日一题】
剑指 Offer 39. 数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。原创 2023-08-31 12:43:48 · 591 阅读 · 0 评论 -
(动态规划) 剑指 Offer 66. 构建乘积数组——【Leetcode每日一题】
剑指 Offer 66. 构建乘积数组给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。原创 2023-08-30 18:38:44 · 456 阅读 · 0 评论 -
(动态规划) 剑指 Offer 60. n个骰子的点数 ——【Leetcode每日一题】
剑指 Offer 60. n个骰子的点数把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。原创 2023-08-29 19:48:16 · 548 阅读 · 0 评论 -
(动态规划) 剑指 Offer 49. 丑数 ——【Leetcode每日一题】
剑指 Offer 49. 丑数我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。原创 2023-08-28 20:04:27 · 376 阅读 · 2 评论 -
(动态规划) 剑指 Offer 48. 最长不含重复字符的子字符串 ——【Leetcode每日一题】
剑指 Offer 48. 最长不含重复字符的子字符串请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。原创 2023-08-27 15:23:10 · 1684 阅读 · 11 评论 -
(动态规划) 剑指 Offer 47. 礼物的最大价值 ——【Leetcode每日一题】
剑指 Offer 47. 礼物的最大价值在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?原创 2023-08-24 12:53:18 · 658 阅读 · 0 评论 -
(动态规划) 剑指 Offer 42. 连续子数组的最大和 ——【Leetcode每日一题】
剑指 Offer 42. 连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。原创 2023-08-23 12:48:04 · 466 阅读 · 0 评论 -
(动态规划) 剑指 Offer 10- II. 青蛙跳台阶问题 ——【Leetcode每日一题】
剑指 Offer 10- II. 青蛙跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。原创 2023-08-22 12:38:26 · 649 阅读 · 0 评论 -
(动态规划) 剑指 Offer 10- I. 斐波那契数列 ——【Leetcode每日一题】
剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。原创 2023-08-21 20:17:14 · 322 阅读 · 0 评论 -
(排序) 剑指 Offer 51. 数组中的逆序对 ——【Leetcode每日一题】
剑指 Offer 51. 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。原创 2023-08-21 19:47:01 · 1413 阅读 · 5 评论 -
(排序) 剑指 Offer 45. 把数组排成最小的数 ——【Leetcode每日一题】
剑指 Offer 45. 把数组排成最小的数输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。原创 2023-08-20 15:39:15 · 974 阅读 · 3 评论 -
(排序) 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 ——【Leetcode每日一题】
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。原创 2023-08-20 13:40:59 · 509 阅读 · 2 评论 -
(搜索) 剑指 Offer 38. 字符串的排列 ——【Leetcode每日一题】
剑指 Offer 38. 字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。原创 2023-08-19 21:44:17 · 857 阅读 · 0 评论 -
(搜索) 剑指 Offer 13. 机器人的运动范围 ——【Leetcode每日一题】
剑指 Offer 13. 机器人的运动范围地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?原创 2023-08-18 19:06:43 · 1595 阅读 · 0 评论 -
(搜索) 剑指 Offer 12. 矩阵中的路径 ——【Leetcode每日一题】
剑指 Offer 12. 矩阵中的路径给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。原创 2023-08-17 19:59:16 · 973 阅读 · 0 评论 -
(分治) 剑指 Offer 16. 数值的整数次方 ——【Leetcode每日一题】
剑指 Offer 16. 数值的整数次方实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题原创 2023-08-16 19:11:40 · 411 阅读 · 0 评论 -
(二分查找) 剑指 Offer 53 - I. 在排序数组中查找数字 I ——【Leetcode每日一题】
剑指 Offer 53 - I. 在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。原创 2023-08-15 19:32:17 · 333 阅读 · 0 评论 -
(二分查找) 11. 旋转数组的最小数字 ——【Leetcode每日一题】
剑指 Offer 11. 旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。原创 2023-08-14 20:13:59 · 509 阅读 · 0 评论 -
(贪心) 剑指 Offer 63. 股票的最大利润 ——【Leetcode每日一题】
剑指 Offer 63. 股票的最大利润假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?原创 2023-08-13 12:29:24 · 1103 阅读 · 2 评论 -
(贪心) 剑指 Offer 14- II. 剪绳子 II ——【Leetcode每日一题】
剑指 Offer 14- II. 剪绳子 II给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*...*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。原创 2023-08-11 12:40:34 · 373 阅读 · 2 评论 -
(贪心) 剑指 Offer 14- I. 剪绳子 ——【Leetcode每日一题】
剑指 Offer 14- I. 剪绳子给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。原创 2023-08-10 21:04:05 · 362 阅读 · 2 评论 -
(树) 剑指 Offer 68 - II. 二叉树的最近公共祖先 ——【Leetcode每日一题】
剑指 Offer 68 - II. 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]原创 2023-08-09 12:35:34 · 182 阅读 · 2 评论 -
(树) 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 ——【Leetcode每日一题】
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”原创 2023-08-08 16:14:05 · 202 阅读 · 2 评论