剑指offer刷题记录
Posted yunlambert
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer刷题记录相关的知识,希望对你有一定的参考价值。
[TOC]
二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:从右上角的元素进行判断,如果大于target说明这一列肯定都不是,所以将列数见一;如果小于target说明可能在下一行是等于target的,所以这一行都不是解,所以将行数加1.这样通过一个循环进行判断即可。
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
if(!array.empty())
{
int row=array.size();
int col=array[0].size();
int a=0;
int b=col-1;
while(a<row && b>=0)
{
if(array[a][b]==target)
return true;
else if(array[a][b]>target)
{
b--;
}
else
a++;
}
}
return false;
}
};
替换空格
python一行可以搞定:
# -*- coding:utf-8 -*-
class Solution:
# s 源字符串
def replaceSpace(self, s):
# write code here
return s.replace(" ","%20")
再回到C++解法上:
本来的想法是用一个新的str2来将所有的字符转好,最后把str2的地址赋值给str的,这样函数查询str其实就是查询已经赋值的str2;但是果然想法还是naive....数组会越界......附上错误代码:
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str==NULL)
return ;
char *str2;
//char *str2=(char*)malloc(sizeof(char));
int j=0;
string space="%20";
for(int i=0;str[i]!='