![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
文章平均质量分 66
dutsoft
这个作者很懒,什么都没留下…
展开
-
将字符串中连续出现的重复字母进行压缩
/*通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。 2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。要求实现原创 2014-05-19 20:08:35 · 4039 阅读 · 0 评论 -
让数组中奇数位于偶数的前面
让数组中基数位于偶数的前面,用快排的思想解决。原创 2014-05-23 16:04:10 · 703 阅读 · 0 评论 -
数组中最小的K个数
思路:1、排序,取前k个元素;O(NlogN);2、分治,O(n),利用快排的思想;3、用set 维护最小的k个数,O(NlogK),可处理海量数据。原创 2014-05-23 14:48:03 · 1060 阅读 · 0 评论 -
数组中出现次数超过一半的数字
若数组中出现次数超过数组长度一半的数字,请找出这个数字。原创 2014-05-23 11:22:40 · 1036 阅读 · 0 评论 -
在O(1)时间删除链表结点
删除链表结点注意保证链表不会断开。删除的节点是尾结点时,并不能保证是O(1)时间。但平均下来时间复杂度仍然保持在O(1)。原创 2014-05-23 16:56:52 · 711 阅读 · 0 评论 -
题目32:1-N整数中“1”出现的个数
题目:给定一个十进制正整数N,计算从1kaish原创 2014-08-21 18:08:51 · 415 阅读 · 0 评论 -
题目21:包含min()方法的栈
import java.util.Random;import java.util.Stack;public class StackWithMin extends Stack { Stack stack; public StackWithMin(){ stack=new Stack(); } public void push(int value){ if(value<原创 2014-07-11 08:58:24 · 403 阅读 · 0 评论 -
用两个栈实现队列
用两个栈实现队列。原创 2014-05-21 15:45:54 · 632 阅读 · 0 评论 -
二进制整数中1的个数
#include using namespace std;int NumberOf1_1(int n){ int count=0; while(n){ if(n&1) count++; n=n >> 1; } //当n为负数时,会出现死循环,故此法不可取 return count;}int NumberOf1(int原创 2014-05-21 16:59:06 · 521 阅读 · 0 评论 -
用堆排序将整形无序数组排序
堆排序分为两个阶段:1、将原始数组组装成一个堆;2、从堆顶逐个取出元素并得到排序结果。(如果是最大堆,则是重复删除最大元素,然后从后往前放入到数组。)用sink()只需扫描数组中的一半元素。堆排序可以不需要额外的空间,最优的利用空间和时间。可用于嵌入式系统。缺点:无法利用缓存,影响缓存命中。原创 2014-05-11 21:19:28 · 1210 阅读 · 0 评论 -
根据前序和中序重建二叉树
注意:1、仅根据前序和后序无法构建唯一的二叉树;2、二叉树前序遍历,第一个数字总是树的根节点的值;3、中序遍历中,根节点的值在序列的中间,左子树的值子在根节点的值得左边,右字树的值在根节点的值得右边;4、思路:递归原创 2014-05-21 15:13:46 · 1230 阅读 · 0 评论 -
判断字符串s2能否由s1旋转得到
* 判断s2能否由s1旋转得到 * 已知isSunString函数,但只能调用一次 * 思路:s1=xy; s2=yx;令s1=s1+s1=xyxy;则s2必为s1的子串原创 2014-05-20 20:05:39 · 1400 阅读 · 0 评论 -
递增二维数组中的查找
* 二维数组从左到右,从上到下递增 * 查找输入的数,效率尽可能高 * 思路:从右上角或左下角开始查找原创 2014-05-21 13:36:34 · 945 阅读 · 0 评论