其他
章小幽
这个作者很懒,什么都没留下…
展开
-
求循环小数的开始位置(小数点之后的位数)和循环长度(Python3)
首先要清楚,循环小数中,一个循环内相同的数是不会出现两次的,循环数的范围又在0~9。Python3代码如下:def function(a,b): index = 0 d = collections.defaultdict(int) while True: remainder = a%b if not remainder: ...原创 2019-04-03 22:22:14 · 2157 阅读 · 4 评论 -
topK问题
解法一:基于Partidion函数的平均时间复杂度为O(n)的方法。最坏O(kn),此时数组已经有序,需要执行Partidion函数k次。最好情况O(n),执行一次Partidion函数即得出结果。Python3代码如下(最小的k个数):def Partidion(nums,left,right): p = nums[left] while left < right...原创 2019-09-06 16:48:40 · 233 阅读 · 0 评论 -
最长公共子序列vs最长公共子串 Python3版本
最长公共子序列:给定两个字符串A和B,长度分别为m和n,要求找出它们最长的公共子序列,并返回其长度。解题思路:定义dp[i][j]为字符串A的第一个字符到第i个字符串(A[:i])和字符串B的第一个字符到第j个字符(B[:j])的最长公共子序列。状态转移方程为:Python3代码如下:class Solution(object): def LCSeq(self, ...原创 2019-09-04 11:22:03 · 442 阅读 · 0 评论 -
洗牌算法shuffle
原文:https://www.cnblogs.com/tudas/p/3-shuffle-algorithm.html一、Fisher–Yates Shuffle算法思想就是从原始数组中随机抽取一个新的数字到新数组中。#Fisher–Yates Shuffle''' 1. 从还没处理的数组(假如还剩k个)中,随机产生一个[0, k]之间的数字p(假设数组从0开始); 2. 从剩...转载 2019-08-30 22:24:09 · 168 阅读 · 0 评论 -
k个有序列表合并为一个有序列表 Python3版本
import heapqdef merge(lists): heap = [] for i,l in enumerate(lists): heap.append((l.pop(0),i)) heapq.heapify(heap) result = [] while heap: val,ids = heapq.heappop...原创 2019-08-17 21:07:44 · 366 阅读 · 0 评论 -
由二叉树的前序遍历和‘#’构建二叉树 Python3版本
class TreeNode(): def __init__(self,val): self.val = val self.left = None self.right = Nonedef f(l): val = l.pop(0) if val == '#': return None else: ...原创 2019-08-23 16:17:52 · 93 阅读 · 0 评论 -
单链表的快速排序 Python3版本
class ListNode(): def __init__(self,val): self.val = val self.next = Noneclass Solution(): def mergesortoflist(self,node): if not node or not node.next: r...原创 2019-08-14 19:47:55 · 1213 阅读 · 0 评论 -
剑指offer:数据流中的中位数 Python2版本
这道题本身不难,奇怪的是提交时出现的错误提示。第一种错误提示:、GetMedian() takes exactly 1 argument (2 given)why?一般这种错误发生是因为调用函数时没有传入正确数量的参数,可是我自己也没有调用这个函数呀。原因是因为牛客网中GetMedian()函数本身少写了一个参数!!!第二种错误提示:这个原因是因为牛客网上用的...原创 2019-08-07 10:35:35 · 414 阅读 · 3 评论 -
最长上升子序列vs最长连续递增子序列 Python3版本
最长上升子序列:from bisect import bisect_leftclass Solution(object): def lengthOfLIS(self, nums): """ :type nums: List[int] :rtype: int """ result = [] ...原创 2019-08-18 15:59:18 · 517 阅读 · 0 评论 -
二叉树层次遍历非递归Python3版本
def BFS(root,result): if not root: return result queue = [root] while queue: node = queue.pop(0) result.append(node.val) if node.left: queue.ap...原创 2019-05-08 22:27:46 · 246 阅读 · 0 评论 -
二叉树前中后序遍历非递归Python3版本
# 前序遍历def preOrder(node,result): if not node: return result stack = [] while stack or node: while node: stack.append(node) result.append(node.val)...原创 2019-05-08 22:15:43 · 316 阅读 · 0 评论 -
图的广度优先和深度优先遍历
原文链接:https://www.cnblogs.com/icekx/p/9152452.html简单做了一点修改。# 图的广度优先遍历# 1.利用队列实现# 2.从源节点开始依次按照宽度进队列,然后弹出# 3.每弹出一个节点,就把该节点所有没有进过队列的邻接点放入队列# 4.直到队列变空def bfs(node): if node is None: ...原创 2019-09-17 12:49:08 · 240 阅读 · 0 评论