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

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

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

好了 就写到这里。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven实战:pom.xml与settings.xml

pom.xml与settings.xml pom.xml与setting.xml&#xff0c;可以说是Maven中最重要的两个配置文件&#xff0c;决定了Maven的核心功能&#xff0c;虽然之前的文章零零碎碎有提到过pom.xml和settings.xml里面的内容&#xff0c;但都是大略带过&#xff0c;学习与研究地并不细致&am…

Android之靠谱的把图片和视频插入手机系统相册

1 需求 把图片和视频插入手机系统相册,网上查了下基本上很乱,没几个靠谱的。 2 结果爆照 3 思路 图片插入系统相册(可以直接插入系统相册,但是我这里多做了一步就是先把图片拷贝到了一个目录再插入系统相册) 视频插入系统相册(先把视频拷贝到MIUI目录,然后再…

【专升本计算机】计算机操作系统练习题(选择判断名词解释简答)

一、填空 1. 操作系统为用户提供三种类型的使用接口,它们是 命令方式 和 系统调用 和 图形用户界面 。 2. 主存储器与外围设备之间的数据传送控制方式 ( I/O 控制方式) 有 程序直接控制、中断驱动方式、 DMA 方式 和 通道控制方式。 3. 在响应比最高者优先的作业调…

C# WPF 实现Tab页动态增减

概述Tab页面是一个很常用的控件&#xff0c;针对页面固定的场景&#xff0c;直接给Item进行数据绑定就行&#xff0c;如下所示&#xff1a;<dx:DXTabControl cal:Message.Attach"[Event Loaded][TabControl_Loaded($source,$eventArgs)]"><dx:DXTabItem Hea…

2014 网选 上海赛区 hdu 5047 Sawtooth

题意&#xff1a;求n个M型的折线将一个平面分成的最多的面数&#xff01; 思路&#xff1a;我们都知道n条直线将一个平面分成的最多平面数是 An An-1 n1 也就是f(n) (n*n n 2)/2 对于一个M型的折线呢&#xff1f;它有四条线&#xff0c;但是由于三个顶点的关系导致划分的平…

二、基础(IVX快速开发手册)

二、基础 通过本节你将了解 iVX 所支持应用的创建方法。 文章目录二、基础2.1 iVX 线上集成环境进入2.2 创建项目2.3 选择项目类型2.3.1 WebApp/小程序/原生应用2.3.2 微信小游戏2.3.3 微信小程序&#xff08;原生组件&#xff09;2.1 iVX 线上集成环境进入 点击 连接 或通过…

【专升本计算机】经典Office 2003专升本复习题(Word、Excel、PowerPoint)

经典Office 2003专升本复习题(Word、Excel、PowerPoint) 一、Word 2003 1. 启动 Word 是指: 将 Word 从硬盘中调入主存执行 2. 菜单栏: 文件( F )、编辑( E )、视图( V )、插入( I )、格式( O )、工具( T )、表格( A )、窗口( W )、帮主( H ) 3. …

Android之TabLayout+ViewPager2+FragmentStateAdapter实现带数字变化的TAB选项

1 问题 TabLayout+ViewPager2实现带数字变化的TAB选项,然后左边滑动或者点击上面的Tab切换fragment不能刷新 2 结果爆照 3 代码实现 layer_tab_indicator.xml <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="h…

slq2000数据库升级到sql2012

看到标题&#xff0c;估计有同行笑了&#xff0c;这年代还有用sql2000的&#xff1f;真的有&#xff0c;最近单位服务器数据迁移升级&#xff0c;将数据库迁移到新服务器后&#xff0c;发现数据全是2000的&#xff0c;无法直接导入到sql2012。没办法&#xff0c;只能先将数据库…

电脑网页打不开但qq能上解决方法

2019独角兽企业重金招聘Python工程师标准>>> 问题描述&#xff1a; 电脑网页打不开但qq能上。 问题原因&#xff1a; 是由于电脑系统的DNS解析出了问题。 解决方法&#xff1a; 首先在键盘上同时按下 winR 然后在弹窗中输入cmd &#xff0c; 再按enter键&#xf…

【专升本计算机】计算机权威复习题(基础知识、操作系统、计算机网络)

一、计算机基础知识 1. 第一台计算机: ENIAC “埃尼阿克”, 1946 年 2 月 14 日 2. 信息社会的基础是 计算机 、通信、信息的组织与处理,其中前者为核心 4. 计算机的组成: 运算器、控制器、存储器、输入设备、输出设备 5. 随机存储器( RAM ): 可读写,写…

基于Linux命令行KVM虚拟机的安装配置与基本使用

背景由于生产环境的服务器并不会安装桌面环境&#xff0c;简单操作的图形化安装也不适合批量部署安装。因此&#xff0c;我还是更倾向于在命令下安装配置KVM虚拟机。结合了一些资料和个人使用的状况&#xff0c;我大致列出了一些基本和常用的使用方法。 安装配置一、环境介绍操…

四、WebApp 基础可视组件(IVX 快速开发教程)

四、基础可视组件 通过本节你将了解 iVX 开发中的核心—— iVX 组件的使用方法。iVX 的组件是开发应用时所必要的对象&#xff0c;通过这些对象你将快速的完成应用的开发。 在 iVX 应用开发中&#xff0c;所有交互、动画、数据都需要以组件为基础&#xff0c;通过组件之间的编…

Springboot项目搭建(三)整合thymeleaf模板

springboot整合thymeleaf模板 一、POM文件添加依赖 <!--thymeleaf--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency><!--nekohtml 解决thymea…

React-引领未来的用户界面开发框架-读书笔记(一)

这本书的主要内容都是以react v0.12为主&#xff0c;ES5语法&#xff0c;笔记中将会使用react v0.14和RS6。 第1章 react简介 1.本质上是一个状态机&#xff0c;它以精简的模型管理复杂的随着时间而变化的状态。 2.它不是model-view-controller&#xff0c;它是mvc中的v(view)&…

Android之提示This version of Android Studio cannot open this project, please retry with Android Studio

1 问题 编译项目&#xff0c;错误提示如下 This version of Android Studio cannot open this project, please retry with Android Studio 2 解决办法 很明显&#xff0c;看英语翻译也知道&#xff0c;是由于AS版本太低导致&#xff0c;升级AS就可以了。

Netflix 的 API 架构演变历程

Netflix 以其松耦合和高度可扩展的微服务架构而闻名&#xff0c;Netflix API 的后端架构经历了 4 个主要阶段。&#x1d40c;&#x1d428;&#x1d427;&#x1d428;&#x1d425;&#x1d422;&#x1d42d;&#x1d421; &#x1d40c;&#x1d428;&#x1d427;&#x1d…

五、Web App 基础可视组件属性(IVX 快速开发教程)

五、基础可视组件属性 在 iVX 中各个组件存在不同的属性&#xff0c;这些属性用于设置显示的样式或者是自身具备的特征等&#xff0c;通过更改这些属性可以极大的方便我们进行项目的创作。 大多数组件都拥有相同的属性&#xff0c;相同属性在以下内容中不会赘述介绍&#xff…

【专升本计算机】甘肃省专升本考试计算机热点考点(填空题115道)

甘肃专升本考试计算机填空题热点考点 1 、自计算机问世至今已经经历了四个时代,划分时代的主要依据是计算机的构成元件。 2 、世界上第一台电子数字计算机采用的逻辑元件是电子管。 3 、早期的计算机体积大、耗能高、速度慢,其主要原因是制约于元器件。 4 、当前的计算机一…

【回溯法】竞赛游戏

题目描述 某游戏规则中&#xff0c;甲乙双方战斗&#xff0c;每一回合总能分出胜负&#xff0c;游戏规定&#xff1a; 1.失败的一方要将自己体力值的1/4加给胜利的一方。 2.游戏开始时&#xff0c;甲的体力值是1000&#xff0c;乙的体力值是2000。 3.每一回合&#xff0c;甲乙胜…