自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(276)
  • 收藏
  • 关注

原创 安装Opencv-Python和-- Trying ‘MinGW Makefiles‘ generator - failure错误的解决办法

这个代码的情况下会下载的opencv版本为tar.gz,由于tar.gz为源代码版本,所以需要MinGW以及CMake编译成源代码才行,多以会发生"-- Trying 'MinGW Makefiles' generator - failure"这样的错误,具体参照下面这篇博文的讲解。在Python中安装包可以使用pip install和conda install从源(清华源、阿里源)进行下载并安装,也可以直接下载下来,并在本地进行安装,具体可参照但是两者区别较大,在处理上也有不同。

2024-08-04 13:04:28 749

原创 Python安装包tar.gz和whl文件的区别和说明

在Python中安装包可以使用pip install和conda install从源(清华源、阿里源)进行下载并安装,也可以直接下载下来,并在本地进行安装,具体可参照但是两者区别较大,在处理上也有不同。

2024-08-04 12:40:58 616

原创 GitHub下载的新Python项目如何运行

此时需要安装对应的包,可以在当前cmd环境中使用conda install进行安装,安装PyQt5使用。然后再vscode中通过最上角的File,在下拉菜单中找到打开文件夹,选择文件夹即可。安装完成后,即可发现包不再显红。

2024-08-04 10:35:42 291

原创 VSCODE无法在终端激活对应的conda环境的解决方法

首先确保已经安装了python扩展,即首先点击下图左侧有四个方块(右上角飞出),也可以通过ctrl+shift+X打开,然后在上侧搜索栏中输入'python',会出现两个Microsoft的扩展,安装即可。由于没有安装cv,从而cv标红,可以在此环境中安装cv,之前powershell都无法激活,那就更无法安装了。此时就可以在此终端和环境下进行操作,该环境下安装了pytorch,则下图中的pytorch没有标红。选择对应的创建的conda环境即可,右下角会出现对应的环境。解决方法:打开cmd的截面。

2024-08-04 09:57:21 295

原创 Python本地安装包和Pytorch安装方法

在大多数情况下,我们安装Python的扩展包和依赖(例如opencv、pandas等)采用pip install和conda install的方法,从互联网上下载资源,但是很多情况下我们会碰到pip和conda安装失败的情况,也会碰到手里有安装包的情况,接下来以pytorch为例子进行说明。的目录下有指定的压缩包,格式为tar.gz(注:在安装pytorch的时候要先安装指定的驱动、cuda、cudann),因为我安装的是10.1(nvcc -v查看即可)的cuda。1 去镜像源下载指定的压缩包。

2024-08-03 23:23:19 164

原创 217 旋转数组和字符串的第一个唯一字符

问题描述:给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。问题描述:给定一个字符串,找到它的第一个不重复的字符,并返回他的索引。

2024-02-18 15:20:35 152

原创 216 数组中的第K个最大元素和无重叠区间

问题描述:给定一个区间的叠合,找到需要移除区间的最小数量,使剩余区间互不重叠。可以认为区间的终点总是大于他的起点,区间[1,2]和[2,3],如果两个区间有重叠则去除端点更长的。问题描述:在未排序的数组中找到第k个最大的元素。

2024-02-18 14:04:35 286

原创 215 托普利茨矩阵和独一无二的出现次数

问题描述:给你一个m*n的matrix。如果这个矩阵式托普利茨矩阵就返回true,否则返回false,如果矩阵从上到下的对角线上的元素都是相同的,那么就是托普利茨矩阵。给你一个整数数组arr,请你帮忙统计数组中没个数的出现次数。如果每个数的出现次数都是第一无二的,就返回true。求解思路:对于第一个竖行和第一个横行进行遍历并进行判断。问题描述:独一无二出现次数。

2024-02-18 11:57:08 305

原创 214 滑动窗口解最大连续1的个数III

求解思路:使用滑动窗口解决,只要当前滑动窗口内的0的数量小于等于k,则往前移动,并更新子数组的长度,如果遇到0的数量大于k,就一直在左边进行删除,直到遇到0为止,表述除去一个0.问题描述:给定一个由若干个0和1组成的数组A,我们最多可以将K个值从0变为1,返回仅包含1的最长(连续)子数组的长度。

2024-02-18 11:18:04 269

原创 214 爱生气的书店老板

问题描述:今天老板有一家打算试营业customers.length分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都后悔在一分钟后离开,在某些时候,书店老板会生气。如果书店老板在第i分钟生气,尼玛grumpy[i]=1,否则grumpy[i]=0.当书店老板生气时,则一分钟顾客是不满意的,不生气则他们是满意的。书店老板直到一个秘密技巧,能抑制自己的情绪,好让自己连续x分钟不生气,但是只能使用一次,请你返回这一天营业下来,最终有多少顾客能够达到满意的数量。

2024-02-18 10:53:02 296

原创 213 最小的k个数和最富裕的资产总量

问题描述:给你一个m*n的网格accounts,其中accounts[i][j]是第i位顾客在第j家银行托管的资产数量,返回最富有的客户所有的资产总量。问题描述:输入整数数组arr,找出其中最小的k个数。

2024-02-17 15:37:53 254

原创 212 构建乘积数组和扑克牌中的顺子

问题描述:给定一个数组A[0,1,...n-1],请你构建一个数组B[0,1,2,3,,,,,n-1],其中B[i]的值是数组A中除了下标i以外的元素的乘积,即B[i]=A[0]*A[i]*...A[i-1]*A[i+1].问题描述:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这五张牌是不是连续的。2-10位数字本身,A为1,J为11,Q为12,K为13,而大小王为0,可以看做任何数字。求解思路:先计算所有数字乘积的值,然后除去对应位置即可得。

2024-02-17 15:08:16 143

原创 211 字符串压缩

问题描述:字符串压缩。利用字符串重复出现的次数,编写一种方法,实现基本的字符串压缩功能,比如字符串aabcccccaaa,会变味a2b1c5a3.若压缩后的字符串没有变短,则返回原来的字符串,可以假设字符串中质保函大小写英文字母(a到z)。

2024-02-17 14:24:42 220

原创 210 砖墙,哈希表解决

问题描述:你的前面有一堵矩形的,由n行砖块组成的砖墙,这些砖块高度相同(也就是一个单位),但是宽度不相同,每一行砖的宽度之和应该相等,你现在要画一条从顶部到下,穿过最少砖块的垂线,如果你画的线条只是从砖块的边缘通过,就不算穿过这块砖。不能沿着强的两个出资会边缘之一划线,这样显然没有穿过一块板砖,给你一个二维数组wall,该数组包含这堵墙的相关信息。其中,wall[i]是一个代表从左到右每块砖的宽度,你需要找出怎样画才能使这条线穿过的砖块的数量最少,并返回穿过的砖块的数量。

2024-02-17 13:46:15 122

原创 209 旋转图像

问题描述:给定一个n*n的二维矩阵matrix表示一个图像,请你将图像按栓失真旋转90度,你必须原地旋转图像,这意味着你需要直接修改输入的二维矩阵,请不要使用另一个矩阵来旋转图像。求解思路:这题让的是把矩阵按顺时针旋转90度,最简答的一种方式就是先上下关于中心线反转,然后再对角线反转。

2024-02-17 13:02:05 104

原创 208 数组中的最长山脉和最长回文串

问题描述:给定一个包含大写字母和小写字母的字符串,找到通过这些字母狗造成的最长的回文串,在构造过程中,请注意区分大小写,比如Aa不能当做一个回文字符串。例如输入"abccccdd"输出7,可以够早的最长的回文串是"dccaccd",他的长度是7.可以使用map进行装填,也可以使用数组。求解思路:先找到上升数组的个数,在找到下降数组的个数。并用index为0表示寻找上升数组,index=1表示寻找下降数组。B[i]<B[i+i]<B[i+2]...>B[j],给出一个整数数组A,返回最长山脉的长度。

2024-02-08 16:46:52 163

原创 207 多种方式解4的幂和最后一块石头的重量

4^n-1=(2^n+1)*(2^n-1),因为2^n+1,2^n,2^n-1,这三个连续的自然数中一定有一个能被3整除,因为2^n不能被3整除,所以2^n-1和2^x-1中必有一个被3整除,所以4^n-1一定会被3整除,如果一个数时2的幂次方,其减1还能被3整除,那么它一定是4的幂次方。问题描述:有一堆石头,每块石头的重量都是正整数,每一回合,从中选出两块最重的石头,然后将他们一起粉碎,假设石头的重量分别是x和y,且x

2024-02-08 15:36:24 342

原创 206 山脉数组的峰顶索引

二分法查找:山脉数组前面部分是升序的,后面部分是降序的,所以也可以使用二分法,用中间的值和他的下一个比较(根据题中对山脉数组的定义),所以数组中挨着的两个数字一定不可能相同的,要么比下一个小,要么比下一个大,如果比下一个小,说明还处于上升阶段,缩小范围到[mid+1,right],如果比下一个大,说明处于下降阶段,缩小查找范围[left,mid].2 存在i(0<i<arr.length-1)使得arr[0]<arr[1]<...arr[i-1]<arr[i]。

2024-02-08 14:13:24 197

原创 205 数组中的最长连续子序列

问题描述:给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如3,4,5,6为连续的自然数)。示例1[100,4,200,1,3,2],返回值4.先排序再查找的方式。

2024-02-08 13:29:25 133

原创 204 摩尔投票算法解主要元素和计数质数

求解思路:对于判断一个数是不是质数,判断除了1和本身之外,是否能整除,还有一种方法,凡是质数(除了1)的整数倍,均不是质数,可以少用一次质数判断。若添加要求时间复杂度是O(N),空间复杂度是O(1),想象成多个国家的士兵厮杀,不一样,则抵消,一样则增加。最后剩下的即为最多的元素。问题描述:简单数组占比一般的元素称之为主要元素,给你一个数组,找出其中的主要元素,若没有,返回-1。示例1:输入n=10,输出4,小于10的质数一共有4个,他们是2,3,5,7。问题描述:简单统计所有小于非负整数n的质数的数量。

2024-02-07 19:46:43 393

原创 203 字符串中的最大奇数和所有蚂蚁掉下来前的最后一刻

其中,一部分蚂蚁向左移动,其他蚂蚁向右移动,当两只向不同方向移动的蚂蚁在某个点相遇时,他们会同时改变移动方向并继续移动。假设更改方向不会话费任何额外时间,而当蚂蚁在某一时刻t到达木板的一端时,它立刻从木板上掉下来,给你一个整数n和两个整数数组left和right。两个数组分别标识向左或向右移动的蚂蚁在t=0时的位置,请你返回最后一只蚂蚁从木板上掉下来的时刻。如果不存在奇数,则返回一个空的字符串。等效求解思路:当两只蚂蚁碰撞时,调换方向,可以看做不调换方向,任然按照自己的方式运行,相当于两只小虫灵魂交换。

2024-02-07 18:00:15 171

原创 202 前缀和解为K的子数组

定义pre[i]为前面所有0到i个元素的总和,要求i到j之间的元素和,直接使用pre[j]-pre[i-1]即可,只要两者相减等于k,则表示找到了一个子数组,由于k值是固定的,对于确定的pre[j],只要找打pre[i-1]即可,可以使用map进行保存。问题描述:给定一个整数数组和一个整数k,你需要找到该数组中和为k的连续子数组的个数。暴力求解:枚举数组nums中的所有子数组,然后统计子数组和等于k的个数。递归方法求解:每一个元素都有选或者不选两种状态。

2024-02-07 17:37:51 145

原创 201 最大升序子数组和

已知子数组[numsl,numsl+1,..,numsr-1,numsr],若对于所有的i(l<=i<r),numsi<numsi+1都成立,则称这一数组为升序子数组,注意大小为1的子数组也视为升序子数组。如果nums[i]比nums[i-1]大,则dp[i]=nums[i]+dp[i-1],否者dp[i]=nums[i].求解思路:由于子数组是连续的,所以遍历过程中只要比前者大,就更新当前的升序和,若不是则将当前累加的升序和最大的升序和足底啊升序和比较,并更新当前的升序和。

2024-02-07 16:52:45 108

原创 200 统计全为1的矩形

求解思路:首先声明一个temp,其中temp[i][j]表示左边连续1的个数,接着遍历整个矩阵,遍历到的元素表示以该元素为下标的矩阵,首先在该元素那一层进行遍历,找到1*N的矩阵,然后往上找,找到n*N的矩阵。问题描述:给你一个包含0和1的rows*columns矩阵mat。请你返回有多少个子矩形的元素全部是1.//先统计1*N的矩阵个数。

2024-02-07 16:19:37 160

原创 199 比较版本号和下一个排列

修订号从左到右编号,下标从0开始,最左边的修订号下标为0,下一个修订号下标为1,以此类推。比较版本号时,请按照从左到右的顺序依次比较他们的修订号。如果版本号没有指定某个下标处的修订号,则该修订号视为0.例如版本1.0小于版本1.1,因为他们下标为1的修订号相同。下一个排列:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列,即组合出下一个1更大的整数,如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列),必须原地更改,只允许使用额外的空间。

2024-02-04 19:00:51 378 1

原创 198 矩阵置零

输入matrix=[[0,1,2,0],[3,4,5,2],[1,3,1,5]].输出[[0,0,0,0],[0,4,5,0],[0,3,1,0]].问题求解:这道题的问题之一就是将0所在的行和列变为0之后,下一次遍历的时候会出现重复判断问题,这里可以申请一个matrix数组,用于存放。问题描述:给定一个m×n的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0,请使用原地算法。上面使用了矩阵的空间,可以使用row和col数组来表征当前行和当前列是否存在0;

2024-02-04 17:29:16 251

原创 197 找出数组的最大公约数和递增的三元子序列

这里关键的地方是求两个数字的最大公约数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数。实际上如果a>b,那么a和b的最大公约数就是b和a%b的最大公约数,这样一步步缩小a和b的值,直到a能被b整除,这样他们的最小公约数就是b。如果存在这样的三元组下标(i,j,k)且满足i<j<k,使得nums[i]<nums[j]<nums[k],返回true,否则返回false。假设我们把矩形的长和宽分别计为a和b,那么求a和b的最大公约数就是求矩形所能分割的最大正方形的边长。

2024-02-04 16:10:53 315

原创 196 检查两个字符串数组是否相等和解码字母到整数的映射

问题描述:给你两个字符串数组word1和word2.如果这两个数组表示的字符串相同,返回true;输出:true:word1表示的字符串为"ab"+"c"->"abc"word2表示的字符串为"a"+"bc"->"abc"两个字符串相同,返回true。字符('a'-'i')分别用('1'-'9')表示。字符('j'-'z')分别用('10#'-'26#')表示,题目数据保证映射始终唯一。输入:word1=["ab","c"],word2=["a","bc"]

2024-02-04 15:23:02 248

原创 195 求众数II和二分法寻找重复数

有了这两个限制条件,那么通过排序查找这种方式行不通了,这题可以使用二分法进行查找,一般使用二分法的时候数组必须是有序的,但这题数组时无序的,不过没关系。给定一个包含n+1个整数的数组nums,其数字都在1到n之间(包括1和n),可知至少存在一个重复的整数,假设nums只有一个重复的整数,找出这个重复的数,你设计的解决方案必须不修改数组nums且只用常量级O(1)的额外空间。桌上有十个苹果,要把这十个苹果放在九个苹果的抽屉里,无论怎么放至少有一个抽屉放置有不少于两个苹果,这一现象就是所说的抽屉原理。

2024-02-04 14:40:48 179

原创 194 分块查找和哈希查找

哈希查找:说到哈希查找很容易想到HashMap和HashSet,其中HashSet就是封装的HashMap,HashMap的原理很简单,就是数组加链表的方式。分块查找时折半查找和顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。分块查找要求把一个数据分为若干块,每一块里面的元素可以是无序的,但是块与块之间的元素是需要有序的,即第一块中的任意元素都必须小于第二块中任意元素的关键字,而第二块中任一原树又都必须小于第三块中的任意元素;

2024-02-03 17:06:20 256

原创 193 插值查找和斐波那契查找

斐波那契数列查找原理其实和二分法的原理差不多,只不过斐波那契查找的数组长度必须是f(k)-1,可以进行斐波那契数列拆分f(k)-1=f(k-1)+f(k-2)-1=[f(k-1)-1]+1+[f(k-2)-1],然后前面部分和后面部分还可以继续进行划分,但实际上我们要查找的数组长度不可能是f(k)-1,所以我们需要补齐最后的部分。但插值查找的时候我们不是比较的中间值,是mid=low+(nums[high]-nums[low])*(key-nums[low])/(nums[high]-nums[low])

2024-02-03 16:08:14 306

原创 192 查找-顺序查找和二分法查找

二分法查找:二分法查找适用于大的数据,但前提条件是数据必须是有序的,他的原理是想和中间的比较,如果等于则立马返回,如果小于就在前半部分继续使用二分法进行查找,如果大于则在后半部分继续使用二分法进行查找。如果找到就返回查找的数在所在数组中的下标,如果没找到就返回-1,还有说上面的代码可以优化,使用一个哨兵,免去了每次都要越界的判断,也可以不使用循环,而使用递归的方法求解。

2024-02-03 14:51:01 303

原创 191 位图排序和其他排序

位图排序也称为bitmap排序,它主要用于海量数据去重和海量数据排序,加入说有10亿个int类型且全部不相同的数据,给1G内存让你排序,你怎么排序,如果全部加载到内存中,相当于40亿个字节,大约等于4G内存,所以全部加载到内存肯定不行,如果我们使用位图排序的画,我们用long类型表示,一个long占用8个字节也就是64位,所以我们使用位图排序的话只会占用月0.0125G内存,但位图排序有个缺陷就是不能有重复的,如果有重复的回覆盖掉,这也是为什么能在海量数据中去重的原因。//考虑可能有正数和负数的情形。

2024-02-03 14:07:38 300

原创 190 希尔排序和计数排序

希尔排序也称为缩小增量排序,原理是将待排序列划分为若干组,每组都是不连续的,有间隔step,step可以自己定,但间隔step最后的值一定是1,也就是说最后一步是两两比较。计数排序:计数排序是一个非基于比较的排序算法,他首先要找到数组的最大值和最小值,然后再根据最大值和最小值申请频率,其实就是个数组,每个数在数组中出现的频率,我们这里暂且以桶来表示,每个桶对应一个数在原数组中出现的评率,如果一个桶为1就表示和这个桶对应的这个数在原数组中只出现一次,如果为2就表示出现两次。

2024-02-03 12:13:18 288

原创 189 基数排序

问题描述:基数排序的方式可以采用最低位邮箱LSD(Least sgnificant digital)法或最高位邮箱MSD(Most sgnificant digital)法,LSD的排序方式由键值的最右边开始,而MSD相反,由键值的最左边开始,我们这里使用LSD法,原理就是一个数组我们首先根据他的各位进行排序,然后根据十位,百位,这里最多排多少位根据他们的最大值确定。

2024-02-02 17:59:36 72

原创 188 堆排序和桶排序

桶排序:桶排序是将数组分散到有限的桶中,然后每个桶再分别排序,而每个桶的排序又可以使用其他排序方法进行排序,可以使桶排序也可以是其他排序,桶的大小可以随意定,如果桶的数量足够多就会变成后面的计数排序,起始我们可以把桶固定在一个数量,根据数组的大小来确定,也可以自己定,比如3个或者5个7个不等,桶的大小确定之后,下一步需要把数组中的值一一存放在桶中,小的值会放在前面的桶里,大的值会放在后面的桶里,中间的值会放在中间的桶里,然后再分别对每个桶进行单独排序,最后再把所有的桶的数据合并在一起就得到排序好的数组。

2024-02-02 17:27:38 234

原创 187 快速排序和归并排序

问题描述:快速排序的原理是首先找到一个中枢,把小于种树的值放在他的前面,大于中枢的值放在他的后面,并依照该方法对两部分进行快速排序。使用递归的方法进行求解。

2024-02-02 14:46:29 155

原创 186 插入排序

问题描述:插入排序的原理是默认前面的元素是已经排序好的,然后从后面逐个读取插入到前面排序好的合适的位置,相当于打扑克的时候每获取一张牌的时候就插入到合适的位置一样。插入排序可以分为两种,一种是直接插入,一种是二分法插入,直接插入的原理比较简单,就是往前逐个查找直到找到合适的位置然后插入,二分法插入是先折半查找,然后找到合适的位置在插入。说道二分法查找,找到合适的位置在插入,查找方式很多,有斐波那契查找、哈希查找、二分法查找等。将for循环改为while循环。

2024-02-02 14:15:09 84

原创 185 选择排序

我们看到每一次循环的时候没有直接交换,而是用index保存最大的元素的索引,最后才进行处理。

2024-02-02 13:03:26 111

原创 184 排序-冒泡排序

/首先第二个元素与第一个元素进行比较,如果后者比前者大,交换,然后一直交换到最后,最后形成从大到小的排列。若要变成从小到大的排列就是array[j]<array[j-1],将if中变为该判断表达式。除此之外,循环还可以从后往前交换;还可以将内部循环改为while循环。

2024-02-01 17:11:20 80

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除