![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷题笔记
文章平均质量分 93
Sweet_pin
学无止境
展开
-
2. LeetCode题解 - 排序算法
文章目录1. 冒泡排序2. 选择排序3. 插入排序4. 希尔排序(了解)5. 归并排序(重点)6. 快速排序(重点)7. 堆排序(重要)预备知识堆排序基本思想及步骤代码实现3 种「非比较」的排序算法8. 计数排序9 桶排序LeetCode相关题目及题解215. 数组中的第K个最大元素(中等)347. 前K个高频元素(中等)451 按照字符出现频率排序(中等)Java中Map的遍历方式75. 颜色分类(中等)1. 冒泡排序冒泡排序(Bubble Sort)是一种简单直观的排序算法。它重复地走访过要排序的原创 2021-07-09 11:31:19 · 631 阅读 · 1 评论 -
LeetCode刷题 - Java常用输入输出
LeetCode刷题 - Java常用输入输出基本语法导包import java.util.Scanner;//或者直接导入下面两个包import java.util.*;import java.io.*;常用输入Scanner sc = new Scanner(System.in);//读一个整数int n = sc.nextInt();//读一个字符串,遇到分号则输入终止String s = sc.next();//读一个浮点数double t = sc.nextDoubl原创 2021-06-11 17:31:31 · 3701 阅读 · 0 评论 -
Leetcode 题解 - 数学
Leetcode 题解 - 数学204. 计数质数统计所有小于非负整数 n 的质数的数量。(素数的定义很简单,如果一个数如果只能被 1 和它本身整除,那么这个数就是素数。)输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。解题思路:如果采用枚举法的话,思路是这样的:int countPrimes(int n) { int count = 0; for (int i = 2; i < n; i++) if原创 2021-05-31 21:27:56 · 1448 阅读 · 0 评论 -
Leetcode 题解 - 分治算法
Leetcode 题解 - 分治算法其实,回溯、分治和动态规划算法可以划为一类,因为它们都会涉及递归。回溯算法就一种简单粗暴的算法技巧,说白了就是一个暴力穷举算法,比如让你用回溯算法求子集、全排列、组合,你就穷举呗,就考你会不会漏掉或者多算某些情况。动态规划是一类算法问题,肯定是让你求最值的。因为动态规划问题拥有最优子结构,可以通过状态转移方程从小规模的子问题最优解推导出大规模问题的最优解。==分治算法呢,可以认为是一种算法思想,通过将原问题分解成小规模的子问题,然后根据子问题的结果构造出原问题的答转载 2021-05-27 15:23:06 · 813 阅读 · 0 评论 -
LeetCode题解 - 双指针
BFS算法文章目录BFS算法LeetCode题解 - 双指针一、快慢指针的常见算法141. 环形链表(简单)142. 环形链表II (中等)876. 链表的中间节点(简单)剑指offer 22. 链表中倒数第k个节点(简单)二、左右指针的常用算法1. 二分查找167. 两数之和 II - 输入有序数组(简单)633. 平方数之和(中等)344. 反转字符串(简单)345. 反转字符串中的元音字母(简单)541. 反转字符串 II (简单)189. 旋转数组(中等)680. 验证回文串 II (简单)88.原创 2021-05-26 15:14:22 · 302 阅读 · 0 评论 -
LeetCode题解 - 二分查找
LeetCode题解 - 二分查找文章目录LeetCode题解 - 二分查找1. 二分查找框架2. 寻找一个数(基本的二分查找)3. 寻找左侧边界的二分搜索3. 寻找右侧边界的二分查找4. 最后总结5. LeetCode相关题解69. x 的平方根(简单)求浮点数的平方根 保留小数744. 寻找比目标字母大的最小字母(简单)方法一:记录存在的字母方法二:线性扫描方法三:二分查找278. 第一个错误的版本(简单)540. 有序数组中的单一元素(中等)153. 寻找旋转排序数组中的最小值(中等)34. 在排序原创 2021-05-24 10:28:06 · 148 阅读 · 0 评论 -
LeetCode题解 - 深度优先搜索
深度优先搜索广度优先搜索一层一层遍历,每一层得到的所有新节点,要用队列存储起来以备下一层遍历的时候再遍历。而深度优先搜索在得到一个新节点时立即对新节点进行遍历:从节点 0 出发开始遍历,得到到新节点 6 时,立马对新节点 6 进行遍历,得到新节点 4;如此反复以这种方式遍历新节点,直到没有新节点了,此时返回。返回到根节点 0 的情况是,继续对根节点 0 进行遍历,得到新节点 2,然后继续以上步骤。从一个节点出发,使用 DFS 对一个图进行遍历时,能够遍历到的节点都是从初始节点可达的,DFS 常用来求原创 2021-05-18 22:21:41 · 1860 阅读 · 0 评论 -
LeetCode题解 - 回溯算法
LeetCode题解 - 回溯算法参考链接一、回溯算法与深度优先遍历回溯法 采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:找到一个可能存在的正确的答案;在尝试了所有可能的分步方法后宣告该问题没有答案。深度优先搜索 算法(英语:Depth-First-S原创 2021-05-14 17:35:44 · 439 阅读 · 0 评论 -
LeetCode题解 - BFS算法
BFS算法文章目录BFS算法一、算法框架二、LeetCode题目详解111. 二叉树的最小深度(简单)1091. 二进制矩阵中的最短路径752. 打开转盘锁(中等)127. 单词接龙(困难)三、双向BFS优化(后续再看)讲解部分参考:作者:labuladong 公众号:labuladongBFS 的核心思想应该不难理解的,就是把一些问题抽象成图,从一个点开始,向四周开始扩散。一般来说,我们写 BFS 算法都是用「队列」这种数据结构,每次将一个节点周围的所有节点加入队列。BFS 相对 DFS 的转载 2021-05-10 10:12:08 · 635 阅读 · 0 评论 -
LeetCode题解 - 动态规划-股票买卖
LeetCode题解 - 动态规划-股票买卖文章目录LeetCode题解 - 动态规划-股票买卖**一、穷举框架****二、状态转移框架****三、秒杀题目**121. 买卖股票的最佳时机(简单)122. 买卖股票的最佳时机 II(简单)309. 最佳买卖股票时机含冷冻期(中等)714. 买卖股票的最佳时机含手续费(中等)123. 买卖股票的最佳时机 III (困难)188. 买卖股票的最佳时机 IV (困难)**四、最后总结**参考文章:labuladong微信公众号,作者:labuladong,#转载 2021-05-07 15:28:48 · 305 阅读 · 0 评论 -
LeetCode题解 - 动态规划-背包问题
LeetCode题解 - 动态规划-背包问题讲解部分参考:作者:labuladong 公众号:labuladong0-1背包给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。其中第i个物品的重量为wt[i],价值为val[i],现在让你用这个背包装物品,最多能装的价值是多少?这个题目中的物品不可以分割,要么装进包里,要么不装,不能说切成两块装一半。举个简单的例子,输入如下:N = 3, W = 4wt = [2, 1, 3]val = [4, 2, 3]算法返回 6,原创 2021-04-28 22:38:30 · 1209 阅读 · 0 评论 -
LeetCode题解 - 动态规划(矩阵路径、数组区间、分割整数)
LeetCode题解 - 动态规划(矩阵路径、数组区间、分割整数)文章目录LeetCode题解 - 动态规划(矩阵路径、数组区间、分割整数)矩阵路径64. 最小路径和(中等)62. 不同路径(中等)数组区间303. 区域和检索-数组不可变(简单)413. 等差数列划分(中等)分割整数343. 整数拆分(中等)279. 完全平方数(中等)91. 解码方法(中等)矩阵路径64. 最小路径和(中等)给定一个包含非负整数的 *m* x *n* 网格 grid ,请找出一条从左上角到右下角的路径,使得路径原创 2021-04-25 15:36:51 · 392 阅读 · 0 评论 -
LeetCode题解 - 动态规划-子序列问题
LeetCode题解 - 动态规划-子序列问题文章目录LeetCode题解 - 动态规划-子序列问题参考文章:labuladong微信公众号#手把手刷动态规划系列文章#,很棒的公众号,推荐给大家1、第一种思路模板是一个一维的 dp 数组:2、第二种思路模板是一个二维的 dp 数组:300. 最长递增子序列(中等)646. 最长数对链(中等)376. 摆动序列(中等)53. 最大子序和(简单)1143. 最长公共子序列(中等)583. 两个字符串的删除操作(中等)712. 两个字符串的最小ASCII删除和(原创 2021-04-23 11:37:53 · 778 阅读 · 0 评论 -
Leetcode 题解 - 动态规划-斐波那契数列
Leetcode 题解 - 动态规划递归和动态规划都是将原问题拆成多个子问题然后求解,他们之间最本质的区别是,动态规划保存了子问题的解,避免重复计算。斐波那契数列系列参考链接:labuladong微信公众号#手把手刷动态规划系列文章动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多,比如说让你求最长递增子序列呀,最小编辑距离呀等等。既然是要求最值,核心问题是什么呢?求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有可行的答案穷举出来,然后在原创 2021-04-15 21:24:16 · 540 阅读 · 0 评论 -
LeetCode题解-贪心算法
LeetCode题解-贪心算法解决贪心算法的基本步骤将原问题分解为子问题找出贪心策略得到每一个子问题的最优解将所有局部最优解的集合构成称为原问题的一个解455. 分发饼干(简单)假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >=``g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。原创 2021-04-11 22:38:20 · 616 阅读 · 0 评论 -
LeetCode题解-位运算
LeetCode题解-位运算常用位运算符基本原理0s 表示一串 0,1s 表示一串 1。x ^ 0s = x x & 0s = 0 x | 0s = xx ^ 1s = ~x x & 1s = x x | 1s = 1sx ^ x = 0 x & x = x x | x = x //判断两个数是否相等(异或为0),两个数不相等(与为0);利用 x ^ 1s = ~x 的特点,可以将一个数的位级表示翻原创 2021-04-11 22:36:06 · 309 阅读 · 0 评论 -
LeetCode题解-数组与矩阵
LeetCode题解-数组与矩阵283.移动零(简单)给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。输入: [0,1,0,3,12]输出: [1,3,12,0,0]必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解题思路:双指针——两个指针初始位于数组开头, iii 指针用来遍历数组, jjj 指针用来记录下一个需要交换的位置,当 iii 指针遍历到的数字不为0时,则将两个指针的数据交换位置,同时 jjj 指针向右挪动一位。cl原创 2021-04-11 22:34:35 · 207 阅读 · 0 评论 -
Leetcode 题解 - 字符串
Leetcode 题解 - 字符串剑指offer 58 - ll 左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。输入: s = "abcdefg", k = 2输出: "cdefgab"输入: s = "lrloseumgh", k = 6输出: "umghlrlose"class Solution { public原创 2021-04-11 22:29:05 · 654 阅读 · 0 评论