- 博客(73)
- 资源 (4)
- 收藏
- 关注
原创 剑指offer(59):删除链表中重复的节点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
2016-04-30 15:59:57 721
原创 剑指offer(57):字符流中第一个不重复的字符
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。 如果当前字符流没有存在出现一次的字符,返回#字符。分析思路1:在文章 剑指offer(42):数组中只出现1次的数字曾提到一种思路,利用LinkedHashMap,可以保持输出顺序
2016-04-30 11:26:44 2034
原创 剑指offer(56):表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
2016-04-30 10:57:55 568
原创 剑指offer(55):正则表达式匹配
题目描述请实现一个函数用来匹配包括’.’和’*’的正则表达式。模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配。
2016-04-29 18:43:21 2155
原创 剑指offer(54):构建乘积数组
题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。
2016-04-29 17:02:09 445
原创 剑指offer(53):数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。
2016-04-29 16:29:45 674
转载 计算机原码、反码、补码详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法.
2016-04-29 12:33:27 42126 14
原创 剑指offer(50):计算1+2+...+n
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
2016-04-28 22:00:40 472
原创 剑指offer(49):约瑟夫环问题(圆圈中最后剩下的数字)
题目描述0,1,…,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里面删除第m个数字。求出这个圆圈里剩下的最后一个数字。
2016-04-28 20:23:03 997
原创 剑指offer(48):扑克牌的顺子
题目描述从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大王小王可以看成任意数字。
2016-04-28 18:51:21 356
原创 剑指offer(46):左转字符串
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,输入字符串”abcXYZdef”和数字3,输出循环左移3位后的结果,即“XYZdefabc”。
2016-04-28 15:53:00 417
原创 剑指offer(45):翻转句子中的单词顺序
题目描述输入一个英文句子,翻转句子中单词的顺序,但是单词内字符的顺序不变。标点符号和普通字母一样处理。 例如输入字符串”I am a student.”,输出”student. a am I”。
2016-04-28 12:23:00 655
原创 剑指offer(44):和为s的连续正数序列
题目描述输入一个整数s,打印出所有何为s的连续整数序列(至少含有两个数字)。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序。例如输入15,则有3个序列:1,2,3,4,5;4,5,6;7,8。
2016-04-28 10:38:17 360
原创 剑指offer(43):和为s的两个数字
题目描述输入一个递增排序的数组和一个数字s,在数组中查找两个数,是的它们的和正好是s。如果有多对数字的和等于s。输入任意一对即可。分析直接思路:遍历数组,去一个数字与该数字后面进行求和比较,如果和等于s则找到这两个数字,在有n个数字的数组中,时间复杂度为O(n2)O(n^2)。推荐解法:由于数组已经递增排序,借鉴“前后指针”的思想,使用“前后索引”,前索引初始指向0,后索引初始指向数组最后的元素,将
2016-04-28 09:29:44 436
原创 剑指offer(42):数组中只出现1次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
2016-04-27 21:31:54 668
原创 剑指offer(41):判断二叉树是否为平衡二叉树(AVL树)
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。分析平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
2016-04-27 21:02:56 1756
原创 剑指offer(40):二叉树的深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
2016-04-27 20:21:25 403
原创 剑指offer(39):数字在排序数组中出现的次数
题目描述统计一个数字在排序数组中出现的次数。例如输入排序数组{1, 2, 3, 3, 3, 3, 4, 5}和数字3,由于数字3在排序数组中出现了4次,则输出4。
2016-04-27 19:59:14 361
原创 剑指offer(37):数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
2016-04-27 16:21:05 1242
原创 剑指offer(36):第一个只出现一次的字符
题目描述在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始。
2016-04-27 11:20:43 448
原创 剑指offer(35):丑数
题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
2016-04-26 22:03:59 333
原创 剑指offer(34):把数组排成最小的数
题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
2016-04-26 21:25:12 505
原创 剑指offer(33):从1到n整数中1出现的次数
题目描述输入一个整数n,求从1到n这个整数的十进制表示中,1出现的的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。
2016-04-26 21:19:14 349
原创 剑指offer(32):连续子数组的最大和
题目描述输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)O(n)。
2016-04-26 20:46:52 519
原创 剑指offer(31):最小的k个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。
2016-04-26 20:33:06 278
原创 剑指offer(30):数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
2016-04-26 20:11:20 402
原创 剑指offer(29):字符串的排列
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
2016-04-26 19:57:23 366
原创 剑指offer(28):二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
2016-04-26 19:48:01 442
原创 剑指offer(27):复杂链表的复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向next下一个节点,另一个随机指针random指向任意一个节点)。
2016-04-26 18:55:58 356
原创 剑指offer(26):二叉树中和为某一值的路径
题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
2016-04-26 18:20:01 600
原创 剑指offer(25):二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。
2016-04-26 17:05:44 411
原创 剑指offer(23):栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。
2016-04-26 16:47:58 386
原创 剑指offer(22):包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。要求在该栈中,调用min、push、pop的时间复杂度都是O(1)。
2016-04-26 16:19:23 579
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人