关于有序二维矩阵查找和字符串替换的两道算法题

最近看一本书上写到的两个面试题 于是实现了一下 感觉思路很好,大牛略过 :

1、对于一个二维矩阵,从左到右  从上到下 都是递增的,如何判断一个值是否在矩阵内部?(C实现  实现复杂度 O(n))

bool FindInTwoDimensionalMatrix(int*pMatrix,int iRows,int iCols,int iFindVal)
{
   bool bFind=false ;
   if(pMatrix==0||iRows<=0||iCols<=0)
      return bFind ;
   int iRow=0,iCol=iCols-1;
   while(iRow<iRows&&iCol>=0)
   {
       if(pMatrix[iRow*iCols+iCol]==iFindVal)
       {
         bFind=true ;
         break;
       }else if(pMatrix[iRow*iCols+iCol]>iFindVal)
          --iCol;
        else
          ++iRow;
   }
   return bFind ;
}

2、在一个内存足够大的空间中,存储的 一串字符序列,替换其中的空格为  %20?(C实现,时间复杂度 O(n))

void  ReplaceCharInEnoughMemory(char*pStr)
{
      if(pStr==0)
        return ;
      //计算空格个数
      int nSpace=0 ;
      int nLen=strlen(pStr);
      char *pBehand,*pFront;
      char *pTem=pStr;
      //计算空格个数
      for(;;)
      {
        //0 结尾  '\0'
        if(*pTem=='\0')
           break;
        else if(*pTem==0x20)
        {
          ++nSpace;
        }
        pTem++;
      }
      //后面等于 '\0'需要添上
      pBehand=pStr+nLen-1+nSpace*2;
      pFront=pStr+nLen-1;
      for(;;)
      {
         if(*pFront!=0x20){
          *pBehand=*pFront ;
         }else{
           *pBehand='0';
           *(--pBehand)='2';
           *(--pBehand)='%';
         }
         if(pFront==pStr)
            break ;
         pBehand--;
         pFront--;
      }
      //结尾
      *(pStr+nLen-1+nSpace*2+1)='\0';
}

好了 就写到这里。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UsherYue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值