自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 B树与B+树

一、B树1.B树的优点B树是一种特殊的平衡树,他相比于平衡二叉树来说一个节点能容纳的元素更多,树的高度更低,搜索次数更少。再一次磁盘访问中能读取到的元素就更多,减少了IO访问次数,提升了数据读写的效率。2.B树特性1.所有叶子节点都在都在同一层2.根节点元素数量:1<=n<=阶数-1,非根节点元素个数 :阶数除二(整除)<=n<=阶数-13.除了根节点可能没有子节点这种特殊情况外,每个节点的子节点数量为当前节点元素个数+14.每个节点中的元素按一定顺序排列,同时这

2021-07-02 16:29:07 183

原创 LeetCode-回溯

1. 77. 组合每次选择一个数,然后下一个数从他之后选择剪枝:当剩余元素加一起也不满足k时也不再遍历1.已经选择元素个数:path.size()2.还需要选择元素个数k - path.size()3.n=4,k=4,还需要四个元素,最多从倒数第4个元素选,倒数第四个元素为n - 3比n - 还需要的元素个数(4),大1,所以要加1即索引最多遍历结果为n - (k - path.size()) + 1class Solution {private: vector<int&g

2021-02-28 22:31:55 185

原创 LeetCode-栈与队列

1. 225. 用队列实现栈用一个队列就可以实现栈取元素时要把队列尾元素取出(最后进入队列的元素)把前n-1个元素放到队列尾并弹出,这样队列的头部就是最后进入队列的元素了,取出他即可class MyStack {private: queue<int> que;public: MyStack() { } void push(int x) { que.push(x); } int pop() { int n

2021-02-09 18:02:44 131

原创 Linux编程

一、GCC和库1.gcc指令1.在 gcc 命令加上-E 参数,可以得到预处理文件。展开头文件-o表示新文件名称gcc -E hello.c -o hello.i2.编译,变为汇编文件gcc -S hello.i3.汇编,得到机器码gcc -c hello.s4.链接gcc hello.o -o hello2.静态库1.创建静态库//先编译成可重定位目标文件gcc -c add.c -o add.ogcc -c sub.c -o sub.o//利用ar工具创

2021-01-28 16:12:34 133

原创 Linux基础

1. 文件

2021-01-24 10:30:09 162 1

原创 LeetCode-图

1. 997. 找到小镇的法官将每个人视为点的话,法官是那个入度为n-1,出度为0的人为节省空间,可用一个数组记录,投票–,被投票++,只有法官最后结果为n-1,找不到返回-1int findJudge(int N, vector<vector<int>>& trust) { vector<int> in(N+1,0); for(auto vec:trust){ in[vec[0]]--;

2021-01-19 22:38:32 88

原创 LeetCode-并查集

1. 547. 省份数量经典题目,找无关联点集的数量merge并,find查,add添加节点,主要就是三个函数class unionFind{public: unordered_map<int,int> fathers; int sum=0; void add(int x){ //添加节点 if(!fathers.count(x)){ fathers[x]=x; sum++; }

2021-01-18 22:47:48 134 1

原创

1. 类与头文件class Graph { vector<int> citys; //城市 unordered_map <int, int> cityIndex; //城市与其对应的索引 vector<vector<int>> graph; //图public: //参数为城市,和城市之间的连接情况 void initGraph(vector<int> &citys, vector<vector<int>&g

2021-01-15 22:37:06 70

原创 LeetCode-二叉树

1. 剑指 Offer 55 - I. 二叉树的深度每个节点的深度为左右孩子最大深度+1递归从下到上,出口为空节点深度为0int maxDepth(TreeNode* root) { if(root==NULL){ return 0; } int maxl=maxDepth(root->left); int maxr=maxDepth(root->right); return maxl&

2021-01-14 23:12:24 248

原创 二叉树

1. 二叉树结构体struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) :val(x), left(NULL), right(NULL) {}};class BTREE { //含根节点的二叉树类private: TreeNode* root;public: TreeNode* getRoot();};2. 创建二叉查找树void BTREE::buildTree(vector&

2021-01-12 16:16:48 108

原创 LeetCode-位运算

1. 题号268. 丢失的数字让所有数组元素与0-n整数做异或,只有丢失数字出现奇数次,结果就为丢失数字sum初值不一定非要为0,此处为n方便遍历也可以求0到n和,减去当前数组和int missingNumber(vector<int>& nums) { int missing = nums.size(); for (int i = 0; i < nums.size(); i++) { missing ^= i ^ n

2021-01-10 23:20:54 338

原创 LeetCode-贪心算法

1. 题号860. 柠檬水找零本题贪心之处在于面对20块钱优先找10快钱付这个代码真简洁,只要进行每次的找零操作,把判断放在了最后,只要5块钱个数小于零(说明不够用了)返回false,没有那么多冗余代码bool lemonadeChange(vector<int>& bills) { int n=bills.size(),count5=0,count10=0; for(int m:bills){ if(m==5){

2021-01-07 22:40:56 179

原创 LeetCode-数学

1. 题号204. 计数质数厄拉多塞筛法,创建n大小的数组,1为质数,2非质数,找到一个质数后,把每一个质数的倍数都标记为0,直接让j=i*i是因为,这个范围内的数都被他之前的质数标记过了如3直接从9开始遍历,6已经被2标记过了int countPrimes(int n) { vector<int> flag(n,1); int ans=0; for(int i=2;i<n;i++){ if(flag[i]){

2021-01-06 22:50:38 64

原创 LeetCode-哈希表

1.题号217. 存在重复元素遍历,放入散列集中,如果散列集中已经存在,返回truebool containsDuplicate(vector<int>& nums) { unordered_set<int> s; for(int i:nums){ if(s.find(i)!=s.end()){ return true; } s.inse

2021-01-06 22:50:12 144

原创 LeetCode-数组

1.题号628. 三个数的最大乘积最大三数之积为,三个最大值相乘,或最小两个负数与最大正数相乘的最大值可以只遍历一次,记录下这五个数,达到O(N)时间复杂度int maximumProduct(vector<int>& nums) { int max1=INT_MIN,max2=INT_MIN,max3=INT_MIN; int min1=INT_MAX,min2=INT_MAX,n=nums.size(); for(int i=0;

2021-01-04 23:24:26 214

原创 LeetCode-排序

1. 剑指 Offer 40. 最小的k个数在最大堆改变一个数时,调用一次调整堆就可将堆再次变为最大堆把前k个数调整为最大堆,从第k个数与最大堆顶比较,堆顶大于arr[k]就交换,再把前k个数调整为最大堆比较一遍过后前k个数即为最小的k个数 void adjustHeap1(vector<int>& arr,int k,int i) { 调整堆,把前k个数调整为最大堆 int father = i, child = 2 * i + 1; while (ch

2021-01-03 22:34:36 117 1

原创 排序算法

1. 冒泡排序每次把最大值放到后面,重复size-1次优化i=n-1,j<i ,后面有序的部分不会再被比较大小if(flag),一次都没有交换代表数组已经有序,直接break即可void bubble(vector<int>& arr) { int n = arr.size(); for (int i = n - 1; i > 0;i--) { bool flag = true; for (int j = 0; j < i;j++) {

2021-01-02 11:30:23 102

原创 C++笔记

参数缺省值1.注意:参数缺省值必须放在函数参数的最后否则就没有意义了如func(int a = 1, int b),每次传参为了传入b必然要传两个参数,设置a的缺省就没有意义了2.默认参数一般在函数声明中提供。如果程序中既有函数的声明又有函数的定义时,则定义函数时不允许再定义参数的默认值。void fun(int x = 0,int y = 0);void fun(int x = 0, int y = 0) { } // error C2572: “fun”: 重定义默认参数 : 参数 2/

2020-12-19 15:58:06 275

原创 C语言笔记

1.sizeof与strlensizeof:1明确给出定义char a[6],中括号多少,就开辟多少空间,sizeof(a)就是多少。2.char a[] = “Abook”,size是字符串长度加一,包括了隐形的‘\0’ char p[] = "Abook"; printf("%d", sizeof(p)); //6 包括‘\0’在内的大小3.char* pa;sizeof(pa)就是一个指针的大小,为4 char* str; sizeof(str) == 4 计算的是指针变量

2020-12-17 18:57:19 83

原创 LeetCode-分治法

写在前面:二分查找需要有序排列,时间复杂度为log2n二分查找迭代:public static int binarySearch(int targe,int[] nums) { int left = 0; int right = nums.length; while(left<=right) { int mid = left+(right-left)/2; if(nums[mid] == targe) { return mid; }else if(nums[

2020-11-04 17:03:56 194

原创 LeetCode-动态规划

1.题号5:最长回文串(好棒!)方法一:斜线填表动态规划本题原理:在回文字符串首尾添加相同字符依然是回文字符串利用布尔类型的数组记录从 i 到 j 的字符串是否为回文字符串双重循环,外层为字符串间隔长度,内层遍历字符串,到 i后的长度不足k结束,这样各种字符串都遍历了一遍。根据字符串长度(k)不同,判断是否为回文字符串的方法也不同,k = 1,长度为一都是回文字符串,即对角线都是true。长度为二判断两个字符是否相等。字符串大于等于三,判断首尾是否相等&&bool[i+1][j-1

2020-10-29 22:06:57 156

原创 LeetCode-字符串

题号6:Z字形变换方法一:按照z字形顺序,到第一行和最后一行时变换变换方向public String convert(String s, int numRows) { if (numRows == 1) return s; List<StringBuilder> rows = new ArrayList<>(); for (int i = 0; i < Math.min(numRows, s.length()); i++){ .

2020-10-25 19:04:13 200

原创 LeetCode-双指针

题号3:无重复字符的最长子串滑动窗口,相当于以每个字符都作为起始位置找寻最长值,只需遍历一次用哈希集合储存之前的字符串,无需重复遍历也可判断是否已经存在public int lengthOfLongestSubstring(String s) { // 哈希集合,记录每个字符是否出现过 Set<Character> occ = new HashSet<Character>(); int n = s.length(); .

2020-10-18 21:13:34 116

原创 LeetCode笔记

题号1013:能否分成连续的三等分思维方式真的重要,分成三等分,不能被三整除的数自然排除;每一份为sum/3,只需累加到该数值,count计数加一,累加归零,当i<length-1时,count>2即可;要更加虚心的学习;sum归零时要在上层循环归零题号7:整数倒置int取值范围【-2的31次方,2的31次方-1】-2147483648 ~ 21474836474个字节,即32个二进制位 while(x!=0){ i=i*10+x%10; .

2020-10-17 20:18:42 114 1

原创 struts2框架(一)

struts2框架(一)一、sessionaction类继承SessionAware接口implements SessionAware建立mapprivate Map<String,Object> session;重写setSession方法,参数为之前简历的mappublic void setSession(Map<String, Object> session) { this.session = session; }4.传入与使用//前面

2020-09-09 19:56:35 81

原创 jQuery-编写插件

一、编写插件编写一个jQuery插件的原则:给$.fn绑定函数,实现插件的代码逻辑;插件函数最后要return this;以支持链式调用;插件函数要有默认值,绑定在$.fn..defaults上;用户在调用时可传入设定值以便覆盖默认值。一、$.fn给jQuery对象绑定一个新方法是通过扩展$.fn对象实现的。$.fn.highlight1 = function () { ...

2020-03-02 21:27:29 118

原创 jQuery-事件

一·、AJAX用jQuery的相关对象来处理AJAX,不但不需要考虑浏览器问题,代码也能大大简化。ajaxjQuery在全局对象jQuery(也就是$)绑定了ajax()函数,可以处理AJAX请求。ajax(url, settings)函数需要接收一个URL和一个可选的settings对象,常用的选项如下:async:是否异步执行AJAX请求,默认为true,千万不要指定为false;...

2020-03-02 21:26:56 74

原创 jQuery-动画

一、内置动画函数show / hidediv.show(3000) //在3000毫秒内逐渐显示div.hide(3000) //在3000毫秒内逐渐消失div.toggle(3000) // 根据当前状态决定是show()还是hide()。时间以毫秒为单位,但传入'slow','fast'这些字符串:div.show('slow'); // 在0.6秒钟内逐渐显示...

2020-03-02 21:26:15 101

原创 jQuery-事件

一、事件事件函数写法on方法用来绑定一个事件,我们需要传入事件名称和对应的处理函数。a.on('click', function () { alert('Hello!');});直接调用click()方法:a.click(function () { alert('Hello!');});事件鼠标事件click: 鼠标单击时触发;dblclic...

2020-03-02 21:25:33 68

原创 Query-操作DOM

而且有的浏览器只有innerHTML,有的浏览器支持innerText,有了jQuery对象,不需要考虑浏览器差异了,全部统一操作一. 修改Text和HTMLtext()获取节点的文本,有参数时修改html()原始HTML文本,有参数时修改<!-- HTML结构 --><ul id="test-ul"> <li class="js">Ja...

2020-03-02 21:24:10 349

原创 jQuery-选择器

一. 选择器jQuery对象类似数组,它的每个元素都是一个引用了DOM节点的对象,查找不到返回空数组。id选择器:var div = $('#abc');类选择器:var a = $('.red'); // 所有包含`class="red"`的节点都将返回var a = $('.red.green'); // 查找同时具有两个类的元素,注意没有空格!var icons =...

2020-03-02 21:23:30 76

原创 JavaScript标准对象

一、AJAXAsynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求。如果仔细观察一个Form的提交,你就会发现,一旦用户点击“Submit”按钮,表单开始提交,浏览器就会刷新页面,然后在新页面里告诉你操作是成功了还是失败了。如果不幸由于网络太慢或者其他原因,就会得到一个404页面。这就是Web的运作原理:一次HTTP请求对应一个页...

2020-03-02 21:22:51 78

原创 JavaScript操作表单和文件

一、操作表单HTML表单的输入控件主要有以下几种:文本框,对应的<input type="text">,用于输入文本;口令框,对应的<input type="password">,用于输入口令;单选框,对应的<input type="radio">,用于选择一项;复选框,对应的<input type="checkbox">,用于...

2020-03-02 21:22:16 318

原创 JavaScript-操作DOM

一、查找DOM要精确地选择DOM,可以先定位父节点,再从父节点开始选择,以缩小范围。document.getElementById() 查找相应iddocument.getElementsByTagName() 查找相应标签document.getElementsByClassName() 查找相应类// 返回ID为'test'的节点:var test = document.ge...

2020-02-24 21:20:50 106

原创 JavaScript浏览器对象

一、浏览器对象window 属性window对象不但充当全局作用域,而且表示浏览器窗口。window.innerWidth和window.innerHeight:可以获取浏览器窗口的内部宽度和高度。内部宽高是指除去菜单栏、工具栏、边框等占位元素后,用于显示网页的净宽高。window.outerWidth和window.outerHeight属性,可以获取浏览器窗口的整个宽...

2020-02-24 21:20:14 135

原创 JavaScript面对对象编程

一、创建对象原型链JavaScript对每个创建的对象都会设置一个原型,指向它的原型对象。当我们用obj.xxx访问一个对象的属性时,JavaScript引擎先在当前对象上查找该属性,如果没有找到,就到其原型对象上找,如果还没有找到,就一直上溯到Object.prototype对象,最后,如果还没有找到,就只能返回undefined。创建一个Array对象:var arr = [...

2020-02-24 21:19:36 71

原创 JavaScript标准对象

一、Date对象在JavaScript中,Date对象用来表示日期和时间。要获取系统当前时间var now = new Date();now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)now.getFullYear(); // 2015, 年份now.getMonth(); // 5, 月份,注意月份范围是0~11,5表示六月now...

2020-02-22 21:38:55 117

原创 JavaScript函数(二)

一、高阶函数定义把其他函数当做参数的函数function add(x, y, f) { return f(x) + f(y);}var x = add(-5, 6, Math.abs); // 11arr.map将数组每个元素按照参数函数运算function pow(x) { return x * x;}var arr = [1, 2, 3, 4, 5...

2020-02-22 21:38:08 158

原创 JavaScript函数(一)

一、定义函数function abs(x){ }function abs(x) { if (x >= 0) { return x; } else { return -x; }}2.var abs = function (x){ } ;var abs = function (x) { if (x >= 0) ...

2020-02-22 21:37:11 117

原创 JavaScript语法基础

一、数据类型JavaScript不区分整数和浮点数,统一用Number表示不采用int、double定义变量,统一用var这种变量本身类型不固定的语言称之为动态语言两种等值比较==它会自动转换数据类型再比较,不准确,推荐使用===,不会转换数据类型NaN 表示Not a Number,当无法计算结果时用NaN表示Infinity 无限大,数值超过了JavaScri...

2020-02-22 21:35:38 127

空空如也

空空如也

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

TA关注的人

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