剑指offer
will的猜想
这个作者很懒,什么都没留下…
展开
-
剑指Offer—编程题4 ( 替换空格)
一、题目:替换空格题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。 在网络编程中,如果URL参数中含有特殊字符,如空格、'#'等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的规则是在'%'后面跟上ASCII码的两位十六进制的表示转载 2016-07-27 11:16:48 · 844 阅读 · 0 评论 -
剑指Offer—编程题9(斐波那契数列)
O(n)时间O(1)空间实现:[java] view plain copy print?public class Test09 { /** * 写一个函数,输入n,求斐波那契(Fibonacci) 数列的第n项 * @param n Fibonacci数的项数 * @return转载 2016-08-09 21:53:20 · 410 阅读 · 0 评论 -
剑指Offer—编程题24(二叉搜索树的后序遍历序列)
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true。否则返回false。假设输入的数组的任意两个数字都互不相同。解题思路:在后序遍历得到的序列中, 最后一个数字是树的根结点的值。数组中前面的数字可以分为两部分: 第一部分是左子树结点的值,它们都比根结点的值小: 第二部分是右子树结点的值,它们都比根结点的值大。代码实现:public c转载 2016-08-09 21:07:22 · 333 阅读 · 0 评论 -
剑指offer—编程题7(用两个栈实现一个队列)
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。代码如下:[java] view plain copy print?public class Test07 { /** *转载 2016-06-12 11:06:39 · 423 阅读 · 0 评论 -
剑指offer—编程题14(调整数组顺序使奇数位于偶数前面)
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位予数组的后半部分。这个题目要求把奇数放在数组的前半部分, 偶数放在数组的后半部分,因此所有的奇数应该位于偶数的前面。也就是说我们在扫描这个数组的时候, 如果发现有偶数出现在奇数的前面,我们可以交换它们的顺序,交换之后就符合要求了。因此我们可以维护两个指针,第一个指针初始化时指向数原创 2016-06-12 11:11:24 · 332 阅读 · 0 评论 -
剑指offer—编程题23(从上往下打印二叉树)
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左向右的顺序打印。二叉树结点的定义:public static class BinaryTreeNode { int value; BinaryTreeNode left; BinaryTreeNode right;}1234512345解题思路:这道题实质是考查树的遍历算法。从上到下转载 2016-06-12 11:24:33 · 397 阅读 · 0 评论 -
剑指Offer—编程题28(字符串的排列)
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc。则打印出由字符a、b、c 所能排列出来的所有字符串abc、acb、bac 、bca、cab 和cba 。解题思路:把一个字符串看成由两部分组成:第一部分为它的第一个字符,第二部分是后面的所有字符。在图4.14 中,我们用两种不同的背景颜色区分字符串的两部分。我们求整个字符串的排列,可以看成两步:转载 2016-06-12 15:13:02 · 297 阅读 · 0 评论 -
剑指Offer—编程题30(最小的k个数)
题目: 输入n个整数,找出其中最小的k个数。例子说明:例如输入4 、5 、1、6、2、7、3 、8 这8 个数字,则最小的4 个数字是1 、2、3 、4解题思路:解法一:O(n)时间算法,只有可以修改输入数组时可用。可以基于Partition函数来解决这个问题。如果基于数组的第k个数字来调整,使得比第k个数字小的所有数字都位于数组的左边,比第k个数字大的原创 2016-06-12 15:27:52 · 464 阅读 · 0 评论 -
剑指Offer—编程题31(连续子数组的最大和)
题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。例子说明:例如输入的数组为{1, -2, 3, 10, -4, 7, 2, -5},和最大的子数组为{3, 10, -4, 7, 2}。因此输出为该子数组的和18 。解题思路:解法一:举例分析数组的规律。我们试着从头转载 2016-06-12 15:47:25 · 1322 阅读 · 0 评论 -
剑指Offer—编程题42(翻转单词顺序)
题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字啊的顺序不变。为简单起见,标点符号和普通字母一样处理。举例说明例如输入字符串”I am a student. ”,则输出”student. a am I”。解题思路 第一步翻转句子中所有的字符。比如翻转“I am a student. ”中所有的字符得到”.tneduts a m a I”,此时不但翻转转载 2016-06-12 16:18:34 · 423 阅读 · 0 评论 -
剑指Offer—编程题10(二进制中1 的个数)
代码如下,请在JDK7及以上版本运行:[java] view plain copy print?public class Test10 { /** * 请实现一个函数, 输入一个整数,输出该数二进制表示中1的个数。 * 例如把9表示成二进制是1001 ,有2位是1. 因此如果输入9,该出2。原创 2016-07-14 14:38:15 · 367 阅读 · 0 评论 -
剑指Offer—编程题15(链表中倒数第k个结点)
题目:输入一个链表,输出该链表中倒数第k 个结点.为了符合大多数人的习惯,本题从1 开始计数,即链表的尾结点是倒数第1 个结点.例如一个链表有6 个结点,从头结点开始它们的值依次是1 、2、3、4、5 、6。这个个链表的倒数第3 个结点是值为4 的结点.链表结点定义如下:public static class ListNode { int value; ListNode原创 2016-07-26 19:58:19 · 331 阅读 · 0 评论 -
剑指Offer—编程题56(链表中环的入口地址)
题目:一个链表中包含环,如何找出环的入口结点?解题思路 可以用两个指针来解决这个问题。先定义两个指针P1和P2指向链表的头结点。如果链表中环有n个结点,指针P1在链表上向前移动n步,然后两个指针以相同的速度向前移动。当第二个指针指向环的入口结点时,第一个指针已经围绕着环走了一圈又回到了入口结点。 剩下的问题就是如何得到环中结点的数目。我们在面试题15的第二个相关题目时原创 2016-07-26 20:12:36 · 313 阅读 · 0 评论 -
剑指offer64—矩阵中路径
问题描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一原创 2016-09-03 14:44:38 · 372 阅读 · 0 评论