算法
文章平均质量分 61
N廿一
如果一个人出海遇到狂风暴雨,被变换肆虐的风吹得团团转,你可能会觉得他航行了很远。其实航行得并不远,只是浮沉动荡的时间长而已
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
扣初级算法-35-数学问题-Fizz Buzz
学习目标: 本次学习目标为 力扣初级算法-数学问题,其中主要的LC如下: Fizz Buzz 学习内容: Fizz Buzz -----(链接) 给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中: answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。 answer[i] == “Fizz” 如果 i 是 3 的倍数。 answer[i] == “Buzz” 如果 i 是 5原创 2021-12-09 23:08:26 · 520 阅读 · 0 评论 -
扣初级算法-34-设计问题-最小栈
学习目标: 本次学习目标为 力扣初级算法-最小栈,其中主要的LC如下: 最小栈 学习内容: 最小栈 -----(链接) 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例 1: 输入: [“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,原创 2021-12-08 23:14:30 · 327 阅读 · 0 评论 -
扣初级算法-33-设计问题-打乱数组
学习目标: 本次学习目标为 力扣初级算法-设计问题,其中主要的LC如下: 打乱数组 学习内容: 打乱数组 -----(链接) 给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。 实现 Solution class: Solution(int[] nums) 使用整数数组 nums 初始化对象 int[] reset() 重设数组到它的初始状态并返回 int[] shuffle() 返回数组随机打乱后的结果 示例 1: 输入 [“Solution”, “shuffle”, “r原创 2021-12-06 23:28:49 · 406 阅读 · 0 评论 -
扣初级算法-32-动态规划-打家劫舍
学习目标: 本次学习目标为 力扣初级算法-动态规划,其中主要的LC如下: 打家劫舍 学习内容: 打家劫舍 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnq4km/) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整原创 2021-12-06 22:24:35 · 267 阅读 · 0 评论 -
扣初级算法-32-动态规划-最大子序和
学习目标: 本次学习目标为 力扣初级算法-动态规划,其中主要的LC如下: 最大子序和 学习内容: 最大子序和 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn3cg3/) 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5原创 2021-12-05 23:57:11 · 155 阅读 · 0 评论 -
扣初级算法-31-动态规划-时机
学习目标: 本次学习目标为 力扣初级算法-动态规划,其中主要的LC如下: 时机 学习内容: 买卖的最佳时机 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn8fsh/) 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定gp第 i 天的价格。 你只能选择 某一天 买入这只GP,并选择在 未来的某一个不同的日子 卖出该GP。设计一个算法来计算你所能获取的最大原创 2021-12-03 00:20:34 · 189 阅读 · 0 评论 -
扣初级算法-30-动态规划-爬楼梯
学习目标: 本次学习目标为 力扣初级算法-动态规划,其中主要的LC如下: 爬楼梯 学习内容: 爬楼梯 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn854d/) 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。原创 2021-12-02 00:22:42 · 304 阅读 · 0 评论 -
扣初级算法-29-排序和搜索-第一个错误的版本
学习目标: 本次学习目标为 力扣初级算法-排序和搜索,其中主要的LC如下: 第一个错误的版本 学习内容: 第一个错误的版本 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnto1s/) 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2原创 2021-12-01 23:05:32 · 156 阅读 · 0 评论 -
扣初级算法-28-排序和搜索-合并两个有序数组
学习目标: 本次学习目标为 力扣初级算法-排序和搜索,其中主要的LC如下: 合并两个有序数组 学习内容: 合并两个有序数组 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnumcr/) 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 示例 1: 输入:nums1 = [1,2,3,0原创 2021-11-30 23:16:54 · 345 阅读 · 0 评论 -
扣初级算法-27-树-将有序数组转换为二叉搜索树
学习目标: 本次学习目标为 力扣初级算法-树,其中主要的LC如下: 将有序数组转换为二叉搜索树 学习内容: 将有序数组转换为二叉搜索树 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xninbt/) 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。原创 2021-11-29 23:47:24 · 199 阅读 · 0 评论 -
扣初级算法-26-树-二叉树的层序遍历
学习目标: 本次学习目标为 力扣初级算法-树,其中主要的LC如下: 二叉树的层序遍历 学习内容: 二叉树的层序遍历 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnldjj/) 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 例如,二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其原创 2021-11-26 23:51:39 · 171 阅读 · 0 评论 -
扣初级算法-25-树-对称二叉树
学习目标: 本次学习目标为 力扣初级算法-树,其中主要的LC如下: 对称二叉树 学习内容: 验证二叉搜索树 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn7ihv/) 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则原创 2021-11-25 22:22:27 · 4679 阅读 · 0 评论 -
扣初级算法-24-树-验证二叉搜索树
学习目标: 本次学习目标为 力扣初级算法-树,其中主要的LC如下: 验证二叉搜索树 学习内容: 验证二叉搜索树 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn08xg/) 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二原创 2021-11-24 23:29:23 · 457 阅读 · 0 评论 -
扣初级算法-23-树-二叉树的最大深度
学习目标: 本次学习目标为 力扣初级算法-树,其中主要的LC如下: 二叉树的最大深度 学习内容: 二叉树的最大深度 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnd69e/) 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例1: 给定二叉树 [3,9,20,null,null,15,7] 返回它原创 2021-11-23 23:51:47 · 184 阅读 · 0 评论 -
扣初级算法-22-链表-环形链表
学习目标: 本次学习目标为 力扣初级算法-链表,其中主要的LC如下: 环形链表 学习内容: 环形链表 -----(链接) 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回原创 2021-11-22 23:57:54 · 197 阅读 · 0 评论 -
扣初级算法-21-链表-合并两个有序链表
学习目标: 本次学习目标为 力扣初级算法-链表,其中主要的LC如下: 回文链表 环形链表 学习内容: 回文链表 -----(链接) 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例1: 示例2: 示例3: 说明: 解题思路: 解法一: 常规解法 边界问题:删除位大于入参的链表的长度 或者直接删除首结点的情况 代码逻辑过程: 代码实现: 解题思路: 解法二: 双指针解法 边界问题:删除位大于入参的链表的长度 或者直接删除首结点的原创 2021-11-22 00:00:04 · 3719 阅读 · 0 评论 -
力扣初级算法-20-链表-合并两个有序链表
学习目标: 本次学习目标为 力扣初级算法-链表,其中主要的LC如下: 合并两个有序链表 学习内容: 删除链表的倒数第N个节点 -----(链接) 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例2: 输入:l1 = [], l2 = [] 输出:[] 示例3: 输入:l1 = [], l2 = [0] 输出:[0] 说明:原创 2021-11-21 23:09:15 · 4411 阅读 · 0 评论 -
力扣初级算法-19-链表-反转链表
学习目标: 本次学习目标为 力扣初级算法-链表,其中主要的LC如下: 反转链表 学习内容: 反转链表-----(链接) 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例2: 输入:head = [1,2] 输出:[2,1] 示例3: 输入:head = [] 输出:[] 解题思路: 解法一: 边界问题: 代码逻辑过程: 代码实现: 解题思路: 解法原创 2021-11-20 23:29:27 · 553 阅读 · 0 评论 -
力扣初级算法-18-链表-删除链表的倒数第N个节点
学习目标: 本次学习目标为 力扣初级算法-链表,其中主要的LC如下: 删除链表的倒数第N个节点 学习内容: 删除链表的倒数第N个节点 -----(链接) 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例2: 输入:head = [1], n = 1 输出:[] 示例3: 输入:head = [1,2], n = 1 输出:[1] 说明: 链表中结点的数目为 sz 1 &原创 2021-11-20 00:43:06 · 952 阅读 · 0 评论 -
力扣初级算法-17-链表-删除链表中的节点
学习目标: 本次学习目标为 力扣初级算法-链表,其中主要的LC如下: 删除链表中的节点 学习内容: 删除链表中的节点 -----(链接) 请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。 题目数据保证需要删除的节点 不是末尾节点 。 示例1: 示例2: 输入:head = [4,5,1,9], node = 1 输出:[4,5,9] 解释:指定链表中值为 1 的第三个节点,那么在调用了你的函数之后原创 2021-11-19 00:10:29 · 954 阅读 · 0 评论 -
力扣初级算法-16-字符串-外观数列
学习目标: 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 最长公共前缀 学习内容: 最长公共前缀 -----(链接) 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例1: 输入:strs = [“flower”,“flow”,“flight”] 输出:“fl” 示例2: 输入:strs = [“dog”,“racecar”,“car”] 输出:"" 解释:输入不存在公共前缀。 说明: 1 <= strs.length &原创 2021-11-18 00:22:28 · 182 阅读 · 0 评论 -
力扣初级算法-15-字符串-外观数列
学习目标: 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 外观数列 学习内容: 外观数列 -----(链接) 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = “1” countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1 11 21原创 2021-11-17 01:00:54 · 310 阅读 · 0 评论 -
力扣初级算法-14-字符串-实现 strStr()
学习目标: 本次学习目标为 力扣初级算法-字符串,其中主要的LC如下: 实现 strStr() 学习内容: 实现 strStr() -----(链接) 实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 示例1: 输入:haystack = “hello”, needle = “ll” 输出:2 示例2: 输入:haystack原创 2021-11-16 00:18:50 · 548 阅读 · 0 评论 -
力扣初级算法-13-字符串-字符串转换整数 (atoi)
学习目标: 本次学习目标为 力扣初级算法-字符串,其中主要的LC如下: 字符串转换整数 (atoi) 学习内容: 字符串转换整数 (atoi) -----(链接) 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如原创 2021-11-14 23:35:04 · 273 阅读 · 0 评论 -
力扣初级算法-12-字符串-验证回文串
学习目标: 本次学习目标为 力扣初级算法-字符串,其中主要的LC如下: 验证回文串 学习内容: 验证回文串 -----(链接) 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例1: 输入: “A man, a plan, a canal: Panama” 输出: true 解释:“amanaplanacanalpanama” 是回文串 示例2: 输入: “race a car” 输出: false 解释原创 2021-11-14 17:30:40 · 1133 阅读 · 0 评论 -
力扣初级算法-11-字符串-有效的字母异位词
学习目标: 本次学习目标为 力扣初级算法-字符串,其中主要的LC如下: 有效的字母异位词 学习内容: 有效的字母异位词-----(链接) 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例1: 输入: s = “anagram”, t = “nagaram” 输出: true 示例2: 输入: s = “rat”, t = “car” 输出: false 说明: s原创 2021-11-14 00:25:05 · 397 阅读 · 0 评论 -
力扣初级算法-10-字符串-字符串中的第一个唯一字符
学习目标: 本次学习目标为 力扣初级算法-字符串,其中主要的LC如下: 字符串中的第一个唯一字符 学习内容: 字符串中的第一个唯一字符-----(链接) 示例1: s = “leetcode” 返回 0 s = “loveleetcode” 返回 2 说明: 你可以假定该字符串只包含小写字母 解题思路: 解法一: 两次遍历 边界问题:字符串为空的问题 代码逻辑过程: 将字符串拆解为 字符数组,直接嵌套循环,二次遍历。 直接二次循环,同时将字符转换为数字,以此作为统计数组的下下标,当原创 2021-11-13 00:20:01 · 973 阅读 · 0 评论 -
力扣初级算法-09-字符串-整数反转
学习目标: 本次学习目标为 力扣初级算法-字符串,其中主要的LC如下: 整数反转 学习内容: 只出现一次的数字 (链接) 示例1: 示例2: 说明: 进阶: 解题思路: 解法一: 边界问题: 代码逻辑过程: 代码实现: 只出现一次的数字 (链接) 示例1: 示例2: 说明: 进阶: 解法一: 边界问题: 解题思路: 代码逻辑过程: 代码实现: 学习笔记: ...原创 2021-11-12 00:09:09 · 472 阅读 · 0 评论 -
力扣初级算法-08-字符串-反转字符串
学习目标: 本次学习目标为 力扣初级算法-字符串,其中主要的LC如下: 反转字符串 整数反转 学习内容: 反转字符串 -----(链接) 示例1: 示例2: 说明: 进阶: 解题思路: 解法一: 边界问题: 代码逻辑过程: 代码实现: 整数反转 (链接) 示例1: 示例2: 说明: 进阶: 解法一: 边界问题: 解题思路: 代码逻辑过程: 代码实现: 学习笔记: ...原创 2021-11-11 00:51:20 · 1116 阅读 · 0 评论 -
力扣初级算法-07-数组-旋转图像
学习目标: 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 两个数组的交集 II 加一 学习内容: 两个数组的交集 II -----(链接) 示例1: 示例2: 说明: 进阶: 解题思路: 解法一: 边界问题: 代码逻辑过程: 代码实现: 只出现一次的数字 (链接) 示例1: 示例2: 说明: 进阶: 解法一: 边界问题: 解题思路: 代码逻辑过程: 代码实现: 学习笔记:原创 2021-11-09 23:48:25 · 1015 阅读 · 0 评论 -
力扣初级算法-06-数组-有效的数独
学习目标: 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 有效的数独 旋转图像 学习内容: 有效的数独 -----(链接) 请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字,空白格用 ‘.’ 表示。 示例1: 示例2: 说明: 进阶:原创 2021-11-08 23:54:21 · 296 阅读 · 0 评论 -
力扣初级算法-05-数组-移动零、两数之和
学习目标: 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 移动零 两数之和 学习内容: 移动零-----(链接) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例1: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 解题思路: 解法一: 把非零元素往前移动 边界问题:考虑数组为null 和空的情况 代码逻辑过程: 循环遍历元素,当 代码实原创 2021-11-06 00:01:35 · 152 阅读 · 0 评论 -
力扣初级算法-04-数组-两个数组的交集 II、加一
学习目标: 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 两个数组的交集 II 加一 学习内容: 两个数组的交集 II (链接) 给定两个数组,编写一个函数来计算它们的交集。 示例1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9] 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 我们可以不考原创 2021-11-05 00:02:12 · 226 阅读 · 0 评论 -
力扣初级算法-03-数组-存在重复元素、只出现一次的数字
学习目标: 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 存在重复元素 学习内容: 旋转数组 (链接) 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 示例1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5原创 2021-11-03 23:36:06 · 344 阅读 · 0 评论 -
力扣初级算法-02-数组-旋转数组
学习目标: 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 旋转数组 存在重复元素 学习内容: 旋转数组 (链接) 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 示例1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,原创 2021-11-02 23:08:40 · 305 阅读 · 0 评论 -
力扣初级算法-01-数组-删除排序重复项、买卖问题
力扣初级算法-01 学习目标 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 删除排序数组中的重复项 买卖股票的最佳时机 II 学习详解 学习笔记 学习总结原创 2021-11-01 14:49:32 · 208 阅读 · 0 评论 -
力扣初级算法学习目录
初级算法学习目录 背景 此初级算法学习清单基于力扣-初级算法,旨在学习初级算法基础知识,对初级算法有简单的认识,及一些基本的解题思路。 初级算法学习主要分为九大基础模块, 分别为数组、字符串、链表、树、排序和搜素、动态规划、设计问题、数学和其他。 学习目录清单 数组 删除排序数组中的重复项 买卖股票的最佳时机 II 字符串 链表 树 排序和搜索 动态规划 设计问题 数学 其他 ...原创 2021-11-01 09:23:27 · 242 阅读 · 0 评论
分享