在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
class Solution {
public:
bool Find(int target, vector<vector<int> > array)
{
int r = 0;
int c = array.size() - 1;
int rows = array[0].size();
while(c >= 0 && r <= rows - 1)
{
if(array[r][c] == target)
{
return true;
}
else if(target < array[r][c])
{
c--;
}
else
{
r++;
}
}
return false;
}
};
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char *str,int length)
{
if(str == NULL)
{
return;
}
int count = 0;
int num = 0;
int index = 0;
char *temp = new char[strlen(str) + 1];
strcpy(temp,str);
while(str[num] != '\0')
{
if(str[num] == ' ')
{
count++;
}
num++;
}
if((num + 2 * count) > length)
{
return;
}
char *ptr = new char[num + 2 * count];
for(int i = 0; i < num; i++)
{
if(temp[i] == ' ')
{
ptr[index] = '%';
ptr[index + 1] = '2';
ptr[index + 2] = '0';
index = index + 3;
}
else
{
ptr[index++] = temp[i];
}
}
ptr[index] = '\0';
strcpy(str,ptr);
}
};
输入一个链表,从尾到头打印链表每个节点的值
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head)
{
ListNode* p = head;
stack<int> node;
vector<int> result;
if(head == NULL) return result;
int length = 0;
while(p != NULL)
{
length++;
node.push(p->val);
p = p->next;
}
for(int i = 1; i <= length; i++)
{
result.push_back(node.top());
node.pop();
}
return result;
}
};