阿里

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]的时间复杂度最小是????

posted @ 2013-05-12 17:08  成长的点点滴滴  阅读(154)  评论(0)    收藏  举报