剑指offer
Datawhale
一个开源的学习组织
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer_第1题_二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同) 每一行都按照从左到右递增的顺序排序 每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 理解 什么是二维数组? 实际上python当中没有数组的概念, 而是列表(List), 二维列表相当于二维数组 。 python中创建二维数组 import numpy a...原创 2018-08-22 14:09:24 · 1565 阅读 · 0 评论 -
剑指offer_第12题_数值的整数次方
题目描述 给定一个double类型的浮点数base和int类型的整数exponent。 求base的exponent次方。 解题思路 思路1 class Solution: def Power(self, base, exponent): return base**exponent 思路2 class Solution: def Power(...原创 2018-08-29 21:51:57 · 871 阅读 · 0 评论 -
剑指offer_第13题_调整数组顺序使奇数位于偶数前面
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分 并保证奇数和奇数,偶数和偶数之间的相对位置不变。 理解 合并两个列表 list与array互相转换 解题思路 思路1 class Solution: def reOrderArray(self, array): odd =...原创 2018-08-30 09:59:20 · 697 阅读 · 5 评论 -
剑指offer_第14题_链表中倒数第k个结点_Python
题目描述 输入一个链表,输出该链表中倒数第k个结点。 理解 链表详解 python数据结构之链表 解题思路 思路1 确定链表种结点个数lenth 倒数第k个结点就是第length-k+1个结点 需要考虑代码鲁棒性 链表是否为空—头结点不存在 k<=0 链表长度小于k class Solution: def FindKthToTail(self, head,...原创 2018-08-30 14:54:52 · 754 阅读 · 0 评论 -
剑指offer_第16题_合并两个排序的链表_Python
题目描述 输入两个单调递增的链表 输出两个链表合成后的链表 合成后的链表满足单调不减规则 解题思路 思路1 递归 def Merge(self, pHead1, pHead2): merge = None if pHead1 == None: return pHead2 elif pHead2 == ...原创 2018-09-11 16:13:43 · 550 阅读 · 0 评论 -
剑指offer_第17题_树的子结构_Python
题目描述 输入两棵二叉树A,B 判断B是不是A的子结构。 其中空树不是任意一个树的子结构 class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None 解题思路 思路1 class Solution: def ...原创 2018-09-11 18:29:49 · 670 阅读 · 0 评论 -
剑指offer_第18题_二叉树的镜像_Python
题目描述 将给定的二叉树,变换为其镜像 解题思路 思路1 递归 class Solution: # 返回镜像树的根节点 def Mirror(self, root): if root: root.left,root.right=root.right,root.left if root.left: ...原创 2018-09-11 21:33:31 · 630 阅读 · 0 评论 -
剑指offer_第15题_反转链表_Python
题目描述 输入一个链表,反转链表后,输出新链表的表头。 理解 怎么反转? 我要找到每个结点 改变每个结点的next原创 2018-09-09 23:04:29 · 1216 阅读 · 1 评论 -
剑指offer_第19题_顺时针打印矩阵_Python
题目描述 输入一个矩阵 按照从外向里以顺时针的顺序依次打印出每一个数字 例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. ...原创 2018-09-12 11:45:27 · 628 阅读 · 0 评论 -
剑指offer_第11题_二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数。 其中负数用补码表示。 理解 整数怎么转换为二进制 &amp;gt;&amp;gt;&amp;gt; bin(25) '0b11001' &amp;gt;&amp;gt;&amp;gt; bin(25).replace('0b','') '11001' 什么是补码 计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号原创 2018-08-29 20:56:14 · 1156 阅读 · 0 评论 -
剑指offer_第10题_矩形覆盖
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 理解 n个2*1的小矩形 覆盖 2*n的大矩形 覆盖方式:横着或者竖着 本质上还是斐波那契数列问题 矩形覆盖问题分析 F(0) = 0 F(1) = 1 F(2) = 2 F(n) = F(n-1) + F(n+1) (n>2) 解...原创 2018-08-29 13:57:52 · 763 阅读 · 0 评论 -
牛客网_剑指Offer_Python实现_更新中
剑指Offer编程题汇总 第1题_二维数组中的查找 第2题_替换空格 第3题_从尾到头打印链表 第4题_重建二叉树 第5题_用两个栈实现队列 第6题_旋转数组的最小数字 第7题_斐波那契数列 第8题_跳台阶 第9题_变态跳台阶...原创 2018-08-29 10:22:39 · 2112 阅读 · 0 评论 -
剑指offer_第2题_替换空格
题目描述 请实现一个函数: 将一个字符串中的每个空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 理解 如何对字符串进行替换操作 先看看字符串中有哪些方法 观察到s.replace(old,new)可以对字符串进行替换,所以自然有可我们的解题思路1 解题思路 思路1 class Solu...原创 2018-08-22 14:50:46 · 932 阅读 · 0 评论 -
剑指offer_第3题_从尾到头打印链表
题目描述 输入一个链表: 按链表值从尾到头的顺序返回一个ArrayList。 链表结构 class ListNode: def __init__(self, x): self.val = x self.next = None 理解 什么是链表 python数据结构之链表 解题思路 思路1 读取链表中每个元素,放入list中,再倒...原创 2018-08-22 17:00:26 · 887 阅读 · 0 评论 -
剑指offer_第4题_重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果 请重建出该二叉树 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 ...原创 2018-08-27 18:17:16 · 1019 阅读 · 0 评论 -
剑指offer_第5题_用两个栈实现队列
题目描述 用两个栈来实现一个队列 完成队列的Push和Pop操作 队列中的元素为int类型 理解 关于栈 什么是栈 栈的抽象数据类型 Python实现栈 关于队列 什么是队列 队列抽象数据类型 Python实现队列 解题思路 思路1 栈是有序的 LIFO,也就是后进先出。 队列是有序的FIFO,也就是先进先出。 当然无论是栈还是队列,在Python中一般都是用...原创 2018-08-28 09:47:04 · 630 阅读 · 0 评论 -
剑指offer_第6题_旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 给出的所有元素都大于0,若数组大小为0,请返回0。 ...原创 2018-08-28 16:30:21 · 700 阅读 · 0 评论 -
剑指offer_第7题_斐波那契数列
题目描述 现在要求输入一个整数n 输出斐波那契数列的第n项(从0开始,第0项为0)。 n&lt;=39 理解 斐波那契数列 因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, ...原创 2018-08-28 19:53:37 · 859 阅读 · 0 评论 -
剑指offer_第8题_跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。 求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果) 理解 完全蒙啊 那我们就用特例先分析一下 如果有1级台阶,那有1种 如果有2级台阶,那有2种 如果有3级台阶,那一定是先跳1级或者先跳2级,再跳到3级台阶上,跳1级后有2种,跳2级后有1种,共有3种跳法 如果是n级台阶呢,假设有F(n)种跳法,那一定也...原创 2018-08-28 21:34:02 · 768 阅读 · 0 评论 -
剑指offer_第9题_变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。 求该青蛙跳上一个n级的台阶总共有多少种跳法。 理解 真是一只变态的青蛙 解题思路 解题1 如果是n级台阶,假设有F(n)种跳法,那一定也是先跳1级或者先跳2级……或者n-1级,或者直接跳到n级。 跳1级后有F(n-1)种,跳2级后有F(n-2)种……跳n-1级有F(1)种,直接跳到n级台阶为1种,故...原创 2018-08-29 10:03:09 · 831 阅读 · 0 评论 -
剑指offer_第20题_包含min函数的栈_Python
题目描述 定义栈的数据结构 并在该类型中实现一个能够得到栈中所含最小元素的min函数。时间复杂度应为O(1) 理解 什么是栈 算法复杂度 解题思路 思路1 class Solution: def __init__(self): self.stack = [] self.min_stack = [] def push(self,...原创 2018-09-12 17:40:40 · 825 阅读 · 0 评论
分享