算法修炼
文章平均质量分 85
算法修炼
@u@
这个作者很懒,什么都没留下…
展开
-
【算法修炼】二分查找最接近元素(最接近下标)
之前学习的二分模板基本都是:查找相等元素的下标、第一个大于等于元素的下标和第一个大于元素的下标。但题目往往会考察:与当前元素差值最小的元素下标、最小的差值、最小差值的元素等,这就需要在二分的基础上加一些修改。查找最接近的元素(简单)只需要用到:"第一个大于等于key元素"的二分模板考虑使用该函数后的返回值:返回等于key元素的元素下标,也就是说直接找到了key,此时答案就是key元素自身。返回数组长度,也就是说没有找到大于等于key的元素(数组中所有元素小于key),此时答案就是num[idx原创 2022-05-22 21:36:34 · 1793 阅读 · 1 评论 -
【算法修炼】丑数系列
丑数系列丑数的判定很简单,只需要看是否能被2或者3或者5的质因数除尽。class Solution { public boolean isUgly(int n) { if (n == 0) return false; while (n % 2 == 0) n /= 2; while (n % 3 == 0) n /= 3; while (n % 5 == 0) n /= 5; return n == 1;原创 2022-05-21 13:19:04 · 207 阅读 · 0 评论 -
【算法修炼】分割回文串、分割回文串Ⅱ
分割回文串(中等)DFS搜索:先考虑最朴素的DFS搜索,需要把原串拆分成若干子串,关键点就在于:拆分点的选取,那么我们只需要去搜索拆分点即可。class Solution { LinkedList<String> tmp = new LinkedList<>(); List<List<String>> ans = new LinkedList<>(); public List<List<String>原创 2022-05-21 11:29:41 · 316 阅读 · 2 评论 -
【算法修炼】动态规划专题四:线性DP、经典买卖股票六大子问题详解、摆动序列、粉刷房子、粉刷栅栏
动态规划专题三解码方法(中等)交错字符串(中等)买卖股票的最佳时机(简单)买卖股票的最佳时机Ⅱ(中等)买卖股票的最佳时机Ⅲ(困难)戳气球(困难)解码方法(中等)注意一下base case即可。class Solution { public int numDecodings(String s) { int n = s.length(); int[] dp = new int[n + 1]; dp[0] = 1; // base case类似于原创 2022-05-20 22:55:22 · 413 阅读 · 1 评论 -
【算法修炼】链表一、二
链表一21、合并两个有序链表(简单)83、删除排序链表中的重复元素(简单)82、删除排序链表中的重复元素Ⅱ(中等)前面介绍了树、图等题目的解法,接下来主要对链表相关题目进行讲解和练习。学习自:https://labuladong.gitee.io/algo/2/18/17/21、合并两个有序链表(简单)题目比较简单,可以直接看代码,主要用到了虚拟头节点dummy,有了dummy可以避免处理空指针的情况,降低代码的复杂性。class Solution { public ListNode m原创 2022-04-27 22:21:01 · 1681 阅读 · 0 评论 -
【算法修炼】螺旋矩阵问题
一、54、螺旋矩阵(中等)螺旋矩阵是很经典的题目,它不涉及算法,就是简单的模拟,但是细节很多,在面试时一紧张就容易写错。其实可以把整个求解过程拆分成4个部分就不容易搞混。对于一个矩阵,我们可以规定它的左上角为(top, left) 右上角为(top, right) 左下角为(bottom, left) 右下角为(bottom right),left、top初始值为0,right初始值为列数,bottom初始值为行数,然后按照螺旋矩阵形成的顺序进行模拟:右下左上。class Solution {原创 2022-04-05 10:33:05 · 532 阅读 · 0 评论 -
【算法修炼】树形DP、区间DP和状压DP
学习了之前的基础DP内容,发现比赛题目往往不会考常规DP呀!更喜欢考背包、树型、区间DP,赶紧来学习学习。学习自:https://www.cnblogs.com/ljy-endl/p/11612275.html树型DP和区间DP一、经典树形DP问题树的重心树的直径(树的最长路径)图的直径大臣的旅费方法一:两次DFS搜索方法二:DP※树的中心二、普通树形DP问题没有上司的舞会一、经典树形DP问题树型动态规划是建立在树上的,相应的有二个方向:叶->根:在回溯的时候从叶子节点往上更新信息,是比较原创 2022-03-31 15:01:37 · 775 阅读 · 0 评论 -
【算法练习】蓝桥杯C++ AB组辅导课题单:第六、七、八讲(Java解答版)
一、双指针、BFS与图论1238、日志统计(中等)原创 2022-03-11 21:35:57 · 1427 阅读 · 0 评论 -
【算法练习】二叉树、N叉树专题(二叉树的展开、N叉树的遍历)
100、相同的树(简单)class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { if (p == null && q == null) return true; if (p == null || q == null || p.val != q.val) return false; return isSameTree(p.left, q.left) &a原创 2022-03-09 20:22:03 · 1167 阅读 · 0 评论 -
【算法修炼】二叉搜索树
学习自:https://labuladong.gitee.io/algo/2/19/26/二叉搜索树一、BST的中序遍历230、二叉搜索树中第k小的元素(中等)1038、从二叉搜索树到更大和树(中等)二、判断BST的合法性※98、验证二叉搜索树(中等)700、二叉搜索树中的搜索(简单)三、BST的插入、删除操作BST中插入一个数※701、二叉搜索树中的插入操作(中等)BST中删除一个数※450、删除二叉搜索树中的节点(简单)四、如何计算所有有效 BST※96、不同的二叉搜索树(中等)※95、不同的二叉搜索原创 2022-03-09 18:16:23 · 260 阅读 · 0 评论 -
【算法修炼】二叉树算法二(二叉树展开为链表、二叉树的构造、序列化、反序列化)
二叉树算法二填充每个节点的下一个右侧节点指针(中等)※二叉树展开为链表(中等)有了二叉树算法一的学习,对整个框架模板有了了解,下面做的是需要多刷题。填充每个节点的下一个右侧节点指针(中等)注意题目中说了,初始状态下,所有next指针都是NULL,所以就不用担心根指针如何连接的问题。同样时拆分成左右指针来处理,唯一要注意的是,5和6节点的连接。class Solution { public Node connect(Node root) { if (root == null)原创 2022-03-09 14:38:46 · 1145 阅读 · 0 评论 -
【算法练习】蓝桥杯C++ AB组辅导课题单:第三、四、五讲(Java解答版)
蓝桥杯C++ AB组辅导课提单(Java解答版)一、数学与简单DP1205、买不到的数目(简单)(互质两数不能凑出的最大数)1211、蚂蚁感冒(简单)1216、饮料换购(简单)2、01背包问题(简单)1015、摘花生(简单)895、最长上升子序列(简单)※1212、地宫取宝(中等)(DP)※1214、波动数列(中等)(DP)二、枚举、模拟与排序一、数学与简单DP1205、买不到的数目(简单)(互质两数不能凑出的最大数)类似于下面这道题:如果知道数学结论很快就可以得出答案:也可以通过打表方式找原创 2022-03-07 17:28:43 · 742 阅读 · 0 评论 -
【算法修炼】树状数组、差分数组(矩阵)、差分前缀和公式的巧妙理解
树状数组与线段树)一、树状数组介绍1264、动态求区间和(简单)1265、数星星(中等)一、树状数组介绍树状数组可以解决可以转化为前缀和问题的问题,这是一类用以解决动态前缀和的问题。上图是树状数组每一个下标存储的值,它有几个下标是存储的前缀和,有些则是存储自己一个可以看到下标1负责下标1的和,下标2负责下标1-2的和,下标4负责1-4的和,下标8负责1-8的和…d[2] = a1 + a2,因为2的二进制=0010,只有1个0,所以负责2个元素的和。如果我们想要13这个位置的前缀和,即1原创 2022-03-07 17:17:25 · 722 阅读 · 0 评论 -
【算法修炼】优先队列
优先队列一、最后一块石头的重量(简单)二、数组中两元素的最大乘积(简单)三、根据字符出现频率排序(中等)四、找到和最大的长度为k的子序列(简单)优先队列,也称为栈,它可以在保证队列的结构下,对队列的内部元素进行排序,可以按照某个值、从大、从小排序,由具体的Comparator决定。使用优先队列的情况,一般存在于,需要集合中的最值,而这个集合又在更新的情况。同样的,优先队列常常不会专门成为一道题目,而是与其它算法搭配使用,优先队列可以作为一种算法小技巧。一、最后一块石头的重量(简单)class So原创 2022-02-28 19:56:52 · 727 阅读 · 0 评论 -
【2021年蓝桥杯Java-B组省赛(第二场)题解】
2021Java-B组省赛(第二场)一、求余二、双阶乘三、格点四、整数分解五、城邦六、特殊年份七、小平方八、完全平方数九、负载均衡一、求余在C/C++/Java/Python等语言中,使用%表示求余,请问2021%20的值是多少?在 C/C++/Java/Python 等语言中,使用\%表示求余,请问 2021 \%20 的值是多少?在C/C++/Java/Python等语言中,使用%表示求余,请问2021%20的值是多少?答案:1二、双阶乘只要最后五位,取余就行。import java.ut原创 2022-02-28 18:55:05 · 1382 阅读 · 3 评论 -
【算法修炼】二叉树算法一
二叉树算法一一、二叉树的遍历前序遍历中序遍历后序遍历遍历 or 位置?二叉树的最大深度(简单)二叉树的前序遍历(简单)二叉树的中序遍历(简单)二叉树的后序遍历(简单)前、中、后序位置的深究翻转二叉树(简单)又开启了新的一章!数据结构中二叉树的相关算法的学习!同样学习自大佬:https://labuladong.gitee.io/algo/2/18/大佬一直强调先刷二叉树,但是自己相见恨晚,回溯、递归学完了才来刷二叉树,先刷二叉树可以对这之后的很多算法有更好的理解。一、二叉树的遍历树的问题就永远逃不原创 2022-02-24 13:14:39 · 1041 阅读 · 0 评论 -
【算法修炼】图论算法四(SPFA单源最短路径应用及其扩展)
图论算法四最小体力消耗路径(中等)概率最大的路径(中等)先贴贴模板:class Solution { public int networkDelayTime(int[][] times, int n, int k) { // 先建图 List<int[]>[] graph = new LinkedList[n + 1];// 也可以写成:// List<Integer>[] graph = new Link原创 2022-02-23 16:10:00 · 360 阅读 · 0 评论 -
【算法修炼】图论算法三(并查集的应用、图中的环、Kruskal最小生成树算法、Dijkstra最短路径算法、SPFA最短路径算法)
图论算法三一、并查集算法的应用一、并查集算法的应用再来回顾下并查集算法的模板:class UF { // 连通分量个数 int count; // 存储若干棵树 int[] parent; // 记录每棵树的重量 int[] size; // 构造函数 public UF(int n) { this.count = n; parent = new int[n]; size = new in原创 2022-02-23 13:36:13 · 1204 阅读 · 0 评论 -
【算法修炼】图论算法二(拓扑排序、二分图、并查集)
学习自https://labuladong.gitee.io/algo/2/19/36/图论算法二一、DFS实现拓扑排序二、BFS实现拓扑排序三、二分图判定二分图判定思路判断二分图(中等)可能的二分法(中等)四、Kruskal 最小生成树算法并查集算法一、DFS实现拓扑排序紧接上文:为什么需要对后序遍历的结果进行反转,才能得到拓扑排序的结果?把上面的二叉树看成有向图,由根结点指向左右孩子结点,那么,根结点只会在最后进行后续遍历时才会遍历到,例如:1结点的左孩子,后续遍历顺序应该是:5 6 7 4原创 2022-02-21 21:14:01 · 882 阅读 · 0 评论 -
【算法修炼】图论算法一(图的表示、图的遍历、图中环的检测)
学习自:https://labuladong.gitee.io/algo/2/19/35/终于开始了数据结构算法的学习…(????数据结构)一、图的基本结构二、图的存储方式图结构的两种存储方式:无向图的邻接矩阵一定是对称的。三、度四、图的遍历图和多叉树最大的区别是,图是可能包含环的,你从图的某一个节点开始遍历,有可能走了一圈又回到这个节点。所以,如果图包含环,遍历框架就要一个 visited 数组进行辅助:// 记录被遍历过的节点boolean[] visited;//原创 2022-02-21 17:04:59 · 1570 阅读 · 0 评论 -
【算法修炼】哈希表、n数之和问题
哈希表一、有效的字母异位词二、两个数组的交集(简单)三、快乐数(简单)四、两数之和(简单)五、三数之和(中等)六、四数之和(中等)七、四数之和Ⅱ(中等)哈希表类型的问题不算复杂,但需要想到哈希表却不容易。一、有效的字母异位词s串中每个字母计数++,t串中每个字母计数–,最后看计数数组中是不是所有单词个数都是0,是0才是异位词。class Solution { public boolean isAnagram(String s, String t) { int[] cnt =原创 2022-02-21 13:47:34 · 484 阅读 · 0 评论 -
【算法修炼】单调栈
单调栈一、下一个更大元素Ⅰ(简单)二、下一个更大元素Ⅱ(中等)三、每日温度单调栈实际上就是栈,只是利用了一些巧妙的逻辑,使得每次新元素入栈后,栈内的元素都保持有序(单调递增或单调递减)。听起来有点像堆(heap)?不是的,单调栈用途不太广泛,只处理一种典型的问题,叫做 Next Greater Element。一、下一个更大元素Ⅰ(简单)下一个更大元素Ⅰ用这个图更方便理解,从数组最后一个元素开始遍历,判断该元素与栈顶元素大小,如果栈顶小于等于当前数,出栈,继续遍历栈,直到找到第一个大于该元素的值原创 2022-02-20 23:14:55 · 331 阅读 · 0 评论 -
【2021年蓝桥杯Java-B组省赛(第一场)题解】
2021Java-B组省赛(第一场)一、ASC二、卡片(模拟)※三、直线(模拟)四、货物摆放(约数)五、路径六、时间显示(模拟)七、最少砝码(找规律)八、杨辉三角形九、双向排序十、括号序列一、ASC已知大写字母 A 的 ASCII 码为 65,请问大写字母 L 的 ASCII 码是多少?public class Main { public static void main(String[] args) { System.out.println((int)('L'));原创 2022-02-19 17:15:19 · 2007 阅读 · 1 评论 -
【算法修炼】直线、平面问题
一、点集合确定的不同直线数在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上,那么这些点中任意两点确定的直线是同一条。给定平面上 2 × 3 个整点 {(x,y)|0 ≤ x < 2,0 ≤ y < 3, x ∈ Z,y ∈ Z},即横坐标是 0 到 1 (包含 0 和 1) 之间的整数、纵坐标是 0 到 2 (包含 0 和 2) 之间的整数的点。这些点一共确定了 11 条不同的直线。给定平面上 20 × 21 个整点 {(x,y)|0 ≤ x < 20,0 ≤ y &原创 2022-02-18 22:19:51 · 1411 阅读 · 0 评论 -
【2020年蓝桥杯Java-B组省赛(10月第二场)题解】
2020Java-B组省赛(十月第二场)一、门牌制作(暴力)二、寻找2020(模拟)三、蛇形填数(找规律)四、七段码(dfs搜索)五、排序(贪心)六、成绩分析(模拟)七、单词分析(模拟)八、数字三角形(DP)九、子串分值和(找规律)十、装饰珠一、门牌制作(暴力)小蓝要为一条街的住户制作门牌号。这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,原创 2022-02-16 20:29:44 · 1618 阅读 · 1 评论 -
【2020年蓝桥杯Java-B组省赛(7月第一场)题解】
2020Java-B组省赛(7月第一场)一、解密(看)二、纪念日(SimpleDateFormat类、Date类)三、合并检测(公式推导)四、分配口罩(搜索)五、斐波那契数列最大公约数(BigInteger类)六、分类计数(暴力)七、八次求和(BigInteger类)八、字符串编码(贪心)九、BST 插入节点问题十、网络分析一、解密(看)直接看答案:YeRikGSunlRzgDlvRwYkXkrGWWhXaA二、纪念日(SimpleDateFormat类、Date类)之前几次比赛一直考Cale原创 2022-02-16 14:04:41 · 1375 阅读 · 7 评论 -
【算法修炼】回溯DFS深究
import java.util.*;public class Main { static int[] nums = new int[15]; static int sum = 0; static int tmpSum = 0; static int ans = Integer.MAX_VALUE; static LinkedList<Integer> tmp = new LinkedList<>(); public static原创 2022-02-15 22:45:27 · 320 阅读 · 0 评论 -
【2019年蓝桥杯Java-B组省赛题解】
2019Java-B组省赛一、组队(贪心)二、不同子串(substring)三、数列求值(模拟)四、数的分解(模拟)五、迷宫(BFS)六、特别数的和(模拟)七、外卖店优先级(排序、模拟)八、人物相关性分析(indexOf、模拟)九、后缀表达式(后缀表达式、数学推导)十、灵能传输一、组队(贪心)贪心,每个尽量选最大的,1号编号1:97分,2号编号10:99分,3号编号17:99分,4号编号15:97分,5号编号12:98分,总共:490分答案:490二、不同子串(substring)一个字符串的非原创 2022-02-15 20:37:13 · 2065 阅读 · 1 评论 -
【2018年蓝桥杯Java-B组省赛题解】
2018Java-B组省赛一、第几天(Calendar类)二、方格计数(模拟)三、复数幂四、测试次数五、程序填空题六、一、第几天(Calendar类)2000年的1月1日,是那一年的第1天。那么,2000年的5月4日,是那一年的第几天?直接用Calendar类,注意月份从0开始。package Chapter_5;import java.util.*;public class Main { public static void main(String[] args) {原创 2022-02-14 22:58:46 · 2095 阅读 · 1 评论 -
【2017年蓝桥杯Java-B组省赛题解】
2017Java-B组省赛一、购物单(计算器)二、纸牌三角形(模拟、数学思维去重)三、承压计算(杨辉三角、数学思维)四、魔方状态(做不来)五、六、程序填空题七、日期问题(非常细节的模拟、Calendar类)八、包子凑数(最大公约数)九、分巧克力(模拟、二分)※十、k倍区间(前缀和)一、购物单(计算器)标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。 这不,XX大促销又来了!老板夫人开出了长长的购物原创 2022-02-12 22:57:00 · 10257 阅读 · 0 评论 -
【算法修炼】前缀和
前缀和一、区域和检索(简单)二、和为k的子数组(中等)前缀和,和双指针一样,前缀和更多是一种处理技巧,它可以帮助我们很快地计算出一个连续区间内的和。 通常题目中不会单独为前缀和出题,会隐藏在题目中,需要发掘。一、区域和检索(简单)以本题为例讲解如何构造前缀和。不了解前缀和,可能会写出下面的代码:class NumArray { int[] nums; public NumArray(int[] nums) { this.nums = nums; }原创 2022-02-12 21:17:10 · 618 阅读 · 0 评论 -
【2016年蓝桥杯Java-B组省赛题解】
2016Java-B组省赛一、煤球数目(找规律)二、生日蜡烛(模拟)三、凑算式(全排列、模拟)四、五、程序填空题六、方格填数(全排列、搜索)七、※※※剪邮票(搜索)、剪格子一、煤球数目(找规律)煤球数目有一堆煤球,堆成三角棱锥形。具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。3 - 1原创 2022-02-11 21:41:42 · 1091 阅读 · 0 评论 -
【2015年蓝桥杯Java-B组省赛题解】
2015年蓝桥杯一、三角形面积(直接数格子)二、立方变自身(模拟、暴力)三、三羊献瑞(模拟、暴力)四、五、程序填空题六、加法变乘法(模拟、暴力)七、※牌型种类(搜索)八、饮料换购(模拟)九、垒骰子(动态规划)十、生命之树(树状DP)一、三角形面积(直接数格子)三角形面积如图1所示。图中的所有小方格面积都是1。那么,图中的三角形面积应该是多少呢?请填写三角形的面积。不要填写任何多余内容或说明性文字。拆成上下两部分三角形,2 * 7 / 2 + 6 * 7 / 2 = 7 + 21 = 28原创 2022-02-09 15:34:37 · 1081 阅读 · 2 评论 -
【2014年蓝桥杯Java-B组省赛题解】
2014Java-B组省赛一、武功秘籍(模拟)二、切面条(找规律)三、猜字母(模拟)四、五、为程序填空题六、奇怪的分式(模拟)七、扑克排序(贪心)八、分糖果(模拟)九、地宫取宝(DFS搜搜)十、※矩阵翻转硬币(数学推理、BigInteger求sqrt)一、武功秘籍(模拟)标题:武功秘籍 小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。 小明只想练习该书的第81页到第92页的武功原创 2022-02-08 22:30:37 · 1700 阅读 · 0 评论 -
【2013年蓝桥杯Java-B组省赛题解】
2013Java-B组省赛一、世纪末的星期(Calender类)二、马虎的算式(暴力循环)三、振兴中华(DFS搜索)四、黄金连分数(BigDecimal类)五、六为填空题跳过七、错误票据(注意输入、部分排序)(排序)八、幸运数(模拟)九、带分数(全排列、搜索)十、连号区间数(模拟)题目主要考察对java特殊类class的掌握(Calender、BigDecimal),考察按照给定题目意思,模拟题目的能力,这里的模拟可能需要排序、搜索的帮助。未涉及DP。一、世纪末的星期(Calender类)标题: 世纪原创 2022-02-08 15:16:55 · 903 阅读 · 0 评论 -
【算法修炼】回溯专题二——岛屿类问题和迷宫类问题
专题二主要对岛屿类型问题、迷宫类型问题进行讲解,它们有固定的套路,是可以一起学习的。这类题目可以使用dfs、bfs解决,但它们的本质都是通过遍历、标记、剪枝来解决,有些题目使用dfs可能会超时,必须得使用bfs回溯专题二一、岛屿类题目1.1 岛屿数量(中等)1.2 统计封闭岛屿的数目(中等)1.3 岛屿的最大面积(中等)1.4 统计子岛屿(中等)1.5 ※不同的岛屿数量(中等)1.6 颜色填充(简单)二、迷宫类题目2.1 迷宫一(简单)2.2 迷宫二(中等)2.3 迷宫三(中等)2.4 红与黑(中等)2.原创 2022-02-07 20:26:34 · 643 阅读 · 0 评论 -
关于DFS(深度优先搜索)与DP(动态规划)的思考
DFS与DP的关系很多情况下,dfs和dp两种解题方法的思路都是很相似的,这两种算法在一定程度上是可以互相转化的。想到dfs也就常常会想到dp,当然在一些特定的适用场合下除外。dp主要运用了预处理的思想,而dfs则是类似于白手起家,一步步探索。一般来讲,能够预处理要好些,好比战争前做好准备。dfs和dp都是十分重要的基础算法,在各个竞赛中都有涉及,务必精通。...原创 2021-02-27 15:15:43 · 3185 阅读 · 0 评论 -
【算法修炼】二分模板+常见题型总结,搞懂“二分”这一篇就够了
// 二分查找递归解法public class 二分查找 { public static void main(String[] args) { int[] arr = {3,5,5,6}; System.out.println(binarySearch(arr,0,arr.length-1,11)); System.out.println(binarySearch1(arr, 11)); // 第一个大于等于key /原创 2022-01-15 16:55:54 · 1405 阅读 · 0 评论 -
【算法修炼】two pointers技巧+常见题型(滑动窗口),搞懂双指针看这一篇就够啦。
什么是双指针?双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是排好序的,即为常见的two pointers用法。之后还会介绍两个指针速度不同的用法,属于快慢指针,常用于解决链表问题。1、两数之和Ⅱ(直接用双指针)已经排好序,利用双指针的思想,定原创 2022-01-18 15:49:13 · 789 阅读 · 0 评论 -
【算法修炼】贪心
贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。贪心从某种意义上来讲,它不是一种算法,是一种思维,真正解决问题的是贪心思维加上其它的算法(排序、手动模拟、数据结构、搜索等),下面即将开启贪心的学习,并配合几套题目的练习。分发饼干(简单)(排序+贪心)把饼干和小孩的胃口值分别升序排序,用较小尺寸的饼干去满足较小胃口值的小孩。import java.util.Arrays;class Solution { public int findCont原创 2022-01-23 17:53:39 · 961 阅读 · 0 评论