![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 69
sklit88
hello world
展开
-
最小生成树
prim,kruskal原创 2022-08-05 15:27:46 · 106 阅读 · 0 评论 -
java算法题常用工具模板
目录标题输入与输出1.Scanner2.BufferReader数组初始化初始化一维数组初始化二维数组字符型的0-9数字转为int型数字:字符数组转字符串:数组拷贝数组与List互相转换数组转ListList转数组排序对List排序常用容器操作(对比C++ STL)1.vector 和 ArrayList2.pair 和 Pair3.string 和 String4.queue, stack, deque 和 Deque5.priority_queue 和 PriorityQueue6.unordered_原创 2022-02-17 17:05:13 · 503 阅读 · 0 评论 -
动态规划_背包问题
文章目录01背包完全背包问题多重背包问题分组背包问题01背包题目介绍:有 N 件物品和一个容量为 V 的背包,每件物品有各自的价值W且只能被选择一次,要求在有限的背包容量下,装入的物品总价值最大。「0-1 背包」是较为简单的动态规划问题,也是其余背包问题的基础。.动态规划是不断决策求最优解的过程,「0-1 背包」即是不断对第 ii 个物品的做出决策,「0-1」正好代表不选与选两种决定。二维朴素版题解代码:(1)状态f[i][j]定义:前 i 个物品,背包容量 j 下的最优解(最大价值原创 2021-12-01 12:11:31 · 1576 阅读 · 0 评论 -
最短路问题模板
文章目录1,朴素Dijkstra算法2,堆优化版Dijkstra算法3,Bellman-Ford算法4,SPFA算法5,Floyd算法常见的最短路问题稠密图用邻接矩阵存,稀疏图用邻接表存储。稠密图: m 和 n2 一个级别稀疏图: m 和 n 一个级别五中最短路算法的直观比较:1,朴素Dijkstra算法朴素板的Dijkstra算法适用于仅有正权边的稠密图当中;#include<iostream>#include<cstring>using nam原创 2021-11-15 19:08:53 · 827 阅读 · 0 评论 -
算法基础之双指针
双指针模板双指针主要分为:快慢指针:主要是成环问题左右指针:数组和字符串问题滑动窗口:主要是子串问题双指针是一个非常常用的算法,核心思路是优化朴素算法或者暴力算法,几乎都可以优化到o(n)的时间复杂度。我们一般定义i,j两个作为指针,根据题意来处理i,j。大部分题目都使用以下模板:for(int i=0,j=0;i<n;i++{ while(j<i&&check(i,j)) j++; //根据题意逻辑处理代码}check(i,j)是根据题意定义:当i和原创 2021-11-01 20:28:57 · 88 阅读 · 0 评论 -
二分查找整数与浮点模板
1,整数二分题目二分查找虽然是一个非常简单的算法,但是其中还是包含很多坑,如果写之前不考虑好想要查找的是什么,很有可能出现死循环或者查找错误,二分查找的元素要求要是有序性或者有序性的性质。对本题而言,一个包含重复元素的有序序列,要求输出某元素出现的起始位置和终止位置,翻译一下就是:在数组中查找某元素,找不到就输出-1,找到了就输出不小于该元素的最小位置和不大于该元素的最大位置。所以,需要写两个二分,一个需要找到>=x的第一个数,另一个需要找到<=x的最后一个数。查找不小于x的第一个位置原创 2021-10-26 18:00:46 · 88 阅读 · 0 评论 -
快速排序归并排序模板
快速排序&归并排序快排和归并都属于分治算法,分治算法都有以下三个步骤:-1.分成子问题-2.递归处理子问题-3.子问题合并快速排序和归并排序的主要不同:快排先处理数组后递归两边,归并先递归两边后处理数组快排的分界点是随机的一个元素值,归并的分界点是数组中间点的下标归并排序更稳定1.快速排序算法时间复杂度(n logn)①确定分界点:q[l],q[r],q[(l+r)/2];此分界点是数组中的随机一个元素值②调整区间: 一般是大于x的在右边,小于x的在左边(x原创 2021-10-26 16:28:35 · 149 阅读 · 0 评论