
蓝桥杯
文章平均质量分 51
为蓝桥杯训练
Warddamn
这个作者很懒,什么都没留下…
展开
-
Java算法学习14——BigInteger
https://zhuanlan.zhihu.com/p/289334951原创 2022-04-03 11:58:34 · 724 阅读 · 0 评论 -
Java算法学习13——最近公共祖先
一、算法思路:本节主要为最近公共祖先,算法利用的为递归的方式,总体思路就是先从根节点出发,然后判断根节点的子节点是否包含需要寻找最近公共祖先的左右节点,如果包含的话则往下一层继续寻找,具体的思路可以分成如下几步:先判断根节点是否为空,如果为空的话即返回空在判断根结点是否为左右节点的其中一个,如果是,那么这个根节点就必为最近公共祖先如果不满足1,2说明最近公共祖先在根节点的左右子树中,因此分别递归遍历根节点的左右子树Treenode left=lowestCommonAnces原创 2022-03-29 10:57:14 · 6200 阅读 · 0 评论 -
Java算法学习12——经典问题的DFS和BFS
import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;import java.util.Vector;/* * 本节主要描述的dfs和bfs的方法。 * 1.DFS * dfs其实就是在一种情况下一直搜寻直到碰壁,用递归实现dfs可以从递归边界 * 和递归体进行考虑,递归边界即碰壁情况,递归体则是选或者不选,注意可以在递归体中进行剪枝 * .原创 2022-03-27 16:35:56 · 868 阅读 · 0 评论 -
Java生成子集——补充了List.add的易错点
一、Java生成子集的总体思想与方法总体思想:在原集合的每一个元素生成子集都有两种可能:在原子集合的基础上加上这个元素 或者 在原子集合的基础上不加这个元素**方法:**本问题数据结构用可变化的List比较好点,因为每一个子集的长度是不一样的二、List的add易错点使用List的出错点:注意List里面的add,如果只是add一个对象,而不去new的话,只是对象的引用存进List这个容器,如果引用的对象改变了,那么List的相应的值也会改变。比如在(1)中,我们是直接cur.add(a[ind原创 2021-04-15 16:48:13 · 371 阅读 · 0 评论 -
Java算法补充——字符串equals与==区别和Java读入char类型的方法
一、Java读入char类型方法先创建一个Scanner对象,调用Scanner对象的next()方法获取控制台输入的字符串,返回的是一个String类型,因为没有nextChar()方法,所以调用String的charAt(0)方法获取第一个字符,这样一来,我们就输入了一个字符串。Scanner cin=new Scanner(System.in); String s=cin.nextLine(); char ans=s.charAt(0); 详情请看:https://zhidao.ba原创 2021-03-24 23:38:26 · 237 阅读 · 0 评论 -
Java算法学习11——快速幂与矩阵快速幂
一、快速幂1.介绍详情https://blog.youkuaiyun.com/qq_19782019/article/details/856213862.快速幂模板(1) 简单模板,便于理解long long fastPower(long long base, long long power) { long long result = 1; while (power > 0) { if (power % 2 == 0) { //如果指数为偶数原创 2021-03-22 23:23:05 · 904 阅读 · 0 评论 -
Java算法学习补充——模运算
一、模运算法则(a + b) % p = (a % p + b % p) % p (1)(a - b) % p = (a % p - b % p ) % p (2)(a * b) % p = (a % p * b % p) % p (3)即全部都等于每个因子取模后的乘/加/减再取模的结果原创 2021-03-22 21:38:12 · 329 阅读 · 0 评论 -
Java算法学习10——图之最短路径——补充了list易错点以及图的存储模板
一、Dijkstra算法1.算法思想该算法的思想是先分成两大阵营——已找到最短路径的顶点阵营a和还未找到最短路径的顶点阵营b。即要进行n-1次循环(n为顶点数,-1是因为不包括源点),每一次循环都要去找到距离源点距离最近的并且未标记的一个点A,然后把他加进阵营a中,并记录它到源点的距离为c;接着开始更新距离,即:去找A顶点的邻接顶点m,假设Am距离为distance,判断这个顶点m是不是属于阵营b,如果是的话,就去判断distance+c是不是小于原来这个顶点m到源点的距离,如果是的话就更新距离;反复执原创 2021-03-19 00:49:22 · 512 阅读 · 0 评论 -
Java API在线中文文档——http://itmyhome.com/java-api/index.html?overview-summary.html
http://itmyhome.com/java-api/index.html?overview-summary.html原创 2021-03-14 00:14:04 · 8170 阅读 · 0 评论 -
Jave算法学习补充——List操作的易错点
一、初始化问题一开始新建List时,如果没有add操作,那么List的Size为0二、操作问题(1)index:是下标,从0开始的(2)indexOf():如果没找到就会返回-1,否则返回下标三、易错点1.get(intdex)操作:如果原来index的位置上没有元素,则会报错。因此如果想要用get,则一开始就要给List进行初始化,在每一个位置new一个元素,然后再添加上去for(int i=0;i<=numberofvertex+1;i++){ Vertex c=new原创 2021-03-14 00:08:58 · 246 阅读 · 0 评论 -
Java算法学习9——最小生成树之Kruskal算法
一、Krusal算法简介Krusal算法其实就是以边为主,每次都选择权重最小的并且两个端点不在同一个连通分量的那条边加进生成树T中,知道T的边达到了顶点数-1之后,就暂停。所以,可以先将边按从小到大进行排序,然后再去选取每一条边,判断它的两个端点是否是同一连通分量二、Krusal算法实现步骤输入格式:第一行有两个整型数,第一个数为顶点数,第二个数为边数N,接下来就要N行,每一行有3个字符,第一个为字母就是起点,第二个字母是终点,第三个数字是权重。输出格式:输出一个整数,表示最小生成树的权重和实现步原创 2021-03-13 20:49:54 · 2942 阅读 · 0 评论 -
Java算法学习补充——eclipse设置代码自动补全
https://jingyan.baidu.com/article/5553fa82a40d9865a3393469.html原创 2021-03-13 09:36:58 · 295 阅读 · 0 评论 -
Java算法学习8——有向环及拓扑排序
一、有向环有向环的寻找其实很简单,直接在DFS的基础上修改就行,即当识别遇到marked已经为true时,就可以返回了,因为此时是有向的,然后还可以用edgeTo数组将有向环打印出来二、拓扑排序https://www.cnblogs.com/hapjin/p/5432996.html...原创 2021-03-12 13:54:44 · 1051 阅读 · 0 评论 -
Java算法学习补充——Java各种集合的理解及使用
一、Java内置的各种集合框架Java集合框架基本内容,共分为俩大部分,Collection接口和Map接口。关系如下:注意:①在图一中,没有注明接口的,都是实现类;在图二中,接口与抽象类与实现类都已经标注②这两个流程图片都没有完全的显示出Java自带的集合结构,综合了两者才是齐全的。比如图①中的Collection集合中缺少了一个Queue接口(队列)和Deque(双端队列),而这两者实现的类都是LinkedList(Queue还实现了一个优先队列的类),因此新建对象的时候,可以如下:Que原创 2021-03-12 13:40:16 · 161 阅读 · 0 评论 -
Java算法学习7——图之DFS
一、图的数据类型有3个函数必须要:①构造函数:读取数据并创建邻接数组表②addEdge函数:添加边的函数③邻接表迭代器函数public class Graph{ private final int V; private final int E; private Bag<Integer>[] adj; public Graph(int V,int E){ Scanner cin=new Scanner (System.in); this.V=V; this.E=E:原创 2021-03-11 00:05:23 · 1017 阅读 · 0 评论 -
Java算法学习补充3——取模知识
注意:当题目中,题目说结果取模时,要在计算过程中,每一步的计算都要考虑是否要取模,举个例子如果不取模的话,这个地方是否会溢出。另外:取模在外面,括号里面的任意一个元素无论取多少次模都不改变结果,可以自己举例,但是括号外一定要取模。比如 int t=(a+b)%l=(a%l+b%l)%l...原创 2021-03-09 23:34:00 · 291 阅读 · 0 评论 -
Java算法学习补充2——常见接口的使用
详情请看链接:https://www.liaoxuefeng.com/wiki/1252599548343744/1265117109276544原创 2021-03-09 22:56:05 · 117 阅读 · 0 评论 -
Java算法学习6——平衡二叉树
想利用平衡二叉树的话,可以直接用Java的Treeset/Treemap接口,具体说明可看下面的两个链接:https://www.liaoxuefeng.com/wiki/1252599548343744/1265117109276544https://blog.youkuaiyun.com/bingxuesiyang/article/details/89228785?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1原创 2021-03-09 22:53:44 · 137 阅读 · 0 评论 -
Java算法学习5——贪心法解决简单贪心与区间贪心问题
一、简单贪心当题目中让我们最优的情况时,比如效益最大,组成的数最大等等,此时我们要想到贪心算法的思想。简单来说就是先去考虑局部最优,然后由局部最优组成全局的最优。比如,当求效益最大时,要达到效益最大,说明每个单独的个体的效益最大,所以我们可以先去求单价效益最大的情况开始;组成的数最大,那么就说明,每一个位放的数要最小,这也是局部最优,最后组成的数就是最小,达到了全局最优。二、区间贪心(区间不相交问题与区间选点问题)1.区间不相交问题**(1)问题描述:**给出N个开区间,从中选择尽可能多的开区间,使原创 2021-03-08 22:53:34 · 415 阅读 · 0 评论 -
算法刷题的一些注意点:包括C++编译有效位数,位操作,不同时间复杂度能通过的数据量范围
①C++编译器最长有效位数问题整型变量int类型最多为21亿,即(20)^9,long long 最多是(90)^18②异或C++按位操作详解析https://blog.youkuaiyun.com/weixin_42837024/article/details/98736834https://blog.youkuaiyun.com/tangyanzhi1111/article/details/21696943https://blog.youkuaiyun.com/ikerpeng/article/details/44832915原创 2020-11-12 19:02:39 · 272 阅读 · 0 评论 -
Java算法学习4——分治,记忆化递归与快速幂
一、分治分治其实就是将一个大问题分解为一个个小问题,然后再将每个子问题求出结果,最后将子问题结果合并为原问题的解。分治问题常常用递归方式来解决二、递归递归一定要记住递归体与临界点,下面为递归的两个例子1.输出1…n的全排列思路:可以分解成输出1为开头的全排列,2开头的全排列,3开头的全排列……的子问题来解决,然后利用一个hashtable数组,记录这个数字是否以及存在数组P中了,如果没有的话就加入,然后hashtable变为true,最后递归结束就把hashtable变成false,下面例子为生成原创 2021-03-06 16:18:17 · 404 阅读 · 0 评论 -
Java算法学习3——二分查找和差分数组
一、二分查找Java实现二分查找代码如下:必须要是有序的数列对import java.util.*;import java.lang.*;public class Main{ public static void main(int []args){ int low=0;int high=args.length; Scanner cin=new Scanner (System.in); //数组为升序 while(low<=high){ int mid=(l原创 2021-03-03 23:30:08 · 1148 阅读 · 1 评论 -
真题练习——幸运数——利用了链表,补充了知识点
一、题目幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。首先从1开始写出自然数1,2,3,4,5,6,… 1 就是第一个幸运数。 我们从2这个数开始。把所有序号能被2整除的项删除,变为:1 _ 3 _ 5 _ 7 _ 9 …把它们缩紧,重新记序,为: 1 3 5 7 9 … 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11, 17, …此时7为第3个幸运数,然后再删去序号位置能被7整除的原创 2021-03-03 22:30:23 · 512 阅读 · 0 评论 -
Java算法学习2——优先队列和并查表
一、优先队列1.优先队列的定义优先队列分为优先最大或者优先最小,用堆实现优先队列是最高效的方式。而存储堆的最高效时间最短的为用数组存储。注意如果需要索引或者索引值与数组下标差别太大,则可以在堆数组元素存索引值。2.优先队列的用处可以迅速找出一组数据的最大或者最小的部分,不需要在对数组进行排序,因此可以适用于高数据量3.Java实现优先最大/最小队列代码如下import java.*;class MaxPQ{ private int []pq; @SuppressWarnings("unu原创 2021-03-01 22:05:38 · 209 阅读 · 0 评论 -
Java算法学习1补充——Java中实现C++的结构体、Java如何自定义sort对类进行排序、JAVA利用Scanner类实现连续输入
https://blog.youkuaiyun.com/fyp19980304/article/details/80448060原创 2021-03-01 19:18:30 · 528 阅读 · 0 评论 -
Java算法学习1——链表、数组与哈希表
一、链表与哈希表的知识点讲解1.链表(1) 链表的实现方式链表的实现方式有两种,分别为指针和数组,下面对这两部分的具体实现步骤做一个说明。- 指针实现①先要建立一个结点结构体②然后建立一个头结点③最后利用尾插法像头结点后面插入元素,注意插入时要建立一个工作指针,用来时刻指向最后一个链表元素。import java.util.*;class Node//相当于Node的结构体{ public int data;//相当于结构体 public Node next;原创 2021-02-28 17:19:08 · 333 阅读 · 2 评论