char* _strcpy(char* dest, const char* src) { assert(dest != NULL && src != NULL); if (dest == src) ret…
分类:剑指offer
指针首尾并进
快排分割数组首尾的实现方式。 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。 输入一个增序数组和一个数sum,在数组中找到两个数,使得和为s…
特殊数字
如果两个数a和b,a的所有真因数之和等于b,b的所有真因数之和等于a,则称a,b是一对亲和数。求50000以内的所有亲和数,真因数不包括本身。 只有1和本身作为因子的数称作素数。求1000以内的所有素数,习惯上1不作为素…
回文判断
参考:http://zhedahht.blog.163.com/ 判断一个字串是否是回文。 输入一个字符串,输出该字符串中最长的回文子字符串的长度。 1、思路: 只要从两头开始同时向中间扫描字串,如果直到相遇两端的字…
字符串旋转
参考:http://zhedahht.blog.163.com/ 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。要求…
字符替换和删除
参考:http://zhedahht.blog.163.com 请实现一个函数,把字符串中的每个空格替换成%20。 输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符。 1、思路: 两题遇到的问题都是无论是…
遍历重构
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 把一个有序整数数组放到一棵二叉树中,要求树的高度最小。 1、思路: 前序遍历的第一个是根结…
后序遍历
输入一棵二叉树的根节点,求该树的深度即最长路径。 输入一颗二叉树的根节点,判断是否是平衡二叉树。 求二叉树中节点的最大距离。 1、思路: 根结点的高度等于左右子树中大者+1,也就是说先算完左右子树的高度之后再算根节点…
中序遍历
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 1、思路: 二叉搜索树的一大特点就是中序遍历可以将二叉搜索树从小到大排列。需要维护一个变量存放前一个访问到的元素,使该元素的右指针指向当前节点,当前节点的…
先序遍历
参考:http://zhedahht.blog.163.com/ 请完成一个函数,输入一个二叉树,输出它的镜像。 输入两颗二叉树A和B,判断B是不是A的子结构。 输入一棵二叉树和一个整数,打印出二叉树中结点值和为该整数的…
环形链表中最后剩下的数字
list 题目:0,1,…,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第n个数字。求出这个圆圈里剩下的最后一个数字。 思路:可以用list来模拟环形链表,当迭代器达到end时(end是超出…
复杂链表
sibling链表:链表的节点信息,除了next的指向以外,还有sibling的指向。请复制该链表。 带环链表:一个单链表(带环),如何找到环的入口点。 环形链表:0、1…n-1这n个数字排成一个圆圈,从数字…