算法
如果一切再重来
两耳不闻窗外事
展开
-
替换空格 将一个字符串中的空格替换成“ ”
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。第一次看到的时候,以为看错了,这也忒简单了,python 的replace,java的replaceAll,轻松完成!当然,不可能那么简单的。算法菜鸟还是看看别人的思路吧,真的是佩服,哎,算法之路漫漫!原创 2017-02-16 15:24:05 · 2626 阅读 · 2 评论 -
从上往下打印二叉树,层次遍历
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:借助一个队列实现。/** * 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路:借助一个队列实现 * * @author XIAO * */public class TreeNodePrint { public ArrayList PrintFromTopToBottom(Tre原创 2017-02-21 19:17:50 · 638 阅读 · 0 评论 -
栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元原创 2017-02-21 16:32:02 · 1148 阅读 · 0 评论 -
定义栈的数据结构
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。本以为让自己实现数据结构Stack,一看别人提交的都是直接用java的栈。好吧,那就很简单了。/** * 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 * * @author XIAO * */public class StackMin { Stack原创 2017-02-21 16:06:58 · 1251 阅读 · 0 评论 -
操作给定的二叉树,将其变换为源二叉树的镜像。
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5原创 2017-02-21 15:06:35 · 3980 阅读 · 0 评论 -
输入两颗二叉树A,B,判断B是不是A的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:参考剑指offer1、首先设置标志位result = false,因为一旦匹配成功result就设为true,剩下的代码不会执行,如果匹配不成功,默认返回false2、递归思想,如果根节点相同则递归调用DoesTree1HaveTree2(),如果根节点不相同原创 2017-02-21 11:35:56 · 2407 阅读 · 0 评论 -
合并两个有序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:递归和非递归两种。递归很好理解:每次取list1,或者list2中的小的那个。public ListNode Merge(ListNode list1,ListNode list2) { if(list1 == null){ retu原创 2017-02-21 10:48:06 · 505 阅读 · 0 评论 -
反转链表后,输出链表的所有元素。
题目描述输入一个链表,反转链表后,输出链表的所有元素。思路在代码里:public class ListNodeReverse { public ListNode ReverseList(ListNode head) { if (head == null) return null; ListNode newHead = null; ListNode pNo原创 2017-02-20 23:09:41 · 1081 阅读 · 0 评论 -
输出链表中倒数第k个结点。
题目描述输入一个链表,输出该链表中倒数第k个结点。思路如下:1.最容易想到的解法,先计算总的节点数,然后一个一个的往后走,知道倒数第K个,java代码如下:public class ListNodeK { public ListNode FindKthToTail(ListNode head, int k) { if (head == null) retur原创 2017-02-20 22:17:22 · 577 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数的前面
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。看了别人的思路,类似于快速排序,思路:下面来自于:http://blog.csdn.net/jsqfengbao/article/details/47185277 要求把奇数放在数组的前半部分,偶数放在数组的后半部分,因此所原创 2017-02-20 12:04:18 · 744 阅读 · 0 评论 -
矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路:时间上仍然是一个菲波那切数列,具体分析如下:2*n的大矩形,和n个2*1的小矩形其中target*2为大矩阵的大小有以下几种情形:1.target 2.target = 1大矩形为2*1,只有一种摆放方原创 2017-02-20 10:19:03 · 553 阅读 · 0 评论 -
青蛙跳上一个n级的台阶总共有多少种跳法
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:前提是n个台阶会有一次n阶的跳法。分析如下:f(1) = 1f(2) = f(2-1) + f(2-2) //f(2-2) 表示2阶一次跳2阶的次数。f(3) = f(3-1) + f(3-2) + f(3-3) ...f(原创 2017-02-19 12:59:15 · 3029 阅读 · 0 评论 -
青蛙跳上一个n级的台阶总共有多少种跳法
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。仔细分析,其实这是一个斐波那契数列,从第n阶分析,跳到第n阶可以从第n-1阶和第n-2阶跳,这两种的跳法都不同,故可以得到step(n) = step(n-1)+step(n-2).所以仍然是斐波那契数列。只是初始化的值不同而已。def jumpFloor(number原创 2017-02-19 00:00:29 · 1394 阅读 · 0 评论 -
要求输入一个整数n,请你输出斐波那契数列的第n项 python实现
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n使用递归的思路:def Fibonacci( n): if n == 0: return 0 elif n == 1: return 1 numfn1 = 0 numfn2 = 1 for i i原创 2017-02-18 22:46:25 · 20091 阅读 · 0 评论 -
旋转数组的最小数字 python
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路参考:http://blog.csdn.net/snow_7/art原创 2017-02-18 20:42:37 · 4245 阅读 · 0 评论 -
输入一个链表,从尾到头打印链表每个节点的值。
题目描述输入一个链表,从尾到头打印链表每个节点的值思路:利用stack栈的特点,先把链表中节点的值压入栈,然后出栈。/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this原创 2017-02-17 15:52:47 · 557 阅读 · 0 评论 -
用两个栈来实现一个队列,完成队列的Push和Pop操作
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。这个用python不知道怎么做,就用java吧,参考大神思路用两个栈实现一个队列的功能?要求给出算法和思路!:入队:将元素进栈A出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈; 如果不为空,栈B直原创 2017-02-17 15:16:11 · 1699 阅读 · 0 评论 -
二维有序数组的查找 python解决
一点一点的进步 题目是 在:https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&tqId=11154&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking原创 2017-02-16 00:23:43 · 2007 阅读 · 0 评论 -
测试字符串中是否包含重复字符
题目描述请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。测试样例:"aeiou"返回:True"BarackObama"返原创 2017-02-21 20:02:49 · 882 阅读 · 0 评论