- 博客(15)
- 收藏
- 关注
原创 【leetcode-面试经典 150 题】-6.轮转数组
比如,轮转次数为k,那么轮转所做的操作只是把数组中[n-k,n-1]的元素整体移到数组[0,k-1]的位置,把数组中[0,n-k)的元素整体移到[k,n-1]的位置。分析:首先轮转的次数与数组的长度是有关系的,当轮转次数等于数组长度时,其轮转前和轮转后是不变的,所以为了减少轮转次数,我们可以设置一个新的变量(count)来记录实际需要的轮转。那我们只能再考虑其他的了,经过观察,轮转次数貌似跟数组元素之间的整体移动也存在关系。向右轮转 1 步: [99,-1,-100,3],将数组中的元素向右轮转。
2024-10-30 16:23:48
297
原创 [二分查找]-有效的完全平方数
返回 false ,因为 3.742 * 3.742 = 14 但 3.742 不是一个整数。这题只需注意一点,那就是用int类型可能会导致数据溢出,所以需要使用long类型的。是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。返回 true ,因为 4 * 4 = 16 且 4 是一个整数。不能使用任何内置的库函数,如。是一个完全平方数,则返回。
2024-10-30 15:25:03
331
原创 [二分查找]-在排序数组中查找第一个元素和最后一个元素
我是用一次二分找到那个target并记录了这个target的下标,因为整个数组的元素是有序的,所以说如果在数组中找到了这个元素,那么与他相等的这个元素必然在其左边或者右边,或者两边都有。当然最难解决的是边界问题,所以一开始若是target的左边没有元素了(对应代码中的--i_t<0,直接令其等于返回的下标值,同理右边的元素也是如此),若是有则进入循环将i_left和j_right的值进行更新。采用二分法来去寻找左右边界,为了让代码清晰,我分别写两个二分来寻找左边界和右边界。下述寻找右边界是同理的。
2024-10-30 15:11:12
708
原创 [二分查找]-x的平方根
8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。不允许使用任何内置指数函数和算符,例如。由于返回类型是整数,结果只保留。最后将求出的值转换为int.
2024-10-28 17:17:35
587
原创 [二分查找]-搜索插入位置
分析:首先这题可以用二分查找来解决,但是与普通的二分查找有所不同,因为其目标值若是不存在与数组中,必须返回它将按照顺序插入的位置。所以我们可以推断用普通的二分查找,可以确定出其所处的数值范围,而最终left与right会相等,所以可以将其归为左闭右开的区间,若是其值不存在数组内,则其必然等于right返回的位置。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为。
2024-10-28 15:32:06
240
原创 [代码随想录]-二分查找
这里需要判断right是等于middle还是等于middle-1。判断的依据是nums[middle]>target,所以middle必然不是我们要寻找的值。判断的依据是nums[middle]>target,所以下一个搜索的左区间是不包含middle所在的值了。判断的依据是nums[middle]
2024-10-26 23:11:11
350
原创 西电超算使用入门
在-gpgpu参数中可以选,"2 type=TeslaV100-SXM2-32GB gmem=100",表示申请2张GPU类型为TeslaV100-SXM2-32GB,每张卡的可用gpu mem大于100M的节点执行作业,并且在一个节点上。将这两个文件下载下来,其中有个以.key为后缀的文件,适合绝大多数ssh连接,.ppk结尾的是使用于putty连接。取消所有工具的加载,使用module purge命令。填入你想设置ssh连接的密码,点击确定。使用jqueues查看所有队列。可以查看目前已经加载的工具。
2024-10-25 20:49:52
714
1
原创 【leetcode-面试经典 150 题】-5.多数元素
分析:这题就比较简单,突然感觉中等题和简单题的差距有点大。我的思路是首先将数组排好序,然后设置一个flag用以计数,如果flag>n/2直接跳出循环,并且返回得到的值。后面看了力扣官方题解中关于排序方法的描述:如果将数组。中的所有元素按照单调递增或单调递减的顺序排序,那么下标为 ⌊2n⌋ 的元素(下标从。你可以假设数组是非空的,并且给定的数组总是存在多数元素。,返回其中的多数元素。多数元素是指在数组中出现次数。(可能需要证明一下)。
2024-10-24 19:27:48
175
原创 【leetcode-面试经典 150 题】-4.删除有序数组中的重复项 II
将j设为新数组的下标,过程如下图所示,其中计数的逻辑就是,当前后相等时,count就++,当遇到第一个不相等的元素时,说明开始了下一个元素,于是将count重设为1,以便为下一个元素计数,而循环中的另一个判断则是保证该元素的重复数量始终在两个以内。对后面的每一位进行继续遍历,能够保留的前提是与当前位置的前面 k 个元素不同(答案中的第一个 1),因此我们会跳过剩余的 1,将第一个 2 追加,得到 1,1,2。对于后面的任意数字,能够保留的前提是:与当前写入的位置前面的第 k 个元素进行比较,不相同则保留。
2024-10-24 18:52:35
985
原创 深度学习入门
DataLoader类提供了对数据集的并行加载,可以有效地加载大量数据,并提供了多种数据采样方式。常用的参数有:dataset:加载的数据集(Dataset对象)batch_size:batch大小shuffle:是否每个epoch时都打乱数据num_workers:使用多进程加载的进程数,0表示不使用多进程# 数据转换])# 下载并加载训练集# 下载并加载测试集除了使用内置的数据集,我们也可以自定义数据集。自定义数据集需要继承Dataset类,并实现__len__和两个方法。
2024-10-23 14:56:15
2026
原创 Detectron2修改数据集-笨方法
复制一个train_net.py文件,在里面直接配置数。目录下面,打开builtin.py文件。目录下面,打开builtin.py文件。修改colormap.py。这种方法没有实操成功。
2024-10-23 14:49:34
359
原创 AWP-ODC在linux中的安装
依赖软件openmpi,cuda,其中老版本的awp-odc()仅支持cuda10及以下,新版本(自己改的纹理内存,但是性能有下降)支持最新版的cuda和openmpi。
2024-10-23 14:27:43
1724
原创 【leetcode-面试经典 150 题】-3.删除有序数组中的重复项
分析,首先该题目是一个非严格递增排列的数组,因此可以考虑使用双指针。当nums为空时,返回0。其次可以设置两个指针,在开始时同时指向第一个元素,因为,不管怎么样,只要数组中有元素,总会剩下一个元素。之后使得其中一个指针j快速扫描,是否与j第一次指向的元素相同,若是不同则num[i]=num[j]。因为在遍历时num[j]比较的是num[j-1]所以num[0]已经被比较过了(我是这样理解的)。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。
2024-10-23 14:14:31
191
原创 【leetcode-面试经典 150 题】-2.移除元素
分析:这个题目就很简单了,先申请一个数组用以存储和val不同的元素(其实不申请也行)和一个记录该数组中存入多少元素的计数器j,之后判断nums中的元素是否和val相同,若不相同直接进新数组,并且j++。元素的顺序可能发生改变。发现其内存消耗不如上面那个(有点疑惑)另一个不用申请新数组的。
2024-10-23 11:48:44
168
原创 【leetcode-面试经典 150 题】-1.合并两个有序数组
就是每次按照规则(那个小)取出数组1或者数组2的元素,放进另一个数组中,最终将该数组的值赋值给数组1,即满足题目要求。其中i为数组1的指针,j为数组2的指针。首先是同向指针,把数组分成三个部分:[0,i),在这个区间的数据代表处理过并且我需要的数据,[i,j)这个区间代表我处理过但是不需要的数据,[ j , arr.length)代表我们目前没有处理过的数据。其次是异向指针,[0,i)和(j,arr.length)都是已经处理好的数据,是我们需要的,[i,j]是我们待处理的元素。中,使合并后的数组同样按。
2024-10-23 10:56:41
572
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人