- 博客(44)
- 收藏
- 关注
原创 筛法求欧拉函数
#include <iostream>using namespace std;const int N = 1000010;typedef long long ll;int prime[N],cnt,phi[N]; //prime[N]存素数,phi[N]计算欧拉函数bool st[N]; //筛素数ll euler(int n){ phi[1]=1; for (int i = 2 ; i <= n ; i++){ if (!st[i])
2020-07-05 14:44:04 2330
原创 高精度算法(c++)
简单模拟一下小学竖式加法即可那么何为高精度呢,简单来说就是处理 long long都处理不了的数据,既然long long存不了,那我们就用字符串存啦- 。 -精髓1.我们可以用两个整型数组存字符数组的每一位,然后比较两个数组的长度,取最大的那个。存的时候一般倒着存(从低位到高位,因为整数没有除个位以下的数位,但你的最高位还可以进位,那么你就又要开一个位置来存这个新的最高位)。for (...
2020-03-24 17:11:31 773 3
原创 JS原型链
一、原型 prototype和__proto__每个对象都有一个__proto__属性指向它的prototype原型对象每个构造函数都有一个prototype原型对象prototype原型对象里的constructor指向构造器本身那么我们为啥要引入原型对象prototype这个概念呢?实际上通过构造函数创建对象时,可能有一些属性或者方法是不用修改的,比如下面这个程序function Person(name,age) { this.name = name;
2021-11-05 12:14:50 139 1
原创 ES6新语法:let和const
let1.基本用法ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。{ let a = 10; var b = 1;}a // ReferenceError: a is not defined.b // 1上面代码在代码块之中,分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。for循环的计数器,
2021-11-04 20:45:05 210
原创 JS原型对象和对象原型的区别
先抛去此文章的标题(有点晕有木有?),来看下面这段程序<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1
2021-11-04 17:06:55 1109 1
原创 LeetCode 371.两整数之和
题目描述:给你两个整数 a 和 b ,不使用 运算符 + 和 -,计算并返回两整数之和。class Solution { public int getSum(int a, int b) { if(a == 0) return b; if(b == 0) return a; int sum = a ^ b; int carry = (a & b) << 1; return getSu
2021-09-26 18:34:38 105
原创 LeetCode 583.两个字符串的删除操作(动态规划)
题目描述:给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。提示: 1.给定单词的长度不超过500500500。 2.给定单词中的字符只含有小写字母。动态规划(最长上升子序列)时间复杂度:O(n
2021-09-25 17:08:41 93
原创 LeetCode 38.外观数列(双指针)
题目描述:给定一个正整数 nnn ,输出外观数列的第 nnn 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下111211211111221第一项是数字 1描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 “11”描述前一项,这个数
2021-09-24 21:43:25 93
原创 Leetcode 24.两两交换链表中的节点
题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:提示:链表中节点的数目在范围[0,100][0,100][0,100]内0<=Node.val<=1000<=Node.val<=1000<=Node.val<=100解释:一、创建一个虚拟头节点dummy指向head二、步骤一对应的就是dummy.next = b三、步骤二对应的就是a.next = b.
2021-09-23 19:54:10 95
原创 Leetcode 19.删除链表的倒数第N个节点
题目描述给你一个链表,删除链表的倒数第 nnn 个结点,并且返回链表的头结点。算法分析:一、 创建虚拟节点dummy,dummy指向head.next二、 指针p1是快指针,p2是慢指针,首先让俩指针都指向第一个节点,p1指针先走n步,然后俩指针一起走,直到p1指针走到头,这时候p2指针就到了第L-n的位置了,也就是我们要删除位置的前一个位置三、 然后让当前位置的next指针指向下下个位置代码:/** * Definition for singly-linked list. * pu
2021-09-22 21:54:45 96
原创 Java泛型了解么?什么是类型擦除以及常用的通配符有哪些?这篇文章告诉你
导读:Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦除掉,这就是通常所说的类型擦除List<Integer> list = new ArrayList<>();list.add(111);list.add("abc"); //这里会报
2021-09-17 20:16:08 389
原创 SpringMVC简介
1、什么是MVCMVC是一种软件架构是思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为实体类Bean:专门存储业务数据,如Student、user等一类称为业务处理Bean:指Service或Dao对象,专门用于处理业务逻辑和数据访问V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据C:Controller,控制层,指工程中的servlet,作用是接受请求和响应浏
2021-09-14 22:26:12 116
原创 Spring笔记------使用AspectJ注解增强方法
使用AspectJ注解增强方法首先需要导入我们的依赖准备两个类演示我们的AspectJ如何使用被增强类增强类进行通知(增强)的配置(1)在Spring配置文件中,开启注解扫描先准备好两个命名空间aop和context然后开启注解扫描(2)使用注解创建User和UserProxy实例(3)在增强类上面添加注解Aspect(4)在Spring配置文件中开启生成代理对象配置不同类型的通知(1)在增强类的里面,在作为通知方法上面添加类型注解,使用切入点表达式配置
2021-09-07 19:08:44 364
原创 Spring笔记-------切入点表达式
切入点表达式1.作用:表示对哪个类里面的哪些方法进行增强2.语法结构:execution([权限修饰符][返回类型][类全路径][方法名称][参数列表])举例1:对com.blogcao.www.dao.UserDao类里面的add方法进行增强----->execution(* com.blogcao.www.dao.UserDao.add(. .)举例2:对com.blogcao.www.dao.UserDao类里面的所有方法进行增强----->execution(* com.
2021-09-07 17:17:12 91
原创 Spring笔记---------AOP底层原理(JDK动态代理)
一、使用JDK动态代理,用Proxy类里面的newProxyInstance方法创建出代理对象里面有3个参数:第一个参数,类加载器第二个参数,增强方法所在的类,这个类实现的接口,可支持多个接口第三个参数,实现这个接口InvocationHandler,创建代理对象,写增强的方法二、编写JDK动态代理代码(1)创建接口,定义方法(2)创建接口实现类,实现方法(3)使用Proxy类创建接口代理对象...
2021-09-06 19:53:25 105
原创 配置Web.xml
第一空 :cn.edu.hevttc.HelloServlet(写全类名类似于数据库驱动:com.mysql.jdbc.Driver)第二空:Hello和上图保持一致第三空:http://localhost:8080/Demo/HelloServletDemo是工程名,HelloServlet是我们访问的url-pattern如图...
2021-06-17 18:59:45 266 2
原创 Set和List区别、ArrayList和LinkedList区别
Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。底层原理:ArrayList底层原理是动态数组,而LinkedList底层原理是链表那么区别可从底层实现原理分析:不同点:ArrayList查找元素,修改元素比LinkedList快,而LinkedList插入和删除元素比LinkedList快。LinkedList一般比ArrayList更占内存,因为LinkedL
2021-06-16 18:57:32 752
转载 信竞卡常代码
#pragma GCC optimize(3)#pragma GCC optimize("Ofast")#pragma GCC optimize("inline")#pragma GCC optimize("-fgcse")#pragma GCC optimize("-fgcse-lm")#pragma GCC optimize("-fipa-sra")#pragma GCC optimize("-ftree-pre")#pragma GCC optimize("-ftree-vrp")#p
2021-01-10 10:19:53 164
原创 HTML标签不完全总结
标题标签< hx > < /hx > ,x为1到6总共6个标题从大到小,文字由粗到细效果演示:段落标签< p > 我是一个段落< /p >< p > 我也是一个段落 < /p >效果演示:<br / > 段落换行标签。当遇到此标签相当于按了Enter键,另起一行。效果演示:文本格式化标签效果演示:...
2021-01-08 12:06:15 164
原创 2021年寒假程序设计训练-----2021/01/03
能量项链描述在MarsMarsMars星球上,每个MarsMarsMars人都随身佩带着一串能量项链。在项链上有NNN颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是MarsMarsMars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为mmm,尾标记为rrr,后一颗能量珠的头标记为rrr,尾标记为nnn,则聚
2021-01-03 14:30:44 210
原创 2021寒假程序设计训练----2021/01/02
医院设置题目描述设有一颗二叉树如图:其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为 1。如上图中,若医院建在1 处,则距离和 =4+12+2×20+2×20=1364+12+2 \times 20+2\times20=1364+12+2×20+2×20=136;若医院建在 3 处,则距离和 =4×2+13+20+40=814×2+13+20+40=814×2+13+20+40=81。输入
2021-01-02 21:00:24 231
原创 2021年寒假程序设计训练----2021/01/01
一、珠心算测验描述珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练, 既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?最近老师出了一些测验题,请你帮忙求出答案。输入格式输入共两行,第一行包含一个整数 n,表示测试题中给出的正整数个数。第二行有 n 个正整数,每两个正整数
2021-01-02 10:57:18 231
原创 扩展欧几里得算法
题目描述给定n对正整数,对于每对数,求出一组xi,yix_i,y_ixi,yi ,使其满足aixi+biyi=gcd(ai,bi)a_ix_i+b_iy_i=gcd(a_i,b_i)aixi+biyi=gcd(ai,bi)。输入格式第一行包含整数n。接下来n行,每行包含两个整数ai,bia_i,b_iai,bi输出格式输出共n行,对于每组ai,bia_i,b_iai,bi,求出一组满足条件的xi,yix_i,y_ixi,yi,每组结果占一行。本题答案不唯一,输出任意
2020-12-28 21:51:40 126
原创 基于URL的网络下载软件
项目分析首先创建一个public 类,由于涉及到按钮响应,需要实现ActionListener接口。然后构思图形界面大致的结构,需要URL链接,文件目录,两个按钮:下载和选择文件目录。在构造器中实例化这些组件,添加组件到frame中。设置流式布局,将窗口设置可见。接下来添加按钮事件响应,两个按钮都要设置监听器,在actionPerformed方法中写if逻辑判断是哪个按钮被点击了。处理特殊情况:在没有填写URL或者选择文件目录的情况下,需要用JOptionPane.showMessageDialog
2020-12-23 14:28:30 559 3
原创 Why Learning to Code is So Damn Hard
编程大致可以分为四个阶段第一阶段(hand-holding honeymoon):手把手关怀的蜜月期。能力和信心同步增长。初学者充满了乐趣,很有成就感,能找到丰富的学习资料。第二阶段(cliff of confusion):充满迷惑的下滑期。虽然编程者的实际能力在上升,但却逐渐失去了信心。这是因为遇到了难以解决的问题,需要调试大量bug、遇到挫折。不过这个时候任能够找到答案,知识面也在变广。第三阶段(desert of despair):绝望的迷茫期,信心的沙漠。编程者遇到更加的困难的问.
2020-10-23 16:47:33 842 1
原创 并查集(非常好写的数据结构)
写在前面在学习并查集之前先了解这样一个小故事吧 在一个军营中,有很多不同的部队,一个部队中有数量不等的。但是战争总是一触即 发的。那么总司令怎么号召全员做好战队准备呢。这就得从上级一级一级往下给首长 发通知了,每个等级的首长负责通知他们的部队,这样就做到了,临危不乱。能够及 时做好战斗准备。算法用途解决集合的动态连通性问题基本操作并查集的初始化void init() { //刚开始每个点都是一个集合 for (int i = 1; i <= n; i ++ ) p[
2020-10-22 22:07:04 122
原创 Leetcode109 有序链表转换二叉搜索树
思路:把链表的节点存进vector,然后二分找中点即可。注意:合法的二叉搜索树不止一个,不一定和样例一样。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * .
2020-08-19 08:54:11 107
原创 Leetcode110 平衡二叉树
思路:首先作为一颗平衡二叉树,它的左右子树肯定也是平衡二叉树。那么我们可以递归判断左右子树是否是高度平衡的,不是直接返回false即可,如果是平衡的,再往下递归判断左右子树是否是平衡的。递归到NULL时,说明是平衡的,返回true即可如何判断是否是平衡二叉树:只要左右子树最大深度的绝对值之差不超过1,就是平衡二叉树,否则返回falseif (abs(get(root->left)-get(root->right))>1) ans = false;注意:刚开始树可能为空树,判断一.
2020-08-19 08:17:25 126
原创 最短路板子--------笔记
堆优化的Dijkstra算法Dijkstra求最短路#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <queue>using namespace std;const int N = 150010;typedef pair<int,int> PII;int h[N],idx;int d[N];i
2020-08-18 11:19:59 126
原创 笔记-----链式前向星的板子
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int N = 1e5+10;int head[N],idx;struct Edge{ int next;//当前点所指向的下一个点 int to; //边所指向的点 int val; //边的权值}edge[N];
2020-08-15 21:25:16 187
原创 高频考点之方法重载与重写的区别
1.重载(overload)定义:在一个类中,同名方法如果形参列表不同(参数类型不同、参数个数不同、参数顺序不同)就是重载。注意:重载不关心方法的返回值类型举个例子:以下静态方法都构成重载2.重写(override)定义:子类继承了父类原有的方法,但是实际开发中我们并不是原封不动得继承父类的方法,需要在子类中对父类继承来的方法进行改造。子类方法对父类方法的覆盖、覆写就叫做重写要求:子类重写的方法必须和父类被重写的方法具有相同的方法名、参数列表子类重写方法的返回值类型不能大于父类被重写方法的
2020-08-11 11:50:11 273
原创 面向对象三大特征之封装
封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员.。封装的优点外界不能自由访问,仅对外提供公开的接口,让内部的属性与方法具有安全保障使得程序实现了“高内聚,低耦合”。什么是高内聚低耦合封装性的体现方法其实也是一种封装关键字private的封装private关键字的使用...
2020-08-03 20:52:55 150
原创 DFS-深度优先搜索
DFS(深度优先搜索)什么是DFS:DFS算法是一种搜索算法,而搜索算法其实是枚举的一类,有目的的枚举一个问题的解,并不是盲目的枚举。原理:DFS是递归的一种,也可以理解为递归,没必要区分得太开,DFS算法其实是一棵递归搜索树,从根节点出发,尽可能往深处搜,直到遇到叶节点为止。叶节点搜索完了,就开始回溯到它的父节点,再开始搜索它的父节点的子节点(如果存在的话)。这里给出DFS的·一般伪代码void dfs(int u) //u是递归搜索树的层数{ if (满足条件) {
2020-07-09 13:26:59 128
原创 快速幂
int qmi(int a,int k,int p) //a^k%p{ int res = 1; while(k) { if (k&1) res = (LL)res*a%p; k>>=1; a = (LL)a*a%p; } return res;}
2020-07-05 14:46:29 106
原创 Java的跨平台特性
Java虚拟机—JVMJVM:Java虚拟机,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java最具吸引力的特性之一,我们运行的Java程序都运行在JVM上跨平台任何软件的运行,都必须运行在操作系统上,而我们用Java编写的软件可以运行在任何操作系统上,这个特性被称为Java的跨平台特性,该特性是由JVM实现的,我们编写的程序运行在JVM上,JVM运行在操作系统上。对比C/C++的执行方式C/C++通过编译器生成的是二进制机器指令,这种机器指令与平台相关,而Java
2020-06-28 10:22:14 973
原创 Java包机制
为了更好的组织类:java提供了包机制,用于区别类名的命名空间语法格式:package pkg1[.pak2[.pak3…]] ;一般用公司域名倒置作为包名例如 :com.hevttccao.www为了能够使用某个包的成员,我们需要在java程序中导入该包,使用" import’’ 语句可完成该功能import package1[.package2...].(classname|*)...
2020-06-24 09:07:26 135
原创 栈应用 : 中缀表达式转后缀表达式求值
中缀表达式(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。与前缀表达式(例:+ 3 4)或后缀表达式(例:3 4 +)相比,中缀表达式不容易被计算机解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。确实,中缀表达式很符合人类的思想,但是让计算机理解起来却不那么容易,这里我们引进了后缀表达式后缀表达式(也成为逆波兰表达式)一个表达式E的后缀形式可以如下定义:(1)如果E是一个变量或常量,则E的后缀
2020-06-18 20:34:48 696
原创 扫雷
小项目—扫雷#include <iostream>#include <stdlib.h>#include <time.h>#include <cstdio>/*第一次尝试做小游戏hhh*/using namespace std;const int row = 10; //地图的行数const int col = 10; //地图的列数const int num = 10; //地雷数char map[12
2020-05-27 11:55:18 218
原创 数组模拟单链表
题目链接 Acwing 826单链表#include <bits/stdc++.h>using namespace std;const int N = 1e5+10;//head表示头结点的下标,e[i]表示节点i的值,ne[i]表示节点i的下一个的位置,index表示正在用哪个点int e[N] , ne[N] , head , idx; //初始化void init(){ head = -1; //head指向空节点 idx = 0;
2020-05-14 15:49:15 167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人