剑指offer
Posted yksgzlyh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer相关的知识,希望对你有一定的参考价值。
1、在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
1 class Solution { 2 public: 3 bool Find(int target, vector<vector<int> > array) { 4 5 int row = (int)array.size(); 6 int col = (int)array[0].size(); 7 if (row == 0 || col == 0) 8 return false; 9 if (target < array[0][0] || target > array[row - 1][col - 1]) 10 return false; 11 int i = row - 1; 12 int j = 0; 13 while (i >=0 && j <col) 14 { 15 if (array[i][j] > target) 16 { 17 i--; 18 } 19 else if (array[i][j] < target) 20 { 21 j++; 22 } 23 24 else 25 26 return true; 27 28 } 29 return false; 30 } 31 };
2、请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
1 class Solution { 2 3 public: 4 void replaceSpace(char *str,int length) { 5 int i=length-1,j,count=0; 6 while(i>=0){ 7 if(str[i]==‘ ‘){ 8 for(j=length;j>=i;j--){ 9 str[j+2]=str[j]; 10 } 11 str[i]=‘%‘; 12 str[i+1]=‘2‘; 13 str[i+2]=‘0‘; 14 length+=2; 15 } 16 i--; 17 } 18 } 19 20 21 };
3、输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
1 class Solution { 2 public: 3 vector<int> printListFromTailToHead(ListNode* head) { 4 vector <int> result; 5 stack<int> arr; 6 ListNode* p=head; 7 while(p!=NULL) 8 { 9 arr.push(p->val); 10 p=p->next; 11 } 12 int len=arr.size(); 13 for(int i=0;i<len;i++) 14 { 15 result.push_back(arr.top()); 16 arr.pop(); 17 } 18 return result; 19 20 21 } 22 };
以上是关于剑指offer的主要内容,如果未能解决你的问题,请参考以下文章
剑指 Offer(第 2 版)完整题解笔记 & C++代码实现(LeetCode版)
LeetCode(剑指 Offer)- 14- I. 剪绳子
LeetCode(剑指 Offer)- 14- I. 剪绳子
剑指 Offer 45. 把数组排成最小的数 剑指 Offer 61. 扑克牌中的顺子 剑指 Offer 40. 最小的k个数