
算法总结
学习算法过程中的一些经典题目,及详细解答
weixin_45773632
这个作者很懒,什么都没留下…
展开
-
双指针相关题目
文章目录LC581LC581方法一:public int findUnsortedSubarray(int[] nums) { int n = nums.length; int[] arr = nums.clone(); Arrays.sort(arr); int i = 0, j = n - 1; while (i <= j && nums[i] == arr[i]) i++; wh原创 2021-10-31 14:04:26 · 67 阅读 · 0 评论 -
二叉树遍历方式集合
文章目录LC617 合并二叉树LC617 合并二叉树public TreeNode mergeTrees(TreeNode root1, TreeNode root2) { // root1为空的话,返回root2,如果root2本来也为空,则不影响结果 if (root1==null) return root2; if (root2==null) return root1; if (r原创 2021-10-31 13:53:53 · 58 阅读 · 0 评论 -
链表相关题目
文章目录1. 合并有序链表 (【2022】游卡校招技术岗笔试 第三题)1. 合并有序链表 (【2022】游卡校招技术岗笔试 第三题)将两个降序链表合并为一个新的 降序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。解法一:设置一个头结点。。public ListNode MergeTwoLists1 (ListNode list1, ListNode list2) { ListNode head = new ListNode(0),tail = head;原创 2021-10-11 11:51:55 · 68 阅读 · 0 评论 -
数据结构与算法 图论(三)最小生成树
Kruskal算法对边排序,选出n-1条路径最短的边。即得到一个最小生成树。在选边过程中,需要判断,两点是否已经连通。可以使用dfs或bfs但是效率很低,这里使用并查集来判断图中的两点是否已经连通.。import java.util.Scanner;public class zuixiaoshengchengshu { static class edge{ int u; int v; int w; } static edge原创 2021-04-07 17:08:53 · 147 阅读 · 1 评论 -
算法与数据结构 图论(二)割点与割边
割点集合在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。(一般是有多个顶点组成)割边集合在一个无向连通图中,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。(一般有多个边组成)点连通度一个图的点连通度的定义为,最小割点集合中的顶点数边连通度一个图的边连通度的定义为,最小割边集合中的边数。双连通图如果一个无向连通图的点/边连通度大于1,则称该图是点/边双连通的(bic原创 2021-04-07 17:08:40 · 1119 阅读 · 0 评论 -
算法与数据结构 图论(一)二分图
二分图的概念二分图是图中的一种特殊模型,如果图的顶点v可以分割成两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则该图G成为一个二分图。二分图如下本文通过一个问题来引出二分图的最大匹配算法 。以素数伴侣的题目为例:若两个正整数的和为素数,则这两个数称为素数伴侣,设计程序从已有的N个正整数中挑出若干个对数组成素数伴侣,问最多能挑多少对?分析:偶数除了2以外都不为素数,而两个偶数之和与两个奇数之和都为偶数。则仅有奇原创 2021-04-07 17:08:27 · 309 阅读 · 0 评论 -
博弈论
文章目录1.蓝桥杯1.1取球博弈1.蓝桥杯1.1取球博弈2016届蓝桥杯JavaB组省赛题目:第9题private static int[] n; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = new int[3]; for (int i = 0; i < 3; i++) { n[i] = sc原创 2021-04-07 17:07:26 · 58 阅读 · 0 评论 -
压缩算法
文章目录1.蓝桥杯1.1压缩变换解法1(使用HashMap和HashSet)解法2(使用线段树)1.蓝桥杯1.1压缩变换解法1(使用HashMap和HashSet)2016年蓝桥杯javaB组省赛public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int [] a = new int[n]; /原创 2021-04-07 17:07:04 · 104 阅读 · 0 评论 -
枚举
文章目录1.蓝桥杯1.1 四平方和解法一解法2枚举的效率在处理某些特定的问题还是比较高的1.蓝桥杯1.1 四平方和解法一2016年蓝桥杯javaB组省赛题目来源:第8题public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int flag = 1; for (int i = 0;原创 2021-04-07 17:06:39 · 54 阅读 · 0 评论 -
背包算法模板
文章目录原创 2021-04-07 17:06:00 · 99 阅读 · 0 评论 -
动态规划算法
文章目录1.经典题目1.1最大公共子串1.2最长公共子序列(不要求连续)1.经典题目1.1最大公共子串public static void main(String[] args){ int n = f("abcdkkk", "baabcdadabc"); System.out.println(n); } static int f(String s1, String s2) { char[] c1 = s1.toCharArray原创 2021-04-07 17:05:16 · 58 阅读 · 0 评论