剑指offer
国宝小十三
这个作者很懒,什么都没留下…
展开
-
剑指offer 3.数组中重复的数字 Python解法
题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。分析:要求找出任意一个重复的数字就结束。方法一:对数组排序,重复的数字就出现在一起,即相邻。注意,1、使用nu...原创 2019-06-19 09:59:21 · 148 阅读 · 0 评论 -
剑指offer 18.删除链表中的节点 Python解法
题目描述:给定链表中的一个节点,删除它。分析:用后边的节点信息覆盖掉前边的。# 即用后一个节点,把前边节点的信息覆盖# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.ne...原创 2019-06-24 21:54:46 · 173 阅读 · 0 评论 -
剑指offer 17.打印0到n位的最大值 Python解法
def maxnum(n): end = 10**n i = 0 while(i<end): print(i) i=i+1maxnum(3)没啥讲的,python存在优势。原创 2019-06-22 20:05:58 · 100 阅读 · 0 评论 -
剑指offer 16.熟知的整数次方 Python解法
题目描述:不使用库函数。分析:某数的n次方。n可为奇数,n也可为偶数。目的是要减少计算量!!!备注:代码中的几个要点:1、如何实现除以2。2、x和n的边界条件:0、负数等# 使用的是数学公式,剑指offer书P112。# 使用每次除以2 的方法,减少了非常多的计算量def mypoww(x,n): def tem(x,n): if n == ...原创 2019-06-22 20:03:50 · 157 阅读 · 0 评论 -
剑指offer 15.二进制中的1的个数 Python解法
题目描述:一个10进制的数,写成二进制,统计其中1的个数。分析:是不是想到了变成字符串?咋变呢?答:bin()函数:把十进制数转换成二进制。类型是str注意点:① bin()函数前边还有0b占了2位。 ② n&1,判断n的奇偶,奇数返回1. ③ >> 移位符。 # 解法二...原创 2019-06-21 13:53:50 · 145 阅读 · 0 评论 -
剑指offer 14.剪绳子 Python解法
题目描述:给你一根长度为 n 绳子,请把绳子剪成 m 段(m、n 都是整数,2≤n≤58 并且 m≥2)。 每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]k[1] … k[m] 可能的最大乘积是多少?例如:当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大的乘积18。分析:书上说的有数学规律:(看注释)# 方法一:贪婪算法def ma...原创 2019-06-21 13:40:22 · 306 阅读 · 0 评论 -
剑指offer 13.机器人的运动范围 Python解法
题目描述:机器人的行动范围 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?分析:1、行坐标...原创 2019-06-20 21:13:19 · 193 阅读 · 0 评论 -
剑指offer 12.矩阵中的路径 Python解法
题目描述:判断一个矩阵中是否存在一条包含某字符串的所有字符的路径。但是经过了某一个格子,就不能再回去了。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ]...原创 2019-06-20 20:13:10 · 327 阅读 · 0 评论 -
剑指offer 11.旋转过的数组的最小数 Python解法
题目描述:11、寻找旋转排序数组中的最小值假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。分析:不要一拿到题就遍历!!看看题目描述,这个列表是有特点的。打破遍历思维,增加二分法思维!打破遍历思维,增加二分法思维!(注意点...原创 2019-06-19 11:40:18 · 103 阅读 · 0 评论 -
剑指offer 10.斐波那契数列 Python解法
题目描述:求第n项。(被问到过这一题),以前也没仔细看过这一题,的几种解法,正好回顾下。一:递归,注意看注释:递归每次调用都要重复计算之前算过的。# 方法一:递归# 递归的效率很低def fibb(n): if n==1 or n ==2: return 1 else: return fibb(n-1)+fibb(n-2) # 因为没有存储,每...原创 2019-06-19 11:19:24 · 140 阅读 · 0 评论 -
剑指offer 8.二叉树的下一个节点 Python解法
题目描述:二叉树的中序遍历下一个节点给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。分析:见树头疼系列。画图看看。中序是:左根右。画一个树,考虑几个给定的点的特殊位置,继而不断写完整函数。# class TreeLinkNode:# def __init__(self, x):# ...原创 2019-06-19 11:08:10 · 111 阅读 · 0 评论 -
剑指offer 7.重建二叉树 Python解法
题目描述:根据前序遍历和中序遍历重建二叉树,假设遍历结果中不包含重复的数字。分析:这题看起来好难啊。见到二叉树的题就打怵。画图就相对清楚了。递归时的左右子树的位置下标,画一画就得出了。特表注意,列表的“左闭右开”,右边的值是取不到的!附带着,由重建的二叉树,很容易写出后序遍历。(下边的代码中,定义为hou。不想改了,但是不建议使用这种命名方式。同样的还有self.vol,...原创 2019-06-19 10:54:47 · 113 阅读 · 0 评论 -
剑指offer 6.从尾到头打印链表 Python解法
题目描述:输入一个链表,按链表值从尾到头的顺序返回一个列表。分析:链表的结构是一边存放值,一边存放下一个位置。自然想到要遍历整个链表。接着自然应该想到确定循环的条件。构造了一个空列表,使用l.insert()方法将每个链表元素的值插入到列表的0位置。要注意的是正确填入insert()的参数。class ListNode: def __init__(self, x): ...原创 2019-06-19 10:33:09 · 88 阅读 · 0 评论 -
剑指offer 5.替换空格 Python解法
题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。分析:遍历字符串,找到空格,替换成%20。# 方法1:先把字符串转成列表,修改后,再拼接回去class Solution: def replaceSpace(self, s): b = list...原创 2019-06-19 10:26:58 · 102 阅读 · 0 评论 -
剑指offer 4.二维数组中的查找 Python解法
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析:给的数组是有特点的数组,行递增,列递增。并不是一眼就能看出题眼在矩阵右上角的那个位置,但是多试几次就能知道。右上角的数字特点:是本行的最大值,本列的最小值。即如果给定需要查找的数比...原创 2019-06-19 10:11:21 · 128 阅读 · 0 评论 -
剑指offer 19.正则表达式匹配 Python解法
题目描述:正则表达式给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'和'*'的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。说明:s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符.和*。分析:这题看...原创 2019-06-24 22:26:33 · 166 阅读 · 0 评论