牛客网刷题
牛客网刷题 - Python
zysunny1219
这个作者很懒,什么都没留下…
展开
-
剑指offer-牛客网
剪绳子给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入一个数n,意义见题面。(2 <= n <= 60)(绳子长度大于等于2,剪成的段数m大于等于2小于等于n,所以,每段的长度大于等于1小于n)方法一:暴力递归n=2 1+1 最大乘原创 2020-12-09 11:01:52 · 154 阅读 · 0 评论 -
二叉搜索树与双向列表
二叉搜索树与双向列表输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中节点指针的指向思路:a> 二叉搜索树的中序遍历是一个不减的排序结果,因此先将二叉树搜索树中序遍历b> 将遍历后的结果用相应的指针连接起来代码:class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Non原创 2020-07-29 20:05:57 · 153 阅读 · 0 评论 -
按层打印二叉树
按层打印二叉树从上到下按层打印二叉树,同一层结点从左至右输出,每一层输出一行思路:1、广度遍历,利用队列思想2、要有2个队列,分别存放当前层的节点 和 下一层的节点代码:class Node: # 节点类 def __init__(self, val): self.val = val self.left = None self.right = Noneclass Solution: def print_node(sel原创 2020-07-26 23:29:40 · 234 阅读 · 0 评论 -
合并两个排序的链表
合并两个排序的链表输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:1. 分别创建cur1 cur2,指向两个链表的表头2. 创建head变量 存储新链表的表头3. 向新链表中添加数据:链表1有数据,链表2没数据的情况,新链表为链表1链表1没有数据,链表2有数据的情况,新链表为链表2链表1 链表2都没数据的情况,新链表为空两个链表都有数据的情况: 链表1的val小于链表2的val cur1的值加入新链表 链表1的val大于链表原创 2020-07-24 00:50:11 · 94 阅读 · 0 评论 -
剪绳子
剪绳子给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入一个数n,意义见题面。(2 <= n <= 60)(绳子长度大于等于2,剪成的段数m大于2小于等于n,所以,每段的长度大于等于1小于n)方法一:暴力递归n=2 1+1 最大乘积原创 2020-07-21 23:45:06 · 98 阅读 · 0 评论