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

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

好了 就写到这里。

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

  1. Leetcode 240 Search a 2D Matrix II (二分法和分治法解决有序二维数组查找)

    1.问题描述 写一个高效的算法,从一个 m×n m\times n的整数矩阵中查找出给定的值,矩阵具有如下特点: 每一行从左到右递增. 每一列从上到下递增. 2. 方法与思路 2.1 二分查找法 根据 ...

  2. 滴滴面试算法-----有序二维数组查找

    题目如下: /**** 1,2,3* 4,5,6* 7,8,9有一个二位数组,从左到右,从上到下,都是有序的递增数组写一个算法 判断给定数组有没有在这个二位数组里提示:从左下角或者右上角开始找*/ 解 ...

  3. 有关完全二叉树求节点数和前缀树求字符串是否重复的两道算法题

    1.给定一棵完全二叉树的头节点head,求其中的节点个数 递归的方法,时间复杂度为O((logN)²) 首先递归出头节点的左子树的最大深度H,之后再递归头节点的右子树的深度是否等于H,若相等则表示,头 ...

  4. 二维数组查找数字--C语言

    其实遍历数组依次比较也可以,这里我们讨论有序二维数组查找. 问题:我们知道数组是从左至右,从上到下递增.输入数字,判断数组里面是否含有该整数. 具体怎么判断分析不再赘述,(<剑指offer> ...

  5. 【Matlab】如何对二维矩阵进行线性/非线性插值?

    1.Introduction 最近又遇到了矩阵插值(重采样)的问题,在最开始写博客的时候就写了篇关于 Excel 重采样的文章,不过在逐渐熟悉 Matlab 的过程中,还是决定看看能不能编程自动实现, ...

  6. LeetCode 240. 搜索二维矩阵 II(二分查找 分治)

    文章目录 1. 题目 2. 解题 2.1 从左下角或者右上角开始搜索 2.2 分治算法 1. 题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以 ...

  7. leetcode74. 搜索二维矩阵(二分查找)

    编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入: matrix ...

  8. [面试] 算法 —— 数组(有序二维数组的查找)

    这里的有序二维数组指的是:每一行都是按照从左到右递增,从每一列都是按照从上到下递增的顺序排序. 我们定义如下的查找规律: 首先选取数组中右上角(也可选择数组左下角)的数字. (1)如果该数字等于要查找 ...

  9. 搜索二维矩阵II(分治法和蛇行)

    问题来源:力扣算法面试汇总 问题描述:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序 ...

最新文章

  1. PHP 配置文件详解(php.ini 详解 )
  2. JavaScript---事件详解
  3. Linux / openwrt / Ubuntu 18.04 虚拟机中的 openwrt 如何联网
  4. python 出现 AttributeError: matplotlib‘ object has no attribute ‘to_rgba‘
  5. 我看中国软件---问题篇
  6. Java 基于javaMail的邮件发送(支持附件)
  7. hash ruby 定义 嵌套_【译】rails的嵌套属性(Nested Attributes)使用
  8. 郁闷的开始--8月21日
  9. 安捷伦$8000万投资下一代测序公司
  10. 诸如zxing二维码调用摄像头旋转角度问题解决方法
  11. VUE—下载安装并使用mint ui(图文详情)
  12. 递归 (一): 递归思想与 C++ 中的递归函数及两个递归应用示例 (斐波那契, 汉诺塔)
  13. 计算机科学与技术学习方法
  14. 物联网-电力监控平台(二)
  15. 如何提高自己的 Java 编程技能
  16. stm32+esp8266 通过MQTT发送到thingsboard平台
  17. Statement和PreStatement的区别 以及 #{}和${}的区别
  18. 如何查看Linux版本.
  19. Qt编写通用主界面V2019
  20. Logstash的filter插件介绍

热门文章

  1. 浅析Asp.net MVC 中Ajax的使用
  2. HDU5697 刷题计划 dp+最小乘积生成树
  3. MongoDB学习笔记三:查询
  4. Java中StringBuilder的清空方法比較
  5. C#文件操作基础之File类和FileInfo类
  6. 关于 mysql.test 数据库
  7. Lightbox 效果
  8. Sql Server 中汉字处理排序规则,全角半角
  9. NXP (I.MX6ULL) GPT高精度延时定时器
  10. Java中lombok @Builder注解使用详解