![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
tendencyboy
这个作者很懒,什么都没留下…
展开
-
IOU
IOU即交并比,应用:NMS(过滤重叠框)mAPimport numpt as npdef get_IOU(pred_bbox, gt_bbox): ixmin = max(pred_bbox[0], gt_bbox[0]) iymin = max(pred_bbox[1], gt_bbox[1]) ixmax = min(pred_bbox[2], gt_bbox[2]) iymax = min(pred_bbox[3], gt_bbox[3]) iw = np.maximum(ixma原创 2021-01-06 18:17:42 · 141 阅读 · 0 评论 -
剑指offer——把数组排列成最小数
任意给出几个数,随机组合成最小数,接触这个题最开始的想法,比对每位的大小,然后排列,不过随机数位数不定,创建变量,用for循环计算,复杂度高而且不符合Python大法倔强的性格。后观察讨论区,对比组合之后的数值,效果不错。class Solution: def PrintMinNumber(self,numbers) if not numbers: return "" numbers=...原创 2018-10-08 16:02:31 · 193 阅读 · 0 评论 -
剑指offer——连续子数组的最大和
这是一个动态规划的问题,动态规划的基本思想:若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。求最大值用max函数即可解决,不过求连续子数组的和需要分解成子问题。把当前值与前项和相加...原创 2018-09-21 18:35:47 · 75 阅读 · 0 评论 -
剑指offer——输出数组中k个最小值(快速,冒泡,选择,插入)
找k个最小值,基本思路是对数组排序,输出前k个或者后k个,我们回顾一下之前的学习过的集中排序方法:快速排序class Solution(): def GetLeastNumbers_Solution(self, tinput,k): def quick_sort(lis) if not lis: return [] q=lis[0] left=qui...原创 2018-09-20 18:45:15 · 177 阅读 · 1 评论 -
剑指offer——判断数组中出现次数过半的数值
根据题目,主要解决两个问题,一个是判断出现数组出现的次数,二是输出出现次数过半的数值,无则返回0。根据这种情况,脑中第一个出现的就是用字典解决,判断value,输出key。class Solution: def MoreThanHlafNum_Solution(self,numbers): dict={} for i in numbers: if not dict.has_key...原创 2018-09-19 11:44:55 · 148 阅读 · 0 评论 -
剑指offer——按字典顺序输出字符串的排列
很多算法题对于Python来说,感觉都可以用封装解决。其实若按照c++一步一步来进行,有时候也失去了Python便利的意义。(反正我没在答案里找到。)基本思路都是用先把可能的排列找出来,在sorted。class Solution: def Permutation(self,ss): res=[] if len(ss)<2: return ss.split() for...原创 2018-09-18 10:43:20 · 300 阅读 · 0 评论 -
剑指offer——二叉搜索树和双向链表
剑指offer题越往后感觉越不好做呀,本来是不会做,现在是难看懂了,乍一眼看这个题,二叉搜索树 ,先把树给拆了,然后排个序,最后加个链。不过实现还是不太容易的。class Solution: def Convert(self,pRootOfTree): if not pRootOfTree: return None #常规操作...原创 2018-09-14 16:59:57 · 123 阅读 · 1 评论 -
排序——冒泡,选择,插入排序
冒泡排序和插入排序的时间复杂度O(n)~O(n2),而选择排序的时间复杂度为O(n2)。 冒泡排序:作为编程超级入门级排序手段,思想比较简单。数组的每个元素都与后一个进行比较,第一轮可以确定末尾的位置的数值。经过n轮可以确定序列def bubble_sort(alist): for i in range(len(alist)-1,0,-1): for j in r...原创 2018-09-07 11:41:16 · 98 阅读 · 0 评论 -
排序——快速排序
快速排序的时间复杂度O(nlog2n)~O(n2),每次选择数组第一个元素作为基准,然后与以后元素对比,小放前,大放后,在分别以基准左右为新数组,以此类推,知道排序完成。def quick_sort(alist,start,end): if start>=end: return mid=alist[start] low=start hi...原创 2018-09-07 10:34:32 · 98 阅读 · 0 评论 -
剑指offer——找出二叉树和为n的路径
链表和二叉树比较难做,主要因其均以链相连接,.next and .left 来输出结构中的数据,无法精确定位,所以通常用递归方法实现。通过递归方法,本人感觉最重要的是确定.next的这部中具体实现的操作,然后逐渐实现递归。找出二叉树和为n的路径,就针对每一步做加和操作以及记录路径,并判断递归是否截至。下面是拷贝代码, 不过思考多次仍不解,最后的list.pop与输出list1的关系。望有心着指...原创 2018-09-05 20:13:17 · 1691 阅读 · 0 评论 -
剑指offer——判断二叉树的后序遍历是否正确
后序遍历根节点在最后一位,然后根据数值大小判断左树和右树,根据大小规则输出是否正确 # 在二叉搜索 树中 左子树节点小于根节点class Solution: def VerifySquenceOfBST(self, sequence): # write code here if sequence==[]: return...原创 2018-09-04 15:44:43 · 171 阅读 · 1 评论 -
算法工程师相关学习资料汇总
深度学习大全:https://github.com/ChristosChristofidis/awesome-deep-learning花书要点:https://zhuanlan.zhihu.com/p/61528654互联网常见面试题:https://www.zhihu.com/question/24964987/answer/586425979leetcode解题之路:https://g...原创 2019-05-05 17:35:07 · 223 阅读 · 0 评论 -
剑指offer——丑数
主要有两种思路,一种应试型,要找第n个丑数,我找一个合适的数只要包含你所求的n就可以。class Solution(): def GetUglyNumber_Solution(self,index): res=[2**i*3**j*5**k for i in range(30) for j in range(20) for k in range(15)] res.sort()...原创 2018-10-10 09:47:00 · 72 阅读 · 0 评论 -
剑指offer——第一个只出现一次的字符
这个题在剑指offer里属于常规题,主要看编程语言的运用的如何巧。python 常规操作,用count计数,index输出位置class Solution(): def FirstNotRepeatingChar(self,s): if len(s)<1:return -1 for i in s: if s.count(i)==1: return s.index(...原创 2018-10-10 13:10:07 · 121 阅读 · 0 评论 -
二叉树的遍历 python实现
先序遍历——根节点→左子树→右子树递归形式:def preorder(self,root): if root == None: return print(root.val) preorder(root.left) preorder(root.right)非递归形式:(利用栈的性质)def preorder(self,root): stack = [root] whi...原创 2018-12-09 14:09:19 · 212 阅读 · 0 评论 -
剑指offer——二叉树中序的下一个节点
二叉树的问题一般采用两种方式,一种根据需求一步一步探讨,第二种,将二叉树遍历至数组,对数组操作。第一种,根据中序遍历,指定节点的下一个一般为右节点,子节点的左节点或者父节点:class Solution: def GetNext(self,pNode): if pNode.right: p=pNode.right while p.left: p=p.left r...原创 2018-11-06 10:30:58 · 158 阅读 · 0 评论 -
剑指offer——扑克牌顺子
先统计王的数量,再把牌排序,如果后面一个数比前面一个数大于1以上,那么中间的差值就必须用王来补了。看王的数量够不够,如果够就返回true,否则返回false。class Solution: def IsContinuous(self,numbers): if not numbers: return False numbers.sort() zeroNum=numbers.co...原创 2018-10-25 17:30:05 · 68 阅读 · 0 评论 -
剑指offer——圆圈中最后剩下的数
本题属于约瑟夫问题。核心是用取余的方式表示所停的位置class Solution: def LastRemaining_Solution(self,n,m): if n<1 or m<1: return -1 con =range(n) f=-1 s=0 while con: k=(s+m-1)%n f=con.pop(k) n-=1 ...原创 2018-10-22 12:24:13 · 90 阅读 · 0 评论 -
剑指offer——和为s的连续正整数
由于连续正整数的个数不确定,所以用两个角标,来控制个数,最后求和。针对数值操作:class Solution: def FindContinuousSequence(self, tsum): l, r, sum, res = 1, 2, 3, [] while l<r: if sum>tsum: sum ...原创 2018-10-18 14:37:23 · 116 阅读 · 0 评论 -
剑指offer——数组中只出现一次的数字
第一种:找出成对数值并取出,剩下就为出现一次的。class Solution: def FindNumsAppearOnce(self,array): if not array: return [] res=[] count=0 while len(array)>0: p=array.pop() if p in array: array.rem...原创 2018-10-17 15:58:52 · 84 阅读 · 0 评论 -
剑指offer——平衡二叉树判定
针对于树的操作,大部分都是用递归操作的,根据递归运算,要确定重复循环的过程以及截止条件,不过针对二叉树,还是比较难思考的。class Solution: res=True def IsBalance_Solution(self,pRoot): self.judge(pRoot) return self.res def judge(self,root): if not root:...原创 2018-10-17 10:17:42 · 95 阅读 · 0 评论 -
剑指offer——二叉树的深度
二叉树的运算一般用常规的递归方法,代码简洁。class Solution: def TreeDepth(self,pRoot): if not pRoot: return 0 count=max(self.TreeDepth(pRoot.left),self.TreeDepth(pRoot.right))+1 return count非递归方法:class Soluti...原创 2018-10-16 09:59:21 · 87 阅读 · 0 评论 -
剑指offer——数组在排序数组中出现的次数
记录次数,直接用data.count(k)也通过了。或者常规算法,出现有序用二分查找。class Solution: def GetNumberOfK(self, data, k): # write code here if len(data)==0: return 0 count=0 low=0 ...原创 2018-10-15 10:18:17 · 72 阅读 · 0 评论 -
剑指offer——两个链表第一个公共结点
这还是基于链表的操作,思路理清是比较关键的。1.基于栈class Solution: def FindFirstCommonNode(self,pHead1,pHead2): if not pHead1 or not pHead2: return None s1=[] s2=[] while pHead1: s1.append(pHead1) pHead1...原创 2018-10-14 21:52:49 · 103 阅读 · 0 评论 -
剑指offer——数组中的逆序对
本题在牛客上用python编程是无法顺利通过,参考多种方法仍然无效。下面一种方法,感觉还是很优秀的,不过通过率50%class Solution(): def InversePairs(self,data): count=0 datasorted=[] for i in data: datasorted.append(i) datasorted.sort() for ...原创 2018-10-11 13:30:04 · 135 阅读 · 0 评论 -
单链表的添加 删除 合并 Python
节点实现:class SingleNode(object): def __init__(self,item): self.val = item self.next = None指定位置添加元素:def insert(self,head, pos,item): node = SingleNode(item) cur = self.head count = 0 whi...原创 2018-12-14 12:47:53 · 199 阅读 · 0 评论