秋招笔记day58

1.青蛙叫

class Solution {

public:

int minNumberOfFrogs(string croakOfFrogs) {

if(croakOfFrogs.size()%5!=0)return -1;

vector<int>counts(5,0);

unordered_map<char,int>hash={{'c',0},{'r',1},{'o',2},{'a',3},{'k',4}};

int res=0;

int curr=0;

for(int i=0;i<croakOfFrogs.size();i++){

if(croakOfFrogsi=='c'){

counts0++;

curr++;

res=max(res,curr);

}else{

int k=hashcroakOfFrogs\[i];

if(countsk-1==0)return -1;

countsk-1--;

countsk++;

if(k==4){

curr--;

countsk--;

}

}

}

if(counts0>0||counts1||counts2||counts3)return -1;

return res;

}

};

总结:这里的hash的初始化方法不是用:,学到了,另外得判断最后的这个。

2.最长回文串

class Solution {

public:

string longestPalindrome(string s) {

int low=0,high=0,max_len=0;

int n=s.size();

vector<vector<bool>>dp(n,vector<bool>(n));

for(int i=n-1;i>=0;i--){

for(int j=i;j<n;j++){

if(si==sj&&(j-i<=1||dpi+1j-1)){

dpij=true;

if(j-i>max_len){

max_len=j-i;

low=i;

high=j;

}

}

}

}

string res;

for(int i=low;i<=high;i++)res+=si;

return res;

}

};

总结:这里可以不使用dp,可以对每个位置当成中间点,去判断奇数回文串、偶数回文串是不是可以

八股总结:

1.B+树和红黑树的区别是什么,为什么mysql索引不使用红黑树?

红黑树是二叉平衡搜索树,B+树是多路平衡搜索树,b+树相比红黑树可以减少磁盘io次数,便于范围查找,顺序查询。

2.为什么b+树的叶子节点有双向链表,非叶子节点有吗?

b+树的叶子节点存储数据,或者指针,按照key有序排列,使用双向链表便于按照两个方向的顺序查找,便于范围查找,非叶子节点是用于向下索引叶子节点,没有横向查找的场景,不需要双向链表。

3.事务的四个特性是什么,都是怎么保证的?

事务的四个特性是原子性、一致性、隔离性、持久性,原子性是通过undolog实现的,存储旧值或者反向操作,隔离性 通过mvcc,临键锁等实现,mvcc保证了快照读,临键锁是为了当前读,持久性是通过redolog实现的是预写日志,是可以用来掉电恢复。

一致性是通过aid,通过数据库约束和业务逻辑实现的。

4.关于死锁的四个条件和解决方法

四个条件分别是互斥、请求和保持、不剥夺、循环等待,解决方法有死锁预防,破坏四个条件之一比如固定顺序申请资源、一次申请资源,破坏请求和保持,死锁避免可以通过银行家算法,死锁检测和恢复可以使用资源分配图检测,然后终止进程回收资源,回滚事务,除此之外也可以用鸵鸟策略忽略死锁。

5.静态库和动态库的区别

静态库和动态库的区别主要是链接时机和共享方式不同,静态库在链接时被复制到可执行文件,可能在多个程序重复包含,文件更大,更新需要重新编译,动态库在链接时只记录依赖,在运行时加载动态库,多个程序可以共享,可能出现动态库缺失或者版本不兼容的问题。

6.static

static的作用,static作用于局部变量会使得变量具有静态存储期,只初始化一次,程序退出时消亡,作用域不变,作用于全局变量会改变变量链接属性,变成文件私有;static作用于类的成员会使得和类绑定,多个对象共享同一份,作用于成员函数会使得不和对象绑定,没有this指针,只能访问类的static成员

7.多态的种类和实现原理

我复述一遍:多态分成静态多态和动态多态,静态多态发生在编译期,通过函数重载、运算符重载、模板实现,具体通过类型和模板实例化类型去决定调用哪个,动态多态通过虚函数实现,父类虚函数子类重写,在使用基类的指针或者引用调用子类的方法时,去决定具体执行。通过虚函数表和虚函数表指针实现,虚函数表存储指向虚函数的指针,虚函数表是含有虚函数的类有一个,然后每个对象会有一个虚函数表指针,通过虚函数表指针找到虚函数表,找到虚函数执行

相关推荐
for_ever_love__36 分钟前
缓存穿透、击穿、雪崩:三个经典问题与完整解决方案
java·数据库·redis·缓存·哈希算法·布隆过滤器·雪崩
Jasmine_llq44 分钟前
《P5663 [CSP-J 2019] 加工零件》
数据结构·算法·bfs·广度优先搜索·分层 bfs /·奇偶分层最短路·奇数最短步数
在所不辞兄1 小时前
分层PINN提升多物理场一致性
人工智能·神经网络·算法·机器学习·工程仿真
wanderist.1 小时前
CSP 第43次认证 T4:集合划分 —— 图染色与二分图判定
算法·图论
不做无法实现的梦~1 小时前
基于 PX4 的全仓库架构、无人机算法解析与开发学习规划
算法·架构·无人机
做cv的小昊1 小时前
【大模型算法自学笔记01】NLP基础知识(1.1 自注意力)
人工智能·笔记·算法·自然语言处理·大模型·llm
stolentime1 小时前
AT_arc182_a [ARC182A] Chmax Rush!题解
数据结构·c++·算法·动态规划
longlongzihan1 小时前
LeetCode 189. 轮转数组:从直观模拟到最优原地算法
c++·算法·leetcode
爱喝热水的呀哈喽2 小时前
cpp二分库函数 lambda捕获
算法