![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer刷题
天喵喵儿
这个作者很懒,什么都没留下…
展开
-
剑指offer刷题(十七)二叉树的镜像
二叉树的镜像(python)题目操作给定的二叉树,将其变换为源二叉树的镜像。描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 ...原创 2020-08-08 09:24:53 · 115 阅读 · 1 评论 -
剑指offer刷题(十五)合并两个排序的链表
合并两个排序的链表(python)题目输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路由于两个链表都是递增的,所以每次共同比较两个链表中最小的值,把比较小的值插入到新的链表中,一直循环,直到某个链表为空,再把另外一个不为空的链表插入到新的链表中。代码class Solution: # 返回合并后列表 def Merge(s...原创 2020-04-09 18:22:08 · 77 阅读 · 0 评论 -
剑指offer刷题(十四)反转链表
反转链表(python)题目输入一个链表,反转链表后,输出新链表的表头。思路用到三个指针,目的是改变指针指向代码class Solution: # 返回ListNode def ReverseList(self, pHead): # write code here #指针pre记录当前结点的前一个结点 pre = None...原创 2020-03-26 14:43:56 · 105 阅读 · 0 评论 -
剑指offer刷题(十三)链表中倒数第k个结点
链表中倒数第k个结点(python)题目输入一个链表,输出该链表中倒数第k个结点。思路用两个指针,指针p、q最开始都指向 head,p 先向右移动 k 位,然后 p 和 q 再一起同步向右移动,当 p 到达边界时(p指向空), q 正好指向了倒数第 k 个结点做完这些还不能通过牛客网的测试,因为出现了 k 会大于整个链表长度的情况,因此在 p 向右边移动的时候做出判断,如果在移动到 k ...原创 2020-03-26 14:41:07 · 96 阅读 · 0 评论 -
剑指offer刷题(十二)调整数组顺序使奇数位于偶数前面
调整数组顺序使奇数位于偶数前面(python)题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路1遍历数组,遇到奇数忽略,遇到偶数后,首先将该偶数加到数组末尾,再删掉该偶数代码class Solution: def reOrderArray(self, ...原创 2020-03-26 14:39:20 · 74 阅读 · 0 评论 -
剑指offer刷题(十一)二进制中1的个数
二进制中1的个数(python)题目输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路在python中负数不是以补码存储的,所以用 n & 0xffffffff 把该数字转化成补码形式,参考查看 【Python 对于负数的存储方式和 c++/c/java 不一样】关于二进制中 1 的个数的求法,有一个小技巧:一个非 0 的数字至少有一位为1该数字减去 1 ...原创 2020-03-26 14:37:01 · 117 阅读 · 0 评论 -
剑指offer刷题(十)矩阵覆盖
矩阵覆盖(python)题目我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:思路本质上是斐波那契数列,和跳台阶那题思路一样 跳台阶代码class Solution: def rectCover(self, number): # write ...原创 2020-03-26 14:34:28 · 113 阅读 · 0 评论 -
剑指offer刷题(九)变态跳台阶
变态跳台阶(python)题目一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路是斐波那契数列和跳台阶得升级版,详情在上篇和上上篇博客。采用和跳台阶一样的分析方法:记跳n级台阶的跳法有 f(n) 种,如果最后一次跳了 1 级,那么一共的跳法是 n-1 级台阶的跳法,即 f(n-1),如果最后一次跳了 2 级,那么一共的...原创 2020-03-17 14:00:46 · 115 阅读 · 0 评论 -
剑指offer刷题(八)跳台阶
跳台阶(python)题目一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路本质上是斐波那契数列。记跳n级台阶的跳法有 f(n) 种,如果最后一次跳了两级,那么一共的跳法是 n-2 级台阶的跳法,即 f(n-2),如果最后一次跳了一级,那么一共的跳法是 n-1 级台阶的跳法,即 f(n-1),那么 n 级台阶的...原创 2020-03-17 13:08:10 · 95 阅读 · 0 评论 -
剑指offer刷题(七)斐波那契数列
斐波那契数列(python)题目大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39什么是斐波那契数列?指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上定义为:F(1)=1, F(2)=1, F(3)=2, F(4)=3 …… F(n) = F(n - 1) + F(n - 2)思路 1(递归...原创 2020-03-15 14:38:55 · 144 阅读 · 0 评论 -
剑指offer刷题(六)旋转数组的最小数字
旋转数组的最小数字(python)题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路(二分法)left = 0right = len(L) - 1...原创 2020-03-12 16:33:10 · 77 阅读 · 0 评论 -
剑指offer刷题(五)用两个栈实现队列
用两个栈实现队列(Python)题目用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路栈:先进后出队列:先进先出栈1为入队队列栈2为出队队列。当栈2为空时且栈1不为空时,把栈1中的元素一个个出栈然后压进栈2,最后栈2元素一个个出栈。代码class Solution: def __init__(self): self...原创 2020-03-11 12:57:58 · 99 阅读 · 0 评论 -
剑指offer刷题(四)重建二叉树
重建二叉树(Python)题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路(递归)遍历顺序的命名取决于根节点所在位置:前序遍历:根结点 —> 左子树 —> 右子树中序遍历:左子树—...原创 2020-03-08 13:39:36 · 122 阅读 · 0 评论 -
剑指offer刷题(三)从尾到头打印链表
从尾到头打印链表(Python)题目输入一个链表,按链表从尾到头的顺序返回一个ArrayList。思路1创建一个列表,把链表里的元素从头到尾依次放入列表中,然后反转列表class Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): # write...原创 2020-03-07 17:02:04 · 88 阅读 · 0 评论 -
剑指offer刷题(二)替换空格
替换空格(python)题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路1(创建新字符串)创建一个新字符串ss, 遍历原字符串,如果遇到空格则将‘%20’加入新字符串,否则将遍历到的非空字符加入新字符串ssclass Solution: # s 源字符串 ...原创 2020-03-06 17:11:39 · 139 阅读 · 0 评论 -
剑指offer刷题(一)二维数组中的查找
二维数组中的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路(右上角开始)该二维数组特性是数字大小每一行从左到右递增,每一列从上到下递增。因此可以从右上角开始遍历:该数字大于目标数字target,则该行前面可能有目标数字tar...原创 2020-03-05 13:49:57 · 121 阅读 · 0 评论