算法笔记
UESTC-涛涛
这个作者很懒,什么都没留下…
展开
-
华为机考题
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class huawei{ public static void main(String[] args) { //多叉树的层序遍历,找出所有得叶子节点,对叶子节点进行了字典序排序,这里的叶子指的的实例,或者是没有实例的类 .原创 2021-09-17 12:48:38 · 345 阅读 · 0 评论 -
AcWing快排模板
public static void main(String[] args){ int[] num={1,3,2,4,9,6,7,8}; quickSort(num,0,num.length-1);}public static void quickSort(int[] q, int l, int r) { if (l >= r) return; int x = q[l+r>>1]; //Def...原创 2021-09-01 17:29:59 · 411 阅读 · 0 评论 -
事务传播-propagation知识点
原创 2021-07-06 10:32:52 · 127 阅读 · 0 评论 -
算法题使用taken提高io速率
本文转载(3条消息) 【Java基础】StreamTokenizer使用详解_小七的博客-CSDN博客一、StreamTokenizer中的基本方法commenChar(int ch) - 指定某个字符为注释字符,此字符之后直到行结尾都被stream tokenizer忽略。eolIsSignificant(boolean flag) - 决定一个行结束符是否被当作一个基本的符号处理,如果是true,则被当作一个基本符号,不当作普通的分隔符,如果是false,则保持原义,即当作普通的分隔符。l原创 2021-07-06 10:31:56 · 178 阅读 · 1 评论 -
动态规划背包问题详解
背包问题:背包问题是动态规划非常重要的一类问题,它有很多变种,但题目千变万化都离不开我根据力扣上背包问题的题解和一些大佬的经验总结的解题模板背包定义:那么什么样的问题可以被称作为背包问题?换言之,我们拿到题目如何透过题目的不同包装形式看到里面背包问题的不变内核呢?我对背包问题定义的理解:给定一个背包容量target,再给定一个数组nums(物品),能否按一定方式选取nums中的元素得到target注意:1、背包容量target和物品nums的类型可能是数,也可能是字符串2、target可能原创 2021-05-29 15:46:09 · 904 阅读 · 0 评论 -
算法 动态规划概念及主要题型
一、 首先动态规划的题目特点二、 动态规划的解题步骤:问题就是:首先第一步确定状态其中最有一步的概念子问题就是:代码:首先看一个不是动态规划的写法,使用递归应该怎么做?但是这样递归下去存在一个问题很多的值都被算了很多遍。那么我们使用动态规划应该如何解决这个问题?继续动态规划组成部分二:转移方程动态规划解决的代码...原创 2021-04-28 17:16:41 · 108 阅读 · 0 评论 -
算法笔记 回溯算法
回溯法一般情况下,看到题目要求「所有可能的结果」,而不是「结果的个数」,我们就知道需要暴力搜索所有的可行解了,可以用「回溯法」。「回溯法」实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就「回溯」返回,尝试别的路径。回溯法是一种算法思想,而递归是一种编程方法,回溯法可以用递归来实现。回溯法的整体思路是:搜索每一条路,每次回溯是对具体的一条路径而言的。对当前搜索路径下的的未探索区域进行搜索,则可能有两种情况:当前未搜索区域满足结束条件,则保存当原创 2021-04-28 17:16:04 · 151 阅读 · 0 评论 -
leetcode算法题中主要要求手撕的三种排序算法 快速排序,归并排序,堆排序算法模板子
快速排序,归并排序,堆排序模板java代码目录1、快速排序快速排序原理:切分原理:源代码:2、归并排序归并排序原理:归并原理源代码:3、堆排序堆排序原理堆排序过程源代码1、快速排序快速排序原理:1.首先设定一个分界值,通过该分界值将数组分成左右两部分;2.将大于或等于分界值的数据放到到数组右边,小于分界值的数据放到数组的左边。此时左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值;3.然后,左边和右边...原创 2021-04-02 09:47:56 · 448 阅读 · 0 评论 -
Leetcode 栈刷题心得单调栈用法
leetcode刷题过程中取得了部分心得:在栈的专题下,主要的考察点是栈先进后出的特性,当遍历一个字符串或者一个列表的时候,可能会出现类似于字符串解码,或者是接雨水之类的问题,这时就需要从后往前出栈,只有栈才能满足这样的特性。因此当出现从后往前输出已经遍历的过的值的时候,就应该考虑使用栈这种数据结构。首先我们最应该掌握的栈的一种用法就是单调栈leetcode中的每日温度接雨水等都是典型的单调栈解题、以接雨水题为例class Solution { public int t原创 2021-03-24 15:30:06 · 176 阅读 · 0 评论 -
leetcode刷题总结-单调栈的问题
单调栈问题全部总结原创 2021-03-23 09:44:45 · 102 阅读 · 0 评论 -
数据结构 并查集
代码实现源代码原创 2021-02-25 17:27:17 · 91 阅读 · 0 评论 -
数据结构 KMP算法
1、KMP算法的用途KMP算法是用来找出a字符串中的b字符串,其中a叫做文本串,b叫做模式串KMP算法是如何在a文本串中找出b模式串的呢?如图所示:当将模式串与文本串一一进行对比时,如果出现匹配不上的情况时,模式串找到b继续搜索,那么如何能够找到b呢?2、前缀表要找到b就要先立即前缀表的概念,如下图所示:模式串除去最后一个字母,然后顺序排列就是其前缀,注意不包含尾字母。3、后缀表模式串除去首位一个字母,然后顺序排列就是其前缀,注意不包含首字母。4、求模式串的最长.原创 2021-02-25 17:26:39 · 202 阅读 · 0 评论 -
数据结构 回溯搜索算法
1、回溯搜索法能解决的问题 (1)组合问题:例如1,2,3,4中有几种长度为2的组合方式12,13,14,23,24,34。不需要顺序 (2)切割问题:讲一个字符串切割后,保证其切割的子串都是回文子串。 (3)子集问题:例如1,2,3,4中所有的子集。不需要顺序 (4)排列问题:例如1,2,3,4中几种长度为2的组合方式12,13,14,23,24,34,31,21,41,32,42,43。需要顺序。 (4)棋盘问题:n皇后问题使用循...原创 2021-01-25 17:06:05 · 463 阅读 · 0 评论 -
数据结构 深拷贝与浅拷贝
刷题的时候在做回溯算法得组合问题时,遇到浅拷贝引起的报错问题首先看问题首先下面的代码就会一次浅拷贝问题,这个问题会让result集合中元素都是随着path指向的对象变化而变化,因为result添加的就是path指向的对象,因此想要result不随着path变化,就要让result对path进行深拷贝。这段代码的结果是[[], [], [], [], [], []]而结果应该是[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]import j原创 2021-01-25 17:05:33 · 182 阅读 · 0 评论 -
mybatis mybatis使用步骤
第二步加入maven的mybatis坐标,mysql驱动的坐标(也就是导入mybatis和mysql连接器的依赖)3、创建实体类4、创建dao接口然后定义数据库操作方法具体的代码在mybatis上面去粘贴5、创建mybatis使用的配置文件sql的映射文件这个文件是一个xml文件。6、创建一个mybatis使用的配置文件在main的resource文件夹下新建一个mybatis.xml文件并将mybatis找到的xml文件内容粘到idea...原创 2021-01-25 17:03:31 · 165 阅读 · 1 评论 -
数据结构 平衡树-2-3查找树
首先先理解2-3查找树(一种平衡树)的定义2、对2-3查找树进行插入操作原创 2021-01-25 17:03:09 · 73 阅读 · 0 评论 -
数据结构 平衡树 B+树
原创 2021-01-25 17:02:46 · 120 阅读 · 0 评论 -
数据结构 平衡树 B-树
B-树的概念原创 2021-01-22 15:34:31 · 63 阅读 · 0 评论 -
数据结构 平衡树-红黑树
红黑树的定义:红黑树是因为节点之间的链接性质不同定义的2、红黑树的节点API设计3、红黑树的平衡化进行旋转的条件是:出现红色右链接或者两条连续的红链接。左旋的条件是出现右链接是红色的情况右旋的情况是出现了连续的两个左链接都是红色的情况。4、向红黑数节电插入新键5、红黑树的API设计API设计的源代码部分...原创 2021-01-22 15:33:38 · 86 阅读 · 0 评论 -
数据结构 二叉树的相关概念
1、二叉查找树(又叫二叉排序树,二叉搜索树):左子树的所有节点都小于根节点的值,右子树的所有节点都大于等于根节点的值,且左右子树也是二叉查找树。2、平衡树:3、23查找树:定义:是一个多分叉树,数据项最多是2,子节点最多是3,子节点肯定比数据项多14、红黑树:定义:它或者是一颗空树,或者是具有一下性质的二叉查找树 1):每个节点或是红的,或是黑的。 2):根节点是黑的。 3):每个叶节点(NIL)是黑的。(所有NULL结点称为叶子节点,且认为颜色为黑) 4原创 2021-01-22 15:32:32 · 86 阅读 · 1 评论 -
算法与数据结构 队列优先
最大优先队列最大优先队列是使用堆实现的,因为堆的根元素是整个堆中所有元素的最大值。 最大优先队列的代码实现基本上代码跟堆的代码是差不多的最小优先队列因此上浮的过程应该先跟相同父节点的子节点比一下,然后就是跟父节点进行比较而下沉的过程中需要跟子节点之一进行比较。...原创 2021-01-22 15:30:20 · 69 阅读 · 0 评论 -
数据结构 堆 堆的概述
1、堆的定义堆的特性包括三条1、完全二叉树2、利用数组来存储数据,一个节点在数组中的索引是k,那么父节点的位置是k/2,子节点的位置是2k或者2k+1;3、每个节点都大于它的子节点...原创 2021-01-16 09:57:23 · 135 阅读 · 0 评论 -
数据结构 堆排序
1、堆排序堆排序的对象是数组,按照堆的规则进行排序。2、实现的步骤3、代码实现原创 2021-01-16 09:53:53 · 67 阅读 · 1 评论 -
pat A1025题报错warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attrib...
错误分析:没有仔细阅读题目,导致输出的结果各个参数的顺序不对,导致pat的报错原因。收获;要熟读题目不能将计算机想象成人一样具有能自动识别的能力。错误原因 将printf("%d %d %d\n",r,stu[i].local_number,stu[i].local_rank);中的stu[i].local_number和stu[i].local_rank的位置上搞反了,改为printf("%...原创 2020-04-25 10:21:15 · 4816 阅读 · 0 评论 -
学习算法笔记中如何防止元素在对角线上的一句表达式的理解
![定义的功能函数](https://img-blog.csdnimg.cn/20200425101642476.png其中p[i]代表了是前一列里面第几行有值,p[j]代表的是后面每一列里面第几行有值,如果两列的值在一个对角线上,则必定会有这列有值的行数与另外一个列有值的行数的差值不等于两列之间的列数的差值。...原创 2020-04-25 10:18:56 · 163 阅读 · 1 评论