自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 二叉树的后续遍历(迭代法)

迭代法实现二叉树的后续遍历1、递归版本public static void dfs(TreeNode root){ if(root==null){ return; } if(root.left!=null) dfs(root.left); if(root.right!=null) dfs(root.right); System.out.println(root.val);}从递归版本可以看出我们第一步需要遍历完所有的左节点这里

2023-10-28 15:46:52 1920 1

原创 计算汉明重量

计算汉明重量

2022-06-13 17:16:38 295 1

原创 linux-1.2.13内核网络栈实现源代码分析.pdf

https://pan.baidu.com/s/1wqog0_zIqw2MGGZryPJ4EA 提取码:17u

2022-05-15 11:54:16 494

原创 最长递增子序列

最长递增子序列。动态规划。nums[i]思路:用一个数组f[i]存放nums[i]之前最长的递增序列。 public int lengthOfLIS(int[] nums) { int max = 0; int[] f = new int[nums.length]; //初始化为1的目的是因为,每个数字本身长度就为一 Arrays.fill(f,1); for(int i=0;i<nums.length;i

2021-11-09 17:07:46 123

原创 有关Arrary.sort

有关Arrary.sortpublic static <T> void sort(T[] a, Comparator<? super T> c) {//在这里可以看出当比较器为空时,默认排序的方案 if (c == null) { sort(a); } else { if (LegacyMergeSort.userRequested) legacyMergeSort(a

2021-11-09 17:06:51 141

原创 关于集合中是否可以存null值的分析

关于集合中是否可以存null值的分析主要针对ArrayList 可以LinkedList 可以HashMap key、value 都可以为nullHashSet value可以为nullTreeMap 与是否传入比较器有关TreeSet 与是否传入比较器有关解释ArrayList 底层是通过Object[]实现的,对象数组初始化默认值就是null,所以对象数组是可以存null值的public class Array

2021-11-09 17:02:16 1216

原创 枚举类。。。

枚举类enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}实际上MONDAY....都是一个Day对象并存储在Day[]数组中,通过values返回的是克隆对象。枚举类在编译后也是一个类类型。final class Day extends Enum{ //编译器为我们添加的静态的values()方法 public static Day[] values() {

2021-11-01 22:01:13 124

原创 关于HashMap中的位运算

关于HashMap中的位运算为什么HashMap的数组大小一定是2的倍数?主要有两点1、当n为2的整数次幂,hash%n等价(n-1)&hash这个公式怎么来的呢?举个10进制的例子!115%10 = 5;由于10是十进制的整数次幂1 1 5   1 0——————      5 (将第二个1之前数都可以整除10(因为10是10的整数幂),所以只剩下5)100110

2021-11-01 17:16:02 170

原创 ReferenceQueue理解

ReferenceQueue理解在检测到适当的可达性更改后,垃圾收集器会将注册的引用对象附加到该队列中。这句话什么意思呢?ReferenceQueue<byte[]> queue = new ReferenceQueue<>();byte[] key = new byte[1024*10];WeakReference<byte[]> reference = new WeakReference<>(key,queue);//当出现垃圾回收之后

2021-10-31 18:35:25 479

原创 morris traversal -遍历二叉树

morris traversal -遍历二叉树如何在不使用额外空间的情况下遍历一颗二叉树?(不能使用递归)1、要使用O(1)空间进行遍历,最大的难点在于,遍历到子节点的时候怎样重新返回到父节点(假设节点中没有指向父节点的p指针)。我们可以使用叶子节点的两个为null的指针指向它的后继节点。以中序的遍历方式说明!pre.right含义是指向pre节点的后继节点public List<Integer> inorderTraversal(TreeNode root) { List&

2021-10-26 16:07:02 109

原创 关于共享锁中doReleaseShared()理解

关于共享锁中doReleaseShared()理解public final boolean releaseShared(int arg) { //同一时刻只允许一个线程进入doReleaseShared()方法 if (tryReleaseShared(arg)) { doReleaseShared(); return true; } return false;}理想情况下唤醒这个节点后面所有的线程。private void doReleaseS

2021-10-21 19:19:19 845

原创 线段树学习记录

线段树假设对于一个数组,给定两点求出两点之间的元素和。int[] nums = new int[]{1,3,5,7,9,11};举例、求[0,3]结果等于 1+3+5+7 = 16求和时间复杂度是O(R-L) 修改一个元素的时间复杂度O(1)[L,R]为查询的边界采用前缀和的方法可以用O(1)的时间复杂度求和,但修改时间复杂度为O(length-index+1)length为数组长度,index为修改元素的下标举例、求[0,3]int[] nums = new i

2021-10-20 20:04:44 67

原创 二分查找最左边与最右边的值

查找最左边与最右边的值举个例子nums = [5,7,7,8,8,10], target = 8[3,4]3是第一个8出现的下标4是最后一个8出现的下标找最左边出现的值while(l<r){ int mid = (l+r)>>1; if(target>nums[mid]){ //当target大于mid时,说明查找值必然在[mid+1,r]这个区间 l = mid+1; }else if(target=

2021-09-16 14:03:58 653

原创 getWriter() has already been called for this response

根本原因是对于同一个response,不能同时创建PrintWriter writer = resp.getWriter(); 与ServletOutputStream outputStream = resp.getOutputStream();源码中可以看到原因public ServletOutputStream getOutputStream() throws IOException { if (this.usingWriter) { //对于同一个response不

2021-07-11 14:52:18 158

原创 狂神说笔记

复制这段内容后打开百度网盘APP,操作更方便哦。链接: https://pan.baidu.com/s/1uhs4bjg7Ipbbd3YF-F-vwQ 提取码:zmq9

2021-07-10 21:31:00 98

原创 关于KMP算法

关于KMP算法的详解//传统方式void find(char t[],char p[]){ int m = strlen(t); int n = strlen(p); int i,j,k;//k:匹配串下标,j:模式串下标 for(k=0;k<m;k++){ j = 0; //每次从0开始 i = k; while(j<n){ if(p[j]==t[i]){

2021-06-24 12:49:26 62

原创 关于linux Command not find

linux Command not find首先原因:是在我配置完java项目之后出现问题的。JAVA_HOME=/usr/java/jdk1.8.0_221-amd64CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/libPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin配置后发现java命令可以使用,而系统命令只有cd可以使用解决方案第一步:cd /usr/bin第二步:./sudo su然后就能使用vim命令了第三步

2021-06-16 21:03:21 223

原创 Mybatis源码解析

Mybatis源码解析首先是Mybatis的基本使用步骤public class StudentMapperTest { private static SqlSessionFactory sqlSessionFactory; @BeforeClass public static void init() { try { Reader reader = Resources.getResourceAsReader("mybatis-config

2021-06-06 12:44:47 220

原创 有关查找字符串中最长不重复子串

有关查找字符串中最长不重复子串1.List的contains(obj)方法实际上,List调用contains(Object obj)方法时,会遍历List中的每一个元素,然后再调用每个元素的equals()方法去跟contains()方法中的参数进行比较,如果有一个元素的equals()方法返回true则contains()方法返回true,否则所有equals()方法都不返回true,则ontains()方法则返回false。因此,重写了Course类的equals()方法,否则,testListC

2021-03-27 16:10:26 311

原创 2021-03-26

深度优先遍历常用步骤如下排列问题使用一个q[]数组保存排列的方案bool st[] 用来判断这种方案是否合法。1、dfs(int u) u代表搜索的第几位。2、if() 结束判断的条件3、枚举所有可能的情况,一般是使用for循环for(int i=1;i<=3;i++)if(st[i]) continuest[i] = true;4、如果合法则需要将其标记访问过防止重复访问,调用递归dfs(u+1)5、恢复现场,恢复调用递归之前的条件即将访问st[i]=false;地图搜索

2021-03-26 19:14:43 77

原创 欧拉线性筛素数

素数打表任何合数都可以由素数相乘得到,所以我们就是要将合数筛选掉。但某些数可能会被多次筛选所以我们就要使用最小的素数对其进行筛选。以保证只会被最小素数筛选一遍。保存素数表是递增的。int main(){ for(int i=2;i<=N;i++){ if(visted[i]==0){//初始全部为0,就是通过visted数组进行素数筛选 num[cnt++]=i; } for(int j=0;j<cnt&&i*num[j]<N;j++){ v

2021-03-26 16:29:15 46

原创 快速幂。。。

快速幂主要思想:通过将指数化为二进制的形式,每一次将指数部分缩小一半,让底数相乘,这样相乘的次数就会每次缩小一般。当二进制数的位数为0时不用相乘,可以跳过,因为任何数的0次幂都是1,每次将底数开平方。# include<stdio.h>int a,b,p;int quick_mi(int a,int b,int p){ int ans = 1; while(b){ if(b&1){ ans = ans*b%p; } b<<=1; b =

2021-03-26 09:49:08 44

原创 快速排序。

快速排序void quick_sort(int l,int r){ if(l>=r) return; int mid = num[(l+r)>>1],i=l-1,j=r+1; while(i<j){ do i++;while(num[i]<mid); do j--;while(num[j]>mid); if(i<j){ temp = num[i]; num[i] = num[j]; num[j] = temp; } }

2021-03-25 20:47:18 49

原创 查找字符串

查找字符串输入给定字符集合,输入字符看字符串是否存在集合中思路:通过一个二维数组将字符串存入这个数组中,每一行数组存一个字符,并使用一个view标记末端字符。# include<stdio.h>const int N=1e5+5;int p[N][27],view[N],cnt=1;p数组存放字符串 view标记字符串的结束位置, cnt控制换行char s[N]; 输入字符串void add(char *s){ int j=0; for(int i=0;s[i

2021-03-25 19:22:24 58

原创 L1-027 出租 (20 分)

L1-027 出租 (20 分)其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对应 arr[0]=8,index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100。本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。输入格式:输入在一行中给出一个由11位数字组成的手机号码。输出格式:为输入的号码生成代码的前两行,其

2021-03-19 15:40:25 114

原创 如何理解依赖注入目标是提升组件的重用性。

如何理解依赖注入目标是提升组件的重用性。首先,依赖注入机制可以在运行期间为组件配置所需资源,而无需在编写组件代码时就加以指定。将原本通过代码为程序提供依赖交给了IOC容器来进行管理。传统与依赖注入在属性赋值时的区别传统:public interface PersonDao { public void add();} public class PersonDaoBean implements PersonDao { public void add(){ Syst

2021-03-17 11:57:06 137

原创 校园导航系统

校园管理系统# include<stdio.h># include<stdlib.h># include<string.h># include<math.h> # define INF 32767# define MAX 14static char N[MAX][50]={"教学主楼","田径场","足球场","综合楼","实训中心","科技大厦","信息大厅","沁芳园","小区","新食堂","澡堂","宿舍","实验楼","篮球场"};

2020-12-16 15:11:23 208

原创 线程抢CUP的资源可以发生在run()方法的任何地方

线程抢CUP的资源可以发生在run()方法的任何地方用一个小代码来证明public class ThreadDemo {public static void main(String[] args) { // TODO Auto-generated method stub resource r = new resource(); Output o = new Output(r); Input i = new Input(r); Thread t = new Thread(i); Thre

2020-11-11 14:02:18 124

原创 标题C语言 7-120 兔子繁殖问题 (10分)

标题C语言 7-120 兔子繁殖问题 (10分)已知有一对兔子,每个月可以生一对兔子,而小兔子一个月后又可以生一对小兔子(比如:2月份出生的小兔子4月份可以生育)。也就是说,兔子的对数为:第一个月1对,第二个月2对,第三个月3对,第四个月5对…假设兔子的生育期为两年,且不死。那么问题来了,你能说出每个月的兔子数么?标题输入格式:输入一个数n,表示第n个月,1<=n<=24。标题输出格式:输出这个月兔子的数目。标题输入样例:4标题输出样例:5# include<stdio

2020-06-18 19:05:33 331

原创 标题C语言 7-114 谁先倒 (15分)

标题C语言 7-114 谁先倒 (15分)划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。标题输入格式:输入第一行先后给出甲、乙两人的酒量(不超过100的非负整数),以空格分隔。下一行给出一个正整数N(≤100),随后N行,每行给出一轮划

2020-06-18 11:58:03 171

原创 单词长度。

标题 7-113 单词长度 (15分)你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it’s算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。标题输入格式:输入在一行中给出一行文本,以.结束提示:用scanf("%c",…);来读入一个字符,直到读到.为止。标题输出格式:在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。标题输入样例:It’s great

2020-06-18 10:24:40 130 1

原创 2020-06-03

标题6-3 奇数值结点链表 (20分)本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下:struct ListNode {int data;ListNode *next;};标题函数接口定义:struct ListNode *readlist();struct ListNode *getodd( struct ListNode **L );函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输

2020-06-03 17:45:33 384

原创 正整数A+B

标题7-57 正整数A+B (15分)题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。标题输入格式:输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。标题输出格式:如果输入的确是两个正整数,则按格式A + B = 和输出。如果某

2020-06-01 21:41:43 129

原创 2020-06-01

标题7-55 求一批整数中出现最多的个位数字 (20分)给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。标题输入格式:输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。标题输出格式:在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有

2020-06-01 16:49:16 137

原创 2020-05-31

标题7-46 找出不是两个数组共有的元素 (20分)给定两个整型数组,本题要求找出不是两者共有的元素。标题输入格式:输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。标题输出格式:在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。标题输入样例:10 3 -5 2 8 0 3 5 -15 9 10011 6 4 8 2 6 -5 9 0 100 8 1

2020-05-31 13:57:50 422

原创 标题7-45 素数对猜想 (20分)

标题7-45 素数对猜想 (20分)让我们定义dn为:d​n​​ =p(n+1)​ −pn​​ ,其中p​i​​ 是第i个素数。显然有d​1=1,且对于n>1有dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<1​0的5次方),请计算不超过N的满足猜想的素数对的个数。标题输入格式:输入在一行给出正整数N。标题输出格式:在一行中输出不超过N的满足猜想的素数对的个数。标题输入样例:20标题输出样例:4# include<stdio.

2020-05-31 12:22:49 105 1

原创 2020-05-31

7-44 出生年(15分)以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。标题输入格式:输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。标题输出格式:根据输入,输

2020-05-31 11:13:25 197

原创 7-34 猴子选大王

标题7-34 猴子选大王 (20分)一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?标题输入格式:输入在一行中给一个正整数N(≤1000)。标题输出格式:在一行中输出当选猴王的编号。标题输入样例:11标题输出样例:7# include<stdio.h>voi

2020-05-27 15:13:41 172

原创 标题7-29 统计一行文本的单词个数 (15分)

标题7-29 统计一行文本的单词个数 (15分)本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。标题输入格式:输入给出一行字符。标题输出格式:在一行中输出单词个数。标题输入样例:Let’s go to room 209.标题输出样例:5# include<stdio.h>int main(){ char a[10000]; gets(a); int n=0; for(int i=0;a[i];

2020-05-26 17:41:28 494

原创 7-83 币值转换

7-83 币值转换 (20分)输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。输入格式:输入在一行中给出一个不超过9位的非负整数。输出格式...

2020-04-05 13:09:40 1671 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除