
剑指offer
Z_Y_D_
这个作者很懒,什么都没留下…
展开
-
把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:将数字转成str,比较拼接后的str的大小自定义一个比较函数sorted(cmp=compare),它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x...原创 2019-04-07 21:21:16 · 194 阅读 · 0 评论 -
剑指offer 滑动窗口的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...原创 2019-05-01 14:55:07 · 156 阅读 · 0 评论 -
剑指off 逆序对 分治法应用
链接:https://www.nowcoder.com/questionTerminal/96bd6684e04a44eb80e6a68efc0ec6c5来源:牛客网在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:...原创 2019-04-30 23:24:02 · 193 阅读 · 0 评论 -
剑指off 顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.找坐标变化的规律即可。import mathclass Solution: # matrix...原创 2019-05-05 18:27:34 · 210 阅读 · 0 评论 -
剑指off 数据流中的中位数
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路:构建一个最大堆,一个最小堆。# -*- coding:utf-8 -*-impo...原创 2019-05-05 01:00:44 · 165 阅读 · 0 评论 -
剑指off 整数中1出现的次数
题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。链接:https://www.nowcoder.com/ques...原创 2019-05-04 22:13:41 · 157 阅读 · 0 评论 -
剑指off 正则表达式匹配
请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配思路:找到匹配串和模式串之间状态转移的关系。1.递归 2.dp方法1:递归/* 讨...原创 2019-05-04 14:45:48 · 211 阅读 · 0 评论 -
剑指off 表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。思路:主要是判断条件的处理 边界的处理# -*- coding:utf-8 -*-class Solution: # s字符串...原创 2019-05-02 17:33:12 · 152 阅读 · 0 评论 -
剑指off 二叉搜索树转双向链表
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:分为左右子树递归。class Solution: def Convert(self, pRootOfTree): # write code here #if not pRootOfTree:return None ...原创 2019-05-02 15:52:29 · 128 阅读 · 0 评论 -
剑指off 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
法一:遍历每一个点,判断左右子树是否为平衡树 存在大量重复高度的计算,可优化# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Sol...原创 2019-04-27 20:23:40 · 493 阅读 · 0 评论 -
树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:1.找到A中和B的根节点相等的节点 2.判断该节点的子树和B树是否相同# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# ...原创 2019-04-08 00:56:47 · 117 阅读 · 0 评论 -
LintCode 20. 骰子求和
https://www.lintcode.com/problem/dices-sum/description扔n个骰子,向上面的数字之和为S。给定n,请列出所有可能的S值及其相应的概率。Example样例 1:输入:n = 1输出:[[1, 0.17], [2, 0.17], [3, 0.17], [4, 0.17], [5, 0.17], [6, 0.17]]解释...原创 2019-08-06 01:23:36 · 241 阅读 · 0 评论