
剑指offer
一天学习一兜兜
这个作者很懒,什么都没留下…
展开
-
旋转数组的最小数字
文章目录一、题目二、代码实现1.思考过程2.读入数据总结一、题目> 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。数组中可能存在重复数字。二、代码实现1.思考过程 旋转之后的数组实际上可以划分为两个排序的子数组,而且前面子数组的元素都大于或者等于后面子数组的元素。注原创 2021-07-13 11:42:49 · 120 阅读 · 0 评论 -
实现替换空格
文章目录一、题目二、代码实现1.思考过程2.代码总结一、题目 请实现一个函数,把字符串中的每个空格替换成"%20"。例如,输入"We are happy.", 则输出"We%20are%20happy."二、代码实现1.思考过程 可以先遍历一次字符串,这样就能统计出字符串空格的总数,并可以由此计算出替换之后的字符串的总长度。每替换一个空格,长度增加2,因此替换以后字符串的长度等于原来的长度加上2乘以空格数目。2.代码代码如下(示例):/ leng 为字符数组string 的总容量vo原创 2021-07-12 16:52:26 · 135 阅读 · 0 评论 -
字符串介绍
文章目录一、字符串二、问题和答案1.面试题2.答案总结一、字符串 C/C++中每个字符串都以字符’\0’作为结尾,这样我们就能很方便地找到字符串的最后尾部。但由于这个特点,每个字符串中都有一个额外字符的开销,稍不留神就会造成字符串的越界。二、问题和答案1.面试题代码如下(示例):int _tmain(int argc, _TCHAR* argv[]){ char str1[] = "hello world"; char str2[] = "hello world"; char* s原创 2021-07-11 10:44:09 · 186 阅读 · 0 评论 -
二维数组中的查找
文章目录一、题目二、代码实现1.思考过程2.代码实现总结一、题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。二、代码实现1.思考过程 要求时间复杂度O(M+N),空间复杂度O(1)。其中M为行数,N为列数。该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角或左下角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当原创 2021-07-10 17:50:46 · 117 阅读 · 0 评论 -
不修改数组找出重复的数字
文章目录一、题目二、代码实现1.思考过程2.代码总结一、题目 在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数组。例如,如果输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者数字3。二、代码实现1.思考过程 使用二分查找,时间复杂度O(nlogn)。不允许使用额外空间,也不允许修改原数组,因而无法排序。但是题中限定数据范围为[1,n],而序列1,2,...,n是有原创 2021-07-10 11:27:31 · 166 阅读 · 0 评论 -
数组中重复的数字
<文章目录一、题目二、代码实现1.思考过程2.代码总结一、题目在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。要求时间复杂度O(N),空间复杂度为O(1)。二、代码实现1.思考过程对于这种数组元素在[0,n-1]范围内的问题,可以将值为i的元素调整到第i个位置进行求解。如果第i原创 2021-07-10 10:53:30 · 103 阅读 · 0 评论 -
数组和指针的大小
文章目录前言一、代码实现二、答案前言数组和指针是既相关关联又有区别的两个概念。当我们声明一个数组是,其数组的名字也是一个指针,该指针指向数组的第一个元素。我们可以用一个指针来访问数组。值得注意的是,C/C++没有记录数组的大小,因此在用指针访问数组中的元素时,程序员要确保没有超出数组的边界。一、代码实现int getSize(int data[]) { return sizeof(data);}int _tmain(int argc,_TCHAR* argv[]) { int dat..原创 2021-07-10 10:16:03 · 1048 阅读 · 0 评论 -
赋值运算符函数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、题目二、代码实现总结一、题目如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString {public: CMyString(char* pData = nullptr); CMyString(const CMyString& str)' ~CMyString(void);private: char* pData;}二、代码实现代码如下(示例):CMyS原创 2021-07-09 16:47:35 · 121 阅读 · 0 评论