自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (6)
  • 收藏
  • 关注

转载 虚拟机centos8磁盘整体扩容

Cent OS 8 不通过载到某个目录的方式,将磁盘整体扩容使用虚拟机给磁盘扩容 将扩展的容量添加为新的分区依次输入的指令如下 检查新添加的sda3分区 格式化新加的分区PS :该命令为格式化xfs格式,格式化为ext4格式命令为 mkfs.ext4vgdisplay & df-h记下卷组以及待挂载点对应的分区名,这里为cl和/dev/mapper/......

2022-06-13 14:18:55 1755

原创 VI常用操作命令

VI常用命令 增 删 改 查 移动 撤销 行号

2022-01-18 10:21:38 380

转载 编写类String的构造函数、析构函数和赋值函数

编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:class String { public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); // 析构函数 String & operator =(const String &other); // 赋值函数 priv

2021-04-03 10:27:18 1294

原创 力扣611-有效三角形的个数

给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意:数组长度不超过1000。数组里整数的范围为 [0, 1000]。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-triangle-number思路:先从小打到排序,然后只要三个数之..

2020-12-15 21:40:29 333 1

原创 牛客巅峰赛S2钻石&王者场B题-牛牛与字符串2

链接:https://ac.nowcoder.com/acm/contest/9887/B来源:牛客网牛牛拿到了一个字符串。他想知道除去字符串本身以外,这个字符串最大的公共前后缀的长度是多少?例如,对于字符串ABABA而言,“ABA”即是它的前缀,也是它的后缀,且是最长的公共前后缀,因此最大的长度是3。牛牛无法解决该问题,所以他只好向你求助,给定一个只包含大写字母的字符串s,返回除去字符串本身以外公共前后缀最大长度,如果没有任何一个公共前后缀满足要求,返回-1即可。1≤∣s∣≤1..

2020-12-11 22:41:50 167

原创 牛客巅峰赛S2钻石&王者场A题-牛牛选物

链接:https://ac.nowcoder.com/acm/contest/9887/A来源:牛客网牛牛有现在有n个物品,每个物品有一个体积v[i]和重量g[i],他想选择其中总体积恰好为V的若干个物品,想使这若干个物品的总重量最大,他想知道最大总重量为多少。(如果不存在合法方案,返回-1)对于100%的数据,1≤n≤20,1≤v[i]≤1e8,1≤g[i]≤1e8,1≤V≤1e9给定三个参数,第一个参数为数组v,第二个参数为数组g,第三个参数为体积V,求最大总重量为多少。(所给字符串与返

2020-12-11 22:38:09 281

原创 快速幂 C++

计算 , 根据b的奇偶,得到以下公式typedef long long ll;ll mod = 1e9 + 7;ll power(ll a, ll b){ ll res = 1; while(b){ if(b % 2 == 1) res = res * a % mod; b /= 2; a = a * a % mod; } return res;}...

2020-11-24 22:21:33 183

原创 C++输出字符型指针地址

C++标准库中I/O类对<<操作符重载,因此在遇到字符型指针时会将其当作字符串名来处理,输出指针所指的字符串。因此,我们用static_cast强制类型转换把字符串指针转换成无类型指针即可输出指针地址#include<iostream>using namespace std;int main() { char *p="abc"; cout << p << endl;//"abc" cout << *p &lt

2020-10-21 16:02:25 2529

原创 牛客NC53-删除链表的倒数第n个节点

题目描述给定一个链表,删除链表的倒数第n个节点并返回链表的头指针例如, 给出的链表为:1->2->3->4->5, n= 2. 删除了链表的倒数第n个节点之后,链表变为1->2->3->5.备注:题目保证n一定是有效的请给出请给出时间复杂度为O(n)的算法思路1.哈希存储,key为序号,value为指向该位置的指针/** * struct ListNode { * int val; * struct ListNode *n

2020-10-08 14:44:02 119

原创 牛客NC105-二分查找

题目描述请实现有重复数字的有序数组的二分查找。输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。示例1输入5,4,[1,2,4,4,5]输出3思路:题目输出的是自然顺序而不是索引顺序;1.递归相当于是有重复数字的有序数组二分查找基础上,查找最左边的位置,如果当前元素大于等于目标值v,判断它前一个元素是否也大于等于目标值v,如大于则继续二次查找,否则返回该索引位置+1,递归结束条件为查找到或者右边界严格小于左边界。

2020-10-07 21:48:28 780 1

原创 牛客NC4-判断链表中是否有环

题目描述判断给定的链表中是否有环扩展:你能给出空间复杂度O(1)的解法么?C++1.空间复杂度O(n),利用哈希表,存在环即当前节点的next已经在哈希表中出现过/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */.

2020-09-30 16:26:38 185

原创 剑指offer-JZ40-数组中只出现一次的数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:1.借助哈希表记录出现数字的频率和下标,最后遍历哈希表查找,时间复杂度和空间复杂度均为O(n);#include<unordered_map>class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { int n = d

2020-09-08 16:27:41 173

原创 剑指offer-JZ37-数字在升序数组中出现的次数

题目描述统计一个数字在升序数组中出现的次数。思路:排序数组查找元素,则用二分法,在二分基础上第一次找到重复元素左边界,第二次找到重复元素右边界。查找边界的时候注意递归结束条件和找到边界时的情况。查找左边界时,当中间元素center等于要查找的元素k时,判断center前一个元素是否也等于k,等于k则说明该位置不是边界,需要继续在左半部分查找;当center前一个元素不等于k或者该位置为0即数组第一个位置时,则说明查找到了左边界。右边界同理C++class Solution {p.

2020-09-07 19:54:15 137

原创 牛客NC93-设计LRU缓存结构

题目描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构 get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1) 某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。 当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)若opt=2,接下来一个整

2020-09-05 21:21:09 350

原创 牛客NC88-寻找第K大

题目描述有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。测试样例:[1,3,5,2,2],5,3返回:2思路:1.若不按快排思路,用最大堆实现,建堆复杂度O(n),插入复杂度O(logn),总共复杂度O(nlogn)class Finder {public: int findKth(vector<int> a, int n, int K

2020-09-04 15:58:07 254

原创 剑指offer-JZ17-树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:先判断A和B的根节点是否相同,不相同则递归找A的左右子树是否和B的根节点相同,一直不相同则返回false若找到相同根节点,判断该根节点的左右子树是否也对应和B的左右子树相等若B为空,则B已遍历完,返回true若A为空,B还未遍历完A已经为空,返回falseC++/*struct TreeNode { int val; struct TreeNode *left;

2020-09-02 21:37:37 148

原创 剑指offer-JZ60-把二叉树打印成多行

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路:层次遍历,再用两个变量,一个记录当前层要打印的节点数,一个记录下一层要打印的节点数C++/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }

2020-09-02 15:50:39 113

原创 剑指offer-JZ57-二叉树的下一节点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:下一节点一共有以下三种情况二叉树为空,返回空; 当前节点右子树不为空,则用一个指针指向该右子树,再循环找该右子树的左子树直到叶子节点; 当前节点父节点不为空,则判断当前节点是其父节点的左子树还是右子树,若当前节点为左子树,返回当前节点父节点,若当前节点为右子树,向上遍历其父节点的父节点,重复之前判断C++/*struct TreeL

2020-09-01 21:04:54 101

原创 剑指offer-JZ39-平衡二叉树

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树思路:递归思想,先计算左子树深度,再计算右子树深度,如果两子树深度相差大于1则返回-1,否则返回两者之间较大者+1C++class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { return IsBalanced(pRoot) >= 0; }..

2020-09-01 15:32:10 133

原创 剑指offer-JZ36-两个链表的第一个公共节点

题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)思路:如果两个链表有公共节点,那么在公共节点之后他们公用尾部,相当于一个“Y”型结构,公共长度为n。用两个指针指向这两个链表依次比较,两链表长度分别为a+n,b+n。若a=b,即两链表长度相同,两个指针同步走,发现相同即找到;若ab,即两链表长度不同,则短链表指针走到表尾时,长链表指针还剩b-a未走,此时把短链表指针指向长链表表头继续同步走,当长链表指针走到表

2020-08-26 17:42:00 151

原创 C++ 读取一行带空格字符串

C++中字符串的输入1. cincin是C++中最常用的输入语句,当遇到空格或者回车键即停止#include <iostream>#include <string>using namespace std;int main(){ char a[50]; cin>>a; cout<<a<<endl; return0;}输入:a...

2020-08-26 16:25:09 3876

原创 力扣41. 缺失的第一个正数

题目描述:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。思路:如果没有时间复杂度和空间复杂度要求,直接排序或者哈希表均可解决。常数级别的额外空间,则只能在输入数组原地交换。若是已排序的数组,满足x[1,N],数组第x-1个元素在x位置(数组下标从0开始)。对数组每个元素进行遍历,对于遍历到的元素nums[i] = x,如果满足x[1,N],则x应该在数组中x-1的位置,因此交换nums[.

2020-08-22 21:43:14 243

转载 new与malloc十点区别

https://www.cnblogs.com/qg-whz/p/5140930.html关于重载:new表达式(new-expressions)用户是没办法重新定义它的行为的,编译器遇到new表达式时总是先调用operator new函数获取空间然后再调用构造函数初始化对象。我们可以重载新的operator new函数进行内存分配方式的改变,但是new表达式的执行我们无法改变其行为,所以new表达式总是会去调用对象的构造函数,除了一些没有构造函数的内置类型如int/float这些...

2020-08-22 11:27:39 81

转载 C++ 内存五大区

C++中,内存分成5个区1.栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。2.堆,就是那些由malloc分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制。使用free释放内存,如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。3.自由存储区,就是那些由new分配的内存块,他和堆是十分相似的,不过它是用delete来结束自己的生命的。自由存储是C++中通过new与delete动态分配和释放对象的抽象概念

2020-08-22 11:24:35 1772

转载 如何定义一个只能在堆上(栈上)生成对象的类?

链接:https://www.nowcoder.com/questionTerminal/0a584aa13f804f3ea72b442a065a7618来源:牛客网在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。 静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。 ...

2020-08-20 23:03:09 370

原创 力扣-剑指 Offer 50. 第一个只出现一次的字符

题目描述:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。思路:第一次遍历字符串每个字符,用哈希表存储每个字符和它出现的次数,同时用一个辅助哈希表pos记录字符第一次出现的位置,若同一字符出现多次,则位置置为INT_MAX,最后遍历pos寻找最小的位置即可C++class Solution {public: char firstUniqChar(string s) { int n = s.length()..

2020-08-19 15:35:20 151

原创 力扣3. 无重复字符的最长子串

题目描述:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。思路:滑动窗口C++class Solution {public: int lengthOfLongestSubstring(string s) { int n = s.length(); if (n < 2)//长度为1,最长子串为自己 return n; int maxlen = 0; unordered_..

2020-08-19 11:00:04 184

原创 力扣347. 前 K 个高频元素

题目要求链接:https://leetcode-cn.com/problems/top-k-frequent-elements给定一个非空的整数数组,返回其中出现频率前k高的元素。提示:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度必须优于 O(n log n) ,n是数组的大小。 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。 你可以按任意顺序返回答案。思路:top k个最大的,用最小堆,每次插...

2020-08-17 20:57:47 189

原创 c++优先队列(priority_queue) 为什么 less是大根堆

C++优先队列是优先级高的在队首,定义优先级大小的方式是传入一个算子的参数比较a, b两个东西,返回true则a的优先级<b的优先级。默认是less算子也就是返回a<b,也就是小的优先级也小,而greater算子返回a>b,小的优先级高。如果是默认的less算子,值大的优先级高,值大的排到了队头,优先队列大的先出队。...

2020-08-17 17:47:13 2695 2

原创 C++ 快速排序空间复杂度O(logn)

核心思想:1.选取主元选取一个元素为主元,这里采用三个数(left, center, right)的中位数作为主元的方法,并把选择好的主元放到right-1的位置(升序排序),这样接下来的子集划分只需要从left+1,right-2开始即可2.子集划分选取主元后,用双指针i,j遍历子序列,i寻找从left+1往后第一个大于等于主元的元素,j寻找从right-2到前第一个小于主元的元素,当i,j都找到满足条件的元素时,判断i是否小于j即i,j之间还有元素,若i小于j交换这两个位置的元素,否则说明i..

2020-08-17 12:09:16 853

原创 C++ 二路归并排序-递归实现

核心思想:先递归划分,然后合并的时候相当于合并两个有序数组,需要用到一个额外数组,最后把额外数组的元素依次赋给原数组,注意函数参数为引用 //统一接口 void Merge_sort(vector<int> &num, int n){ vector<int> temp(n); Msort(num, temp, 0, n-1); } //递归划分 void Msort(vector<i

2020-08-17 11:59:44 557

原创 剑指offer-JZ30-整数中1出现的次数

题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。思路:1.直接求解,对每位数字除以10取余数,n有logn位,时间复杂度O(nlogn)class Solution {public: int NumberOf1

2020-08-15 12:19:30 105

原创 剑指offer-JZ30-连续子数组的最大和

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)思路:动态规划入门,令f(i)为前i个元素最大和,则

2020-08-15 10:50:31 101

原创 剑指offer-JZ28-数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路:1.map统计次数,时间复杂度O(n)class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { map <int, int>

2020-08-14 21:40:04 185

转载 C++ 中unordered_map的用法

c++使用unordered_map #include<tr1/unordered_map>//在unordered_map之前加上tr1库名, using namespace std::tr1;//与此同时需要加上命名空间[查找元素是否存在]若有unordered_map <int, int> mp;查找x是否在map中 方法1: 若存在 mp.find(x)!=mp.end() 方法2: 若存在 mp.count(x)!=0[插入数

2020-08-14 18:11:20 1162

原创 剑指offer-JZ26-二叉搜索树与双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:二叉搜索树(BST):若二叉搜索树根节点的左子树不为空,则根节点的左子树所有节点值均小于根节点值,若根节点的右子树不为空,则根节点的右子树所有节点值均大于根节点;二叉搜索树的中序遍历就是一个升序序列。利用二叉搜索树的中序遍历是一个升序序列,每次访问根节点的时候只需记录前一个访问的节点并修改对应指针即可,需要注意传参时记录前一个访问位置的指针需要引用C..

2020-08-14 16:15:45 134

原创 剑指offer-JZ21-栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:用一个辅助栈来模拟进出栈,例如题目所举例子,出栈序列第一个是4,需要把压栈序列中的数字一直进行压栈操作,每次压栈后判断栈顶数字是否等于4,若等于4,则出栈,开始判断下一个出栈序列中的数

2020-08-14 14:56:29 116

原创 剑指offer-JZ16-合并两个排序的链表

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:注意指针为nullptr和指针链接过程中的断开问题/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(ListNode* pHead1, Li

2020-08-14 11:52:23 117

原创 C++ 空栈不能调用top()

题目描述(链接:https://ac.nowcoder.com/acm/contest/6912/A来源:牛客网)牛牛最近迷上了小游戏,于是他也想对他的01字符串进行一些操作,01字符串上的0和0相邻时会变成1,而1和1相邻时会在字符串上消失,而0和1相邻时什么都不会发生,牛牛现在把初始的字符串给你,你能告诉牛牛这个字符串最后会变成什么样吗。采用栈实现时,当栈为空时,以为空栈调用top函数会返回NULL,然而调用时会发生段错误。原来stack 的top函数在栈为空时返回的是超尾-1,所以T.

2020-08-14 10:07:45 3608

原创 剑指offer-JZ15-反转链表

题目描述输入一个链表,反转链表后,输出新链表的表头。思路:1.利用一个栈,注意反转后的最后一个元素需要把它的next置为空,否则会无限循环/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) {

2020-08-13 20:41:41 95

宽度学习ppt

宽度学习ppt,基于C. L. Philip Chen 教授发表的Broad Learning System: An Effective and Efficient Incremental Learning System Without the Need for Deep Architecture,对内容进行了整理与概括

2018-10-08

济南大学概率论与数理统计A历年试题

整理收集了济南大学概率论与数理统计A历年试题,从2007-2015的每年试题以及答案和复习提纲

2018-09-20

济南大学数据结构期末考试题库

济南大学数据结构期末考试题库,里面有每一章的习题,包括选择填空大题

2018-09-20

离散数学答案(左孝凌)1-2章答案详解

左孝凌版离散数学答案,第1-2章答案详解,包括大多数习题

2018-09-20

近代智能优化算法课件

人工智能经典算法框架 包括 模拟退火算法, 遗传算法,差分算法等,有每个算法的思想以及例子

2018-09-20

PSO课件---西安电子科技大学姚新正老师

西安电子科技大学姚新正老师关于PSO(粒子群优化算法)的课件

2018-03-17

空空如也

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

TA关注的人

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