Python调用C++代码(含OpenCV cv::Mat转换 传输数据) 简介Python因为编写简单、易用而被广泛使用,但是其效率比较低下。尤其是在计算机视觉、图像处理领域,C++调用GPU,相对于Python可能是10倍以上的提速。一些开源的算法通常是使用C++来实现。经常会有需求需要快速用Python实现一个项目,然后其中要调用一段C++代码。本方法使用了一个开源库,pyboostcvconverter,这个C++库被编译后,会生成.so,在.so路径下,就可...
LintCode 16. Permutations II Permutation的进阶题。此题给的List里是有重复元素的,也就意味着用全排列的方式,可能会有重复的排列,那么怎么规避掉重复的排列呢,我们可以为重复元素标号,比如:[1, 2, 2, 3, 4, 4, 5] 标号后为:[1, 2(1), 2(2), 3, 4(1), 4(2), 4(3), 5]我们在搜索的时候,强制要求,本来排序靠前的重复元素,在排列后,必须依旧靠前,如:[2(1...
LintCode 15. Permutations 典型搜索题,搜索题主要有两个,Subsets子集和Permutation全排列。模板题,递归搜索,要注意记忆模板,遇到相似题改写即可。class Solution {public: /* * @param nums: A list of integers. * @return: A list of permutations. */ vector&...
LintCode 814. Shortest Path in Undirected Graph 这道图是图里BFS的经典题!算最短路,其实就是分层BFS(分层BFS的关键就是每次for一下queue的大小,一层一层的pop出元素,便可以用一个变量记录层深)亦可以用一个hash表,来记录distance。/** * Definition for Undirected graph. * struct UndirectedGraphNode { * int label; * ...
LintCode 127. Topological Sorting 有向图的拓扑排序,主要应用是“判断图中是否有环”计算每个节点的入度,即有几个点指向它将入度为0的点删掉,然后将其相邻的neighbor的入度减一不断重复2步骤,如最后剩下点表示有环,如无环则不会剩下点本题让求任意的拓扑排序,以下解题步骤:遍历点,用Hashmap记录每个点的入度将入度为0的所有点加入队列q不断pop队列构造排序,将相关点入度减一,重复加入当前入度为0的点直到队...
LintCode 137. Clone Graph 需要掌握图的表示方法,图分为两种常见表示:邻接表,邻接矩阵。主要有一个neighbors的vector来存所有邻居的信息遇到图的题,要遍历图,一般选择BFS,因为宽度优先遍历可以用队列实现,不会发生栈溢出的情况遇到图的题,要遍历图,需要一个Hashmap,因为图可能有环,尤其对于无向图,为了避免二次访问,Hashmap非常重要需要记忆,c++中Hashmap用unordered_map来表...
LintCode 363. Trapping Rain Water 两指针问题。需要生成左右两个指针,不断靠近,直到碰到一起。需要有lheight,rheight分别记录:从左遍历到当前左指针位置的最大值和从右遍历到当前右指针位置的最大值,因为这个最大值减当前值,是能蓄水的高度。左、右指针的位置,谁先动,是由谁的最大值更低决定的,谁低谁动(相当于水位高度有另一个指针位置能挡住,便可以不断累加当前指针蓄水量到结果)class Solution {publ...
LintCode 113. Remove Duplicates from Sorted List II 删除掉所有的重复节点,遍历寻找时分两种情况:相邻两个节点不同,即crt和crt->next的值不同重复节点有多个时,要用while不断寻找到不重复的节点。需要注意的是while内是否有可能访问空指针,需要在条件中判断是否为空/** * Definition of singly-linked-list: * class ListNode { * public: * i...
LintCode 141. Sqrt(x) 本题很简单,二分法,用二分法模板即可。需非常注意,mid*mid可能会很大导致溢出,所以要用long型而非int型。class Solution {public: /** * @param x: An integer * @return: The sqrt of x */ int sqrt(int x) { long start ...
LintCode 6. Merge Two Sorted Arrays LintCode 6. Merge Two Sorted Arrays题意理解Merge two given sorted ascending integer array A and B into a new sorted integer array.题意理解很简单的题,没有要求不能使用额外空间,就用两个指针分别从头往后比较A,B两个数组,一个个将数组组建起来。class Solution...
LintCode 2. Trailing Zeros LintCode 2. Trailing Zeros题意分析Write an algorithm which computes the number of trailing zeros in n factorial.题意分析n!末尾含零的个数,这个题关键在于n!有多少5,2*5=10,每凑成一对就多一个0,2的个数远比5多,所以关键是找5.可以列出几个例子来观察一下:1 * 2 * 3 ...
MobileNet V2-SSD 检测头数目解析 mbox_loc:从6层feature map出来的prior box的相对位置结果(x, y, w, h)的拼接idlayer namesizeoutput numbox numtotal1conv5_mbox_conf_flat38*384 / 1638x38x4=57762conv11_mbox_conf_flat19*196 / 24...
LintCode 372. Delete Node in a Linked List Implement an algorithm to delete a node in the middle of a singly linked list, given only access to that node.这道题跟想象的不一样,以为输入给的节点时head,其实不是,而是你要删除的那个点,所以,方法是,将下一个点的值赋予此点,然后删除下一个点。/** * Definition o...
LintCode 450. Reverse Nodes in k-Group 每K个node翻转一次,最后一组不够K个的不翻转。有多种方法实现。我本来理解的题意是不够K个的有几个翻转几个,在写完代码后才发现最后不够K个不翻转,所以,我最后改了改,实现的是,每一组都翻转,不够K个的时候由翻转后的再翻转回来。实际上一开始就可以写成不够K个不翻转,代码有点冗余了。/** * Definition of singly-linked-list: * class ListNo...
LintCode 105. Copy List with Random Pointer A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.涉及到deep copy,采用Hashmap最简单,此题还有一种巧妙地解法,有时要求让用O(1)复杂度,就需要此巧妙解法。方法一: H...
LintCode 104. Merge K Sorted Lists Merge k sorted linked lists and return it as one sorted list.Analyze and describe its complexity.方法一:用最小堆(用C++ STL的priority_queue)方法:将k个列表的头加入到最小堆,最小堆可以用O(1)的时间pop出最小元素,作为合并列表的第一项,被pop出的元素所对应的list的...
LintCode 170. Rotate List Given a list, rotate the list to the right by k places, where k is non-negative.找倒数第k-1个位置和倒数第k个位置(注意k可能大于链表长,这里大于则循环链表找)这里用快慢指针的方法找,快指针比慢指针先走k步,然后两个指针每次一步一起走,快指针到达尾部时,慢指针位置是倒数第k的位置。找到后,根据链接关系链接...
LintCode 102. Linked List Cycle Given a linked list, determine if it has a cycle in it.O(1)空间要求,用快慢指针,若有环,快慢指针必回相交,这是一个追击问题。若无空间要求,可以用Hashmap/** * Definition of singly-linked-list: * class ListNode { * public: * int val;...
LintCode 99. Reorder List Given a singly linked list L: L0 → L1 → … → Ln-1 → Lnreorder it to: L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …找到中点,将List分成两半,left和right翻转right合并两个List注意:拆开两个链表,不要忘了mid->next=NULL找中点:方法一:遍历一遍记录长度...
LintCode 98. Sort List Sort a linked list in O(n log n) time using constant space complexity.这个时间复杂度一看就是用二分法之类的方法来做merge sort的思想来做(递归)把List斩成两半(找中点)左边排序,右边排序把两个排好序的List merge到一起mid->next = NULL不要忘,很重要/** ...