09 2020 档案
摘要:Python简介 Python是一个具有解释性,编译性,互动性和面向对象的脚本语言。 python是解释性语言,python的执行实际是由python解释器执行的,因此我们要想运行python程序首先需要安装python解释器。 python是交互式语言,这意味着可以在python提示符>>后直接执
阅读全文
摘要:图的表示方式可以有很多种,我们在平常使用的时候最常使用的有两种,一个是邻接矩阵法,另一个是邻接表法,下面着重介绍这两个方法。 邻接矩阵法 邻接矩阵法是采用一个N*N的矩阵G来存储图中边的情况,其中N的数目为图中结点的数目。 具体的标记方法是若图中结点i和结点j之间有边则G[i][j]的值为1,否则为
阅读全文
摘要:判断一个字符是否是数字字符 Character.isDigit(char c) 是则返回true,不是则返回false; 判断一个字符时候是字母 Character.isLowerCase(char c) || Character.isUpperCase(char c) LowerCase是小写,U
阅读全文
摘要:动态规划是一个很好用的算法,同时也是令很多人头疼的算法,下面就介绍一下对动态规划的看法。 通过学习和刷题我们可以发现动态规划一般是用于求一些最值问题,比如说最长递增子序列等等,我们要想知道一个问题的最值,就要知道问题的所有答案然后通过比较得出答案,也就说我们平常所说的穷举;当然肯定不是暴力的穷举,对
阅读全文
摘要:基本内容 并查集算法主要是解决图论中的动态连通性问题,下面首先介绍一下什么叫做动态连通性。 这里的连通是等价的,主要有下面几个性质: 自反性,结点和自身相连通; 对称性,结点p结点q连通,那么结点q和结点p连通; 传递性,结点p和结点q连通,结点q和结点r连通,那么结点p和结点r连通; 各个连通我们
阅读全文
摘要:给定一个包含 n 个节点的有向图 G,我们给出它的节点编号的一种排列,如果满足:对于图 G 中的任意一条有向边 (u, v)(u,v),u 在排列中都出现在 v 的前面。那么称该排列是图G的拓扑排序。 因此求拓扑排序就涉及到图的遍历问题,我们一般采用深度优先搜索的策略,具体的思路如下: 对于图中的每
阅读全文
摘要:滑动窗口是双指针的一种应用,形象点说就是维护一个窗口,在窗口滑动的过程中进行窗口内数据的更新,并判断是否符合答案。、 初始时两个指针均指向开头,然后右指针依次向右滑动,在滑动的过程中需要收缩的时候进行左指针的移动,当右指针移出的时候结束循环即可。 之前在学习的时候看到别人总结了一个滑动窗口算法的框架
阅读全文
摘要:大家都喜欢将双指针分为两类,一类是快慢指针,另一类是左右指针; 其中,快慢指针主要解决一些和链表相关的问题,左右指针主要解决一些数组和字符串的问题,比如二分查找这样的。 快慢指针 快慢指针在使用的时候一般都是初始化指向链表的头部,之所以有快有慢是因为后面在更新的时候跨度不一样; 快慢指针可以用来判断
阅读全文
摘要:二分查找也是属于双指针应用的一种体现; 二分查找在使用的时候,数据往往是有序的,并且一般是数组;因此一般两个指针一个是从左边开始,另一个是从右边开始; 二分查找在使用的时候一般是有大体的框架的,比如在一个数组中查找一个数的写法如下: public int fun(int []num, int tar
阅读全文
摘要:二叉树的定义是每个结点最多只能有两个子节点; 对于一些二叉树的问题常常用到的编程思想就是递归; 二叉树重要的就是遍历问题,主要有前序遍历,中序遍历,后序遍历和层序遍历,各种遍历方法的命名是看当前结点的访问顺序; 在遍历的过程中,可能遇到合适的答案就要返回,合理的利用return语句可以达到剪枝的效果
阅读全文