工具脚本+数据结构+常用算法
文章平均质量分 70
工具脚本+数据结构+常用算法,模板,主要用于找工作的笔试和日常偷懒自动化
CV干饭王
这个作者很懒,什么都没留下…
展开
-
面试必会:剑指offer手撕代码(一):第1~16题,详细题解python代码,建议熟练默写
根据我的大厂面试经验,剑指offer的题一定都要熟练掌握,面试时极有可能让我们手撕部分题的代码,当然这是最简单的情况,像BAT这类的大厂大部分时候让我们手撕 动态规划 题。总之,剑指offer的题目算法思路我们一定要会!!!1、二维数组中的查找题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例1题解python代码:# -*- codi.原创 2021-03-15 20:02:18 · 490 阅读 · 1 评论 -
面试必会:二叉搜索树(二叉排序树)构建、插入、验证详细图解,奶奶都看懂了,附二叉搜索树的二种验证方法python代码
1、二叉排序树(Binary Sort Tree)性质:或是一颗空树,或是具有如下性质的二叉树:(1) 若它的左子树不空,则 左子树 上所有结点的值 均小于 它的根结点的值;(2) 若它的右子树不空,则 右子树 上所有结点的值 均大于 它的根结点的值;(3) 它的 左、右子树又分别为二叉排序树 。重要性质:1、二叉排序树的中序遍历输出一定是一个单调递增的序列。2、二叉排序树查找指定数值相当于是一个二分查找。2、二叉排序树举例:下图中的这颗二叉树就是一颗典型的二叉排序树:二叉排序树既原创 2021-03-10 21:33:44 · 1974 阅读 · 1 评论 -
面试必会:二叉树的前序、中序、后序、层序遍历,以及利用前中、中后序列重构二叉树,附python实现代码及举例
概念:遍历命名根据访问结点操作发生位置命名:① NLR: 前序遍历(Preorder Traversal 亦称(先序遍历))——访问根结点的操作发生在遍历其左右子树之前。② LNR: 中序遍历(Inorder Traversal)——访问根结点的操作发生在遍历其左右子树之中(间)。③ LRN: 后序遍历(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树之后。遍历算法:1.前序遍历先(根、前)序遍历的 递归算法定义:若二叉树非空,则依次执行如下操作:(原创 2021-03-10 21:18:05 · 396 阅读 · 3 评论 -
面试刷题必会:回溯法详解(python代码模板,学会了秒杀回溯题)
回溯法「回溯法」实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就「回溯」返回,尝试别的路径。回溯法是一种算法思想,而递归是一种编程方法,回溯法可以用递归来实现。回溯法的整体思路是:搜索每一条路,每次回溯是对具体的一条路径而言的。对当前搜索路径下的的未探索区域进行搜索,则可能有两种情况:当前未搜索区域满足结束条件,则保存当前路径并退出当前搜索;当前未搜索区域需要继续搜索,则遍历当前所有可能的选择:如果该选择符合要求,则把当前选择加入当前的搜索路径原创 2021-03-07 17:01:23 · 1047 阅读 · 1 评论 -
面试刷题必会:单调栈python模板套路(附用法例题详解)
单调栈问题:要知道单调栈的适用于解决什么样的问题,首先需要知道单调栈的作用。单调栈分为单调递增栈和单调递减栈,通过使用单调栈我们可以访问到下一个比他大(小)的元素(或者说可以)。也就是说在队列或数组中,我们需要通过比较前后元素的大小关系来解决问题时我们通常使用单调栈。下面我们通过简单介绍单调减栈和单调增栈问题来进一步说明使用单调栈处理问题的过程。什么时候使用单调栈?通常是一维数组,要寻找任一元素右边(左边)第一个比自己大(小)的元素,且要求 O(n) 的时间复杂度单调栈原理:单调递增栈:从 栈底原创 2021-03-05 10:57:40 · 2660 阅读 · 12 评论 -
刷题骚操作:python位运算符作用详解、计算公式(通俗易懂,小白也能使用位运算)
python位运算符:1、左移:x >> y返回 x 向右移 y 位得到的结果,只需要记住结果 b = x*pow(2, y)——2、右移:x << y返回 x 向左移 y 位得到的结果,只需要记住结果 b = x/pow(2, y)——3、与:x & y与操作,返回结果的每一位是 x 和 y 中对应位做 and 运算的结果,只有 1 and 1 = 1,其他情况为0——4、或:x | y或操作,返回结果的每一位是 x 和 y 中对应位做 or 运算的原创 2021-01-14 14:23:42 · 467 阅读 · 2 评论 -
刷题最常用的数据结构详解:集合(set)、栈(stack)、队列(deque\queue)、哈希表(hashmap)、堆(heap)
在力扣刷题时,除了最基础的列表(数组)、字符串操作,经常会用到 集合、栈、队列(双向队列)、哈希表、堆 这五种数据结构进行辅助解题,下面是这些数据结构的原理特性详解,以及python里面的用法。1、集合(set)原理:就是数学课里面学的集合概念,有合集、并集、差集的那个,构成就不再赘述了。。。特性:1、无序性2、确定性(编程时表现为不允许下标访问,以及修改元素)3、不重复性(常用于列表去重)python实现:# 定义s = set()# 增,用法类似于list.append()s原创 2021-03-02 16:23:53 · 652 阅读 · 5 评论 -
面试必会:分治算法 详解(附python汉诺塔案例实现)
分治算法原理:分——将问题分解为规模更小的子问题;治——将这些规模更小的子问题逐个击破;合——将已解决的子问题合并,最终得出“母”问题的解;分治法在具体操作时主要是以下两步:1、找出最原始的操作,这种操作必须尽可能简单。(如汉诺塔的初始1个盘子,直接从第一个柱子将1个盘子移到第三个柱子)————————————————————————————————2、确定如何缩小问题的规模,然后不断将问题分解(或者说缩小规模),直到符合最原始的操作。(如将汉诺塔问题分解为移动 1 、n-1 的两个转载 2021-03-01 21:47:50 · 543 阅读 · 3 评论 -
数据增强脚本:python利用任意尺寸负样本图片批量制作可用于训练的空xml文件
用途:空xml负样本,用于降低目标检测测试过程中的误检率。用法:负样本图片和训练集图片放在同一个文件夹,空xml文件和训练集xml放在同一个文件夹,然后按照正常的目标检测训练流程即可完成训练。附加功能:把原有的label为背景的xml文件替换掉(主要用于比赛数据集中的背景label检索和修改)。上代码(把输入输出文件夹改为自己的即可):import osimport xml.dom.minidomimport cv2 img_path = 'C:\\Users\\hq\\Desktop原创 2020-05-12 16:32:27 · 1693 阅读 · 5 评论 -
数据增强脚本:利用正样本和对应xml文件通过随机裁剪(绕过所有目标框)批量生成负样本
正样本图片示例(为正样本文件夹的其中一张,对应的xml目标框label为皮卡丘):示例xml文件内容:上代码(输入输出文件夹改为自己的即可,笔者预设裁剪尺寸为[64, 128, 256, 416, 608],可自定义,但一定要小于图片尺寸):from PIL import Imageimport randomimport xml.etree.ElementTree as ETcount = 0 ##计算生成图片数num=0 ## 现在对哪张图片进行裁剪(图片已经按序号顺序排原创 2020-05-12 16:47:09 · 1506 阅读 · 5 评论 -
数据增强脚本:利用xml标签文件对正样本的目标框位置打上马赛克
用途:将原有正样本的目标打上码变成负样本代码(输入输出文件夹路径改为自己的即可):import cv2import xml.etree.ElementTree as ETimport os img_path = 'C:\\Users\\hq\\Desktop\\pikaqiu_data\\pikaqiu\\'xml_path = 'C:\\Users\\hq\\Desktop\\pikaqiu_data\\pikaqiu_xml\\'mask_img_path = 'C:\\Users\\原创 2020-05-12 16:57:18 · 284 阅读 · 3 评论 -
常用表格:ASCAII码对照表
原创 2021-02-25 15:55:15 · 2216 阅读 · 3 评论 -
面试必会:十大经典排序算法(python实现,附复杂度分析及稳定性)
十大排序算法复杂度及稳定性属性表图片名词解释:n: 数据规模k: “桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存1、冒泡排序冒泡排序算法的原理如下:a. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。——b. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。——c. 针对所有的元素重复以上的步骤,除了最后一个。——d. 持续每次对越来越少的元素重复上面的步骤,直到没有原创 2021-02-25 14:48:06 · 1845 阅读 · 23 评论 -
Tomcat局域网内共享文件夹(超级简单)
同一个局域网内,电脑防火墙关闭、IP可以相互ping通的前提下,内网任意电脑都可以访问服务器共享的文件夹。Tomcat共享文件夹步骤如下:(1)在 C:\apache-tomcat-8.5.59\webapps\ROOT 文件下新建想要共享的文件夹,放入想要共享的文件。(C:\apache-tomcat-8.5.59是笔者的Tomcat安装目录,各位看官记得改成自己的)(2)进入到 C:\apache-tomcat-8.5.59\conf 文件夹,编辑打开web.xml文件,将原本的 false原创 2020-11-11 20:10:19 · 1200 阅读 · 3 评论 -
一个找爸爸的数据结构:并查集详解,附上python模板及例题(完整版、压缩版找爸爸写法都有)
一、概念并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。主要构成:并查集主要由一个整型数组pre[ ]和两个函数find( )、join( )构成。数组 pre[ ] 记录了每个点的前驱节点是谁(一般理解为该点的爸爸是谁),函数 find(x) 用于查找指定节点 x 属于哪个集合(可以理解为找祖先),函数 join(x,y) 用于合并两个节点 x 和 y(一般是将x认作是y的爸爸) 。原创 2021-02-23 21:12:57 · 470 阅读 · 8 评论 -
Python 列表、队列、集合、字典各方法的时间复杂度(list、deque、set、dict)
本文中,’n’ 代表容器中元素的数量,’k’ 代表元素值,或者参数的数量,‘i’ 表示索引值。列表(list)操作时间复杂度复制O(n)appendO(1)insertO(n)extendO(k)索引O(1)赋值(修改值)O(1)pop()O(1)pop(i)O(n)remove(k)O(n)遍历O(n)切片O(k)排序O(n log n)inO(n)max()、min()O.原创 2021-02-22 13:16:45 · 1393 阅读 · 14 评论 -
力扣刷题笔记:二分查找法python模板(广泛使用,直接套用,倍增法也属于二分法的一种)
二分查找法思路:顾名思义,二分查找就是不停地以二分的形式缩小查找范围,最终找到所需要的元素。时间复杂度:O(logn)二分查找模板写法:class Solution: def search(self, nums: List[int], target: int) -> int: left, right = 0, len(nums) - 1 while left <= right: mid = left + (right-l原创 2021-02-19 14:41:07 · 323 阅读 · 5 评论 -
力扣刷题笔记:滑动窗口法python模板写法(详细注释,广泛使用,秒杀滑窗题)
滑动窗口模板:《挑战程序设计竞赛》这本书中把滑动窗口叫做「虫取法」,非常生动形象。因为滑动窗口的两个指针移动的过程和虫子爬动的过程非常像:前脚不动,把后脚移动过来;后脚不动,把前脚向前移动。分享一个滑动窗口的模板,能解决大多数的滑动窗口问题:滑窗模板python代码:def findSubArray(nums): N = len(nums) # 数组/字符串长度 left, right = 0, 0 # 双指针,表示当前遍历的区间[left, right],闭区间 sums原创 2021-02-19 13:48:53 · 3469 阅读 · 3 评论 -
python利用文件夹下xml格式标签文件批量裁剪出图片中的目标(文件夹、图片名称、目标框数量无限制,逐行注释)
这段时间有个小任务是提取出图片中的手部物体,然后我就用labelimg打标软件给部分图片打了标(生成xml标签文件),顺手写了个小脚本将这些目标从原图中裁剪出来,效果如下所示,感觉还可以。原始图片(实例1):裁剪效果(实例1):原始图片(实例2):裁剪效果(实例2,此处空手为打标,故未裁剪):完整代码本代码针对以下问题均有解决:1、同一xml文件有多个目标框;2、图片和xml文件在不同或相同文件夹下;3、部分图片未打标,对应的xml文件不存在;4、图片文件夹中有非图片(png,原创 2020-12-03 10:37:15 · 2668 阅读 · 11 评论