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

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

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';
}

好了 就写到这里。

时间: 2024-10-23 13:32:15

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

微软面试题解析:求一个矩阵中最大的二维矩阵(元素和最大)

题目:求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 0 3 4 2 3 4 5 1 1 1 5 3 0 中最大的是: 4 5 5 3 要求:(1)写出算法;(2)分析时间复杂度;(3)用C写出关键代码 分析: 直接遍历二维数组,求出最大的二维数组就OK了 实现如下: #include<iostream> using namespace std; int max_matrix(int (*array)[5], int maxx, int maxy, int& posi, int

php二维数组转成字符串示例

 这篇文章主要介绍了php二维数组转成字符串示例,需要的朋友可以参考下    代码如下: function arr2str ($arr) {     foreach ($arr as $v)     {         $v = join(",",$v); //可以用implode将一维数组转换为用逗号连接的字符串         $temp[] = $v;     }     $t="";     foreach($temp as $v){         $t.

java-在一个3x3的二维矩阵里面随机的用0或1填充,找出该矩阵里面的相同行或者列

问题描述 在一个3x3的二维矩阵里面随机的用0或1填充,找出该矩阵里面的相同行或者列 package exercise_7; public class Exercise7_10 { public static void main(String[] args) { int[][] test = new int[3][3]; for (int i = 0; i < test.length; i++) { for (int j = 0; j < test[i].length; j++) { int

javase-3x3的二维矩阵里面随机的用0或1填充,找出该矩阵里面的相同行或者列,没有输出

问题描述 3x3的二维矩阵里面随机的用0或1填充,找出该矩阵里面的相同行或者列,没有输出 package exercise_7; public class Exercise7_10 { public static void main(String[] args) { int[][] test = new int[3][3]; for (int i = 0; i < test.length; i++) { for (int j = 0; j < test[i].length; j++) { in

二维码中的字符串怎么换行

问题描述 二维码中的字符串怎么换行 QRcode 中字符串怎么换行 a b c d e 中间添加什么符号能使他们变成 a b c d e 解决方案 我需要的是QRCODE自带的换行符号 解决方案二: Me.Text1.Text = "批次:1408M1" & Chr(10) & "图号:M01-01-001" Me.QRmaker1.InputData = Me.Text1.Text '读取支持换行的文本框 Me.QRmaker1.Refresh P

gdal-使用GDAL库函数能不能将影像读入到一个二维矩阵中?

问题描述 使用GDAL库函数能不能将影像读入到一个二维矩阵中? RasterIO()是将影像读入到一个一维行矩阵中了吗?有没有其他方法可以将影像读取到二维矩阵中?感觉用一维矩阵好麻烦

JS实现简单的二维矩阵乘积运算_javascript技巧

本文实例讲述了JS实现简单的二维矩阵乘积运算方法.分享给大家供大家参考,具体如下: Console控制台截图如下: (上图为输出结果直接上代码了(A矩阵可以乘以B矩阵的前提是A矩阵的列数等于B矩阵的行数) <!DOCTYPE html> <html> <head> <title>demo</title> </head> <body> </body> <script type="text/java

改写函数实现PHP二维/三维数组转字符串_php技巧

由于工作需要,自己在手册给定的示例函数基础上改写出了这样一个函数,代码如下: 复制代码 代码如下: //将多维数组中所有的数值转换成字符串---->最多支持三维数组 function implodex( $glue, $array, $separator='' ) { if ( ! is_array( $array ) ) return $array; $string = array(); $count = 0; foreach ( $array as $key => $val ) { if

php二维数组转成字符串示例_php实例

复制代码 代码如下: function arr2str ($arr){    foreach ($arr as $v)    {        $v = join(",",$v); //可以用implode将一维数组转换为用逗号连接的字符串        $temp[] = $v;    }    $t="";    foreach($temp as $v){        $t.="'".$v."'".",&quo