1 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。(来自牛客网,剑指offer)

 // IO_Solution.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <vector>
using namespace std; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
//请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 //首先构造这样一个二维向量
void BuildDstArray(vector<vector<int>>&Array)
{
int nRow = Array[].size();
int nColumn = Array.size();
for (int i = ; i < nColumn; i++)
{
for (int j = ; j < nRow; j++)
{
Array[i][j] = i*nRow + j;
}
} for (int i = ; i < nColumn; i++)
{
for (int j = ; j < nRow; j++)
{
printf("%4d", Array[i][j]);
}
printf("\n");
} } //最差情况复杂度为:n+m
bool TwoDemoArrayFind(vector<vector <int>>Array,int nDst)
{
bool bFound = false;
if (Array.empty())
{
return bFound;
}
else
{
int nCurRow = ;
int nCurCol = ;
int nRows = Array[].size();
int nCols = Array.size(); while (nCurRow < nRows&&nCurCol >= )
{
if (Array[nCurCol][nCurRow] == nDst)
{
printf("位置:{%d,%d}",nCurCol,nCurRow);
bFound = true;
break;
}
else
{
if (Array[nCurCol][nCurRow] > nDst)
{
nCurRow--;
}
else
{
nCurCol++;
}
} }
return bFound; } }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
//构造并初始化一个二维向量:4行5列
vector<vector<int>> Array(, vector<int>(, )); //另外一种构造二维向量的方法
vector<vector<int>> a;
a.resize();
for (int i = ; i < ; i++)
{
a[i].resize();
} BuildDstArray(a);
TwoDemoArrayFind(a,); getchar();
return ;
}

2

请实现一个函数,将一个字符串中的空格替换成“ % 20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
//注意如果输出的是%20d需要对%进行转义

//用Stl中的vector时间复杂度为:O(str.length());空间复杂度O(str.length+3*SpaceNum)

 void ReplaceSpace( string strSrc,char *sOut)
{
vector<char> cOut;
const char *pStr = strSrc.data();
while (*pStr != '\0')
{
if (*pStr == ' ')
{
cOut.push_back('%');
cOut.push_back('');
cOut.push_back('');
}
else
cOut.push_back(*pStr);
pStr++;
}
cOut.push_back('\0'); for (int i = ; i < cOut.size(); i++)
{
sOut[i] = cOut[i];
} } //Test
  string str= "ni hao ma";
char pStr[] = {};
ReplaceSpace(str,pStr);
printf("%s",pStr);
getchar();
return ;

剑指Offer常见问题整理的更多相关文章

  1. 剑指Offer整理笔记

    说在前面,本篇的目的是为了学习剑指offer,以及博客园的排版功能,并将文章排版得整洁得体. 梵蒂冈梵蒂冈地方官方

  2. 面试经典算法题集锦——《剑指 offer》小结

    从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未 ...

  3. 【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题

    各位程序猿:         <剑指Offer>一书源自该书作者何海涛坚持更新与编写的博客(http://zhedahht.blog.163.com/),该博客收集整理了大量如微软.Goo ...

  4. 对面试题(剑指offer)产生的一些思考。

    零散的思绪.另外,推荐<剑指offer>.本文初期大部分思考都从剑指引发. 面试题不单单只是用来面试.其中有很多编程的经验可以学习.就如同我们当年的考试:) 1:鲁棒性的一个方面:边界条件 ...

  5. 《剑指Offer》面试题-二维数组中的查找

    题目1384:二维数组中的查找 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7318 解决:1418 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到 ...

  6. 剑指Offer——企业级项目中分层的含义与依据及多态的优势

    剑指Offer--企业级项目中分层的含义与依据及多态的优势   关于以上两点,由于项目经验较少,自己不是很明白,特整理如下. 常见分层架构模式 三层架构 3-tier architecture   微 ...

  7. 剑指Offer——知识点储备-JVM基础

    剑指Offer--知识点储备-JVM基础 1.java内存与内存溢出 1.1 JVM分为哪些区,每一个区干嘛的?(见java虚拟机38页) (1)程序计数器(线程私有) 当前线程执行字节码的信号指示器 ...

  8. 剑指Offer——滴滴笔试题+知识点总结

    剑指Offer--滴滴笔试题+知识点总结 情景回顾 时间:2016.9.18 15:00-17:00 地点:山东省网络环境智能计算技术重点实验室 事件:滴滴笔试   总体来说,滴滴笔试内容体量不算多, ...

  9. 剑指Offer——腾讯+360+搜狗校招笔试题+知识点总结

    剑指Offer--腾讯+360+搜狗校招笔试题+知识点总结 9.11晚7:00,腾讯笔试.选择题与编程.设计题单独计时. 栈是不是顺序存储的线性结构啊? 首先弄明白两个概念:存储结构和逻辑结构. 数据 ...

随机推荐

  1. SpriteBuilder弹出菜单层造成卡顿的解决办法

    如果你注意到略微的卡顿(延时)(lag due to low framerate)当显示一个全屏的弹出菜单时,你可以简单的设置_levelNode(_levelNode是主游戏界面中的背景层,所有游戏 ...

  2. Android Studio相关资料链接

     AndroidStudio中文社区:http://www.android-studio.org/index.php Android studio删除工程项目:http://www.linuxid ...

  3. 分别修改Cube每个面的贴图UV(Unity3D开发之十八)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/46611169 ...

  4. 【Qt编程】基于Qt的词典开发系列<十一>系统托盘的显示

    本文主要讨论Qt中的系统托盘的设置.系统托盘想必大家都不陌生,最常用的就是QQ.系统托盘以简单.小巧的形式能让人们较快的打开软件.废话不多说,下面开始具体介绍. 首先,新建一个Qt Gui项目,类型选 ...

  5. 链路层 - SLIP,PPP,

    最常使用的封装格式是RFC 894定义的格式.图2 - 1显示了两种不同形式的封装格式.图中每个方框下面的数字是它们的字节长度. 两种帧格式都采用48 bit(6字节)的目的地址和源地址( 8 0 2 ...

  6. 前端开发我为什么选择cordova

    cordova与phonegap有什么关系? phoengap 官方网址:http://phonegap.com 如果能了解一个框架的兴起还是一件比较有趣的事.08年一次ios开发者大会上来自Nito ...

  7. git rebase之前需要commit才行

    更新好本地代码后,git fetch, 接着合并,但是git rebase 不行, git status一看,有很多更新的文件. 于是 git add --后,再rebase,还是不行. 注意,reb ...

  8. android studio设置代理更新

    我们都知道Android Studio是基于IDEA开发的,而我们写的每一个程序又都是有Gradle构建的,Gradle的优点可以说是很多,被很多程序员夸得没边,但是它有一个特点还是值得我们注意的.我 ...

  9. 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现

    归并排序的概念及定义 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列. 归并排序是建立 ...

  10. NopCommerce开源项目中很基础但是很实用的C# Helper方法

    刚过了个五一,在杭州到处看房子,不知道杭州最近怎么了,杭州买房的人这么多,房价涨得太厉害,这几年翻倍翻倍地涨,刚过G20,又要亚运会,让我这样的刚需用户买不起,也买不到房子,搞得人心惶惶,太恐怖了,心 ...