
剑指offer
destination00
这个作者很懒,什么都没留下…
展开
-
排序二维数组的查找
在一个二维数组中,每一行都按从左到右递增的顺序排列,给定一个整数,查找数组中书否有和该数字相等的数字;思路:从右上角开始比较,逐次向右下角靠近。代码如下:bool Find(int* matrix,int rows,int columns,int number){ bool found=false; if(matrix!=NULL&&rows>0&am...原创 2019-06-11 11:20:47 · 221 阅读 · 0 评论 -
字符串指针与字符串数组
C/C++中每一个字符串都以‘\0’结尾,以方便找出字符串的尾部。但由于这个特点,会存在额外的开销,不小心导致越界的情况。如下面的代码:char str[10];strcpy(str,"0123456789");"0123456789"看起来只有十个字符,但是我们在复制的时候需要在字符串的末尾加上’\0’,因此要正确复制该字符串,至少需要一个长度为11个字节的数组。为了节省内存,C/C+...原创 2019-06-11 12:41:52 · 2662 阅读 · 1 评论 -
字符串替换空格
请实现一个函数,把字符串中的每个空格替换成‘%20’,例如:输入"we are happy",则输出"we%20are%20happy"。要求算法时间复杂度O(n);思路:从字符串的后面开始插入替换字符;首先遍历整个字符串得到插入后的总长度和空格的个数,再用两个指针分别指向:p1指向替换前字符串的末尾,p2指向替换后字符串的末尾;当p1指向不是空格时,将其内容插入p2所在内存;当p1指...原创 2019-06-11 15:56:57 · 293 阅读 · 0 评论 -
从尾到头打印一个单链表
输入一个单链表的头结点,从尾到头打印整个链表每个节点的值两种思路:1.不破坏单链表的结构,用栈或者递归的方式实现反转打印;2.反转整个链表,再打印每个节点的值。(1)利用栈的数据结构来实现void PrintList_reverse(ListNode* head){ std::stack<ListNode*> nodes; ListNode* p=head; whil...原创 2019-06-11 16:33:54 · 443 阅读 · 0 评论