
剑指offer
huizxhhui1994
这个作者很懒,什么都没留下…
展开
-
python刷题日记:剑指offer-矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?解题思路这道题和上面题跳台阶类似,你列举出前几个状态值后,发现还是斐波那契数列,这里就不多说了。代码# -*- coding:utf-8 -*-class Solution: def rectCover(self, number)原创 2018-03-31 16:24:15 · 202 阅读 · 0 评论 -
python刷题日记:剑指offer-重建二叉树(附中序与后序)
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路从前序第一个元素中可以找到根节点,并根据根节点在中序中找到左右子树,并一次递归子树寻找。(pop这个方法很好用,我在网上看来的)原创 2018-04-11 13:41:10 · 354 阅读 · 0 评论 -
python刷题日记:剑指offer-反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。解题思路倒序输出,用一个新链表,通过尾插法插入即可。代码# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solutio原创 2018-04-03 23:29:52 · 268 阅读 · 0 评论 -
python刷题日记:剑指offer-合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路这题不难吧,直接给一个新链表,通过头插法插入即可,当一个链表都加入完毕后,注意要把另一个链表的剩余值导入新链表内。ps:该代码中一定需要pHead间接赋值,然后把头结点去掉代码# -*- coding:utf-8 -*-# class ListNode:#原创 2018-04-03 23:27:59 · 263 阅读 · 0 评论 -
python刷题日记:剑指offer-链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。解题思路这题和之前倒序打印链表同理,这里就不多说了.不过这里求的是结点,不是val。这点要注意,不要把val赋给list了代码# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next...原创 2018-04-02 23:36:32 · 191 阅读 · 0 评论 -
python刷题日记:剑指offer-调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路传统方法应该是给两个一前一后指针,遇到前偶数与后奇数时,就交换。然而我发现一个更简便的方法,就是给两个列表,奇偶分开放,最后连起来代码# -*- coding:utf-8 -*-clas原创 2018-04-02 23:00:02 · 425 阅读 · 1 评论 -
python刷题日记:剑指offer-数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。解题思路这题还没有摸清到底想考察什么,虽然解出来很容易 。——————继续理解中代码# -*- coding:utf-8 -*-class Solution: def Power(self, base, exponent): # w原创 2018-04-01 22:54:38 · 206 阅读 · 0 评论 -
python刷题日记:剑指offer-二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路这道题我想了半天,没成功,最后找大神了解,发现有技巧。一。首先要判断n正负,若为负,向左移位时最高位加1。因此可以把最高位的1改为0,通过n & 0x7FFFFFFF修改,这样负数就改为正数了,除了最高位的1变为了0.二。如果一个整数不为0,那么这个整数至少有一位是1。如果我原创 2018-04-01 04:03:10 · 206 阅读 · 0 评论 -
python刷题日记:剑指offer-变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路这道题其实用一下数学归纳法就可以看出来,是2**(n-1)种。代码# -*- coding:utf-8 -*-class Solution: def jumpFloorII(self, number): # write co原创 2018-03-31 16:43:45 · 262 阅读 · 0 评论 -
python刷题日记:剑指offer-二维数组的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:这题肯定不能按顺序暴力破解....想了想发现从右上角或左下角开始搜索最好,这样比较大小时,移动的方向不会有重叠,减小循环量(若其中有值的话),后来看了大神们的代码,感觉还是需要有所简化。我的代码:# -*- codi...原创 2018-03-28 21:57:08 · 248 阅读 · 0 评论 -
python刷题日记:剑指offer-替换空格
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路这道题用python,一句话就出来了...用一个replace函数就能够进行字符的替换。用其他语言的话,我估计是要遍历的。代码:# -*- coding:utf-8 -*-class Solution: # s 源字符串...原创 2018-03-28 22:29:30 · 226 阅读 · 0 评论 -
python刷题日记:剑指offer-从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。解题思路python的优点又体现了,可以利用[-1]进行倒序输出,若使用其他语言,应该需要用到栈递归的方法。代码# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x#原创 2018-03-29 14:49:14 · 178 阅读 · 0 评论 -
python刷题日记:剑指offer-旋转数组的最小
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路一开始我以为这道题还需要判断这个输入数组是不是原非递减数组的旋转,所以进行了循环判断,在取原创 2018-03-29 15:34:23 · 295 阅读 · 0 评论 -
python刷题日记:剑指offer-斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n解题思路这道题看起来用递归的方法很快可以解决,但是考虑到递归会多次调用函数,导致内存过大,因此我认为更适合使用循环累加。代码# -*- coding:utf-8 -*-class Solution: def Fibonacci(s原创 2018-03-30 22:51:37 · 198 阅读 · 0 评论 -
python刷题日记:剑指offer-跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路这道题我一开始还认为应该是类似于求迷宫路径的题,但怎么做都不对,最后还是选择找了点提示,原来列举出前几个值,可以发现,与斐波那契数列是对应的(n=0时,f(0)=1),因此和前面一题:斐波那契数列一样的方法。代码# -*- coding:utf-8 -*-class原创 2018-03-30 23:14:08 · 155 阅读 · 0 评论 -
python刷题日记:剑指offer-栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路: 借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元...原创 2018-05-25 19:00:24 · 995 阅读 · 0 评论