阿里
1.进程间状态转换:三种状态(就绪,阻塞,执行)
就绪=》执行:进程调度时,分配了cpu
执行=》就绪:1.时间片用完 2.高优先级的抢占的优先级的进程
执行=》阻塞:1.请求I/o 2.申请缓冲空间
阻塞=》就绪:1.I/o完成 2,缓冲空间申请完毕
注意:处于阻塞态的进程只有进入就绪态才能被再次执行
2.Linux中进程间通信机制:
信号,管道(FIFO),IPC机制(消息队列,信号量,共享存储区)
3.长为n的字符串匹配长为m的子串的算法复杂度:
BF算法最坏情况下需要比较(n-m+1)*m次,即每次都是匹配到子串最后一个位置出现不匹配。时间复杂度0(n*m);
最好情况下需要比较(n+m)/2次,时间复杂度O(n+m);
KMP算法时间复杂度为O(n+m);
下面是BF算法实现的定位函数:
int Index(string S,string T,int pos)
{
//子串T匹配主串S pos后的字符串,返回匹配位置,如果不匹配,返回0
int SLen=S.length ();
int TLen=T.length() ;
assert(pos>=0&&pos<SLen);
int i=pos;
int j=0;
while(i<SLen&&j<TLen)
{
if(S[i]==T[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
}
if(j>=TLen)
return i-j;
else
return 0;
}
4.判断一包含n个整数的数组a中,满足a[i]+a[j]=a[k]的时间复杂度最小是????

浙公网安备 33010602011771号