- 博客(96)
- 资源 (1)
- 收藏
- 关注
原创 NO.2 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
参考讲解链接:https://programmercarl.com/0059.%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5II.html#%E6%80%9D%E8%B7%AF。参考链接:https://www.bilibili.com/video/BV1tZ4y1q7XE/?解题思路:我认为实际上是对暴力解法的优化,暴力解法使用两层for循环,该解法把第二层for循环改成了while,只有在必要的时候更新滑动窗口的起始位置。还有就是当n为奇数时,中间的一个元素要单独赋值。
2023-10-26 22:16:30 625
原创 NO.1 | 704. 二分查找,27. 移除元素
双指针思路讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html#%E6%80%9D%E8%B7%AF。解题思路:用覆盖代替删除,舍弃val的元素,然后被其他元素覆盖。
2023-10-25 21:25:55 705
原创 TRT推理AttributeError: ‘NoneType‘ object has no attribute ‘create_execution_context‘出错原因与解决
TensorRT 推理AttributeError: 'NoneType' object has no attribute 'create_execution_context'出错原因与解决在出错的这一行打个断点,发现`engine = runtime.deserialize_cuda_engine(f.read())`这一行在执行完之后,`engine`是`None`,如下图所示,说明此时就已经出问题了,程序并没有能够成功的从engine文件反序列化出模型。因此执行到`engine.create_ex.
2022-08-26 15:16:32 8259 6
原创 TensorRt推理部署优化方案及流程概述
1.首先,进行模型转换。目前掌握的模型转换方案有两种,分别是pytorch–>onnx–>engine方案和pytorch–>wts–>engine方案。2.使用转换得到的TensorRT模型进行推理3.TensorRT推理结果的decode和后处理。
2022-08-25 10:20:03 2150
原创 ROS2给python添加自定义消息
为ros2的python节点添加自定义消息,python节点无法自定义消息,方法是先建一个cmake的功能包,在里面添加msg,然后在python节点中导入该msg
2022-07-26 13:41:25 2131
原创 自动驾驶行业开源数据集调研
相机采集帧率一般在10Hz左右一般都提供了使用数据集的dev代码,关注标注格式的同时也要关注标注了那些信息。只要标注的内容符合要求,即使标注格式不是我们想要的也可以通过dev进行转换。为了适应不同的场景,大多数数据集都采集了多个场景,比如高速、城市、乡村,但是一般都没有以此划分。......
2022-07-18 17:01:27 2165
原创 Xavier中使用TensorRT的Python API对Pytorch模型进行FP16精度和INT8精度转换
FP16推理约6-8毫秒,总体帧率22帧 INT8推理4-6毫秒,总体帧率23帧没有必要INT8,影响速度的瓶颈不在inference了,对加载图像和后面推理结果处理以及可视化等部分耗时优化收益更大
2022-07-16 16:04:24 3691 4
原创 C++笔记1
2.可以作为函数的输入参数或返回类型3.可以引入成员函数,更好的表达函数与数据的相关性取值空间1.,定义在头文件中,通过类模板实现2.超过取值空间会产生溢出内存对齐1.查看方法 ,C++11引入2.结构体内存对齐2.头文件表示引用头文件中的内容。1.缺省初始化2.直接/拷贝初始化3.其他初始化1.为字面值引入前缀和后缀以改变其类型2.可以引入自定义后缀来修改字面值类型,通过用于添加物理量...
2022-06-12 13:12:44 128
原创 nvcc编译出错 undefined reference to `cublasCreate_v2‘
nvcc编译出错 undefined reference to `cublasCreate_v2'
2022-06-11 10:42:53 2230
原创 GPU和CUDA基础知识
显卡的作用独立显卡和集成显卡的区别NVIDIA显卡分类显卡和GPU的关系GPU的发展历程CUDACPU和GPU英伟达GPU架构显存和内存GPU能与不能CUDA并行计算流程CUDA硬件描述CUDA内存模型线程束cudaEvent
2022-06-10 17:14:57 2443
原创 cuda编程入门:使用cuda实现矩阵加法
2.头文件关于cuda操作的一些接口都在这个头文件里3.申请内存cudaMalloc()接口4.转移拷贝cudaMemcpy()接口5.释放空间cudaFree接口6.核函数1.定义2.调用7.编译与运行使用nvcc进行编译生成可执行文件运行8.源代码附上源代码.........
2022-06-08 13:51:48 1266
原创 232. 用栈实现队列 和 225. 用队列实现栈
232. 用栈实现队列 和 225. 用队列实现栈1. 总体思路:2. 用栈实现队列:2. 用队列实现栈:题号:力扣232,力扣225知识点:栈,队列,模拟目标完成度:67/150总结题干:1. 总体思路:1.用栈模拟队列,使用两个栈,不断倒腾。2.用队列模拟栈,使用两个队列,其中一个是备份。2. 用栈实现队列:1.push:直接压入栈A2.pop:如果栈B为空,把栈A中的所有元素pop然后push到栈B。然后栈B pop。3.peek:复用pop,但是不能删除这个元素,要
2022-05-28 12:36:13 157
原创 459. 重复的子字符串
459. 重复的子字符串题号:力扣459知识点:字符串匹配,kmp目标完成度:66/150总结题干:思路:1.利用前缀表判断是否为子串重复多次构成。2.由子串重复多次构成的字符串的前缀表特征为第一个重复子串的前缀表的长度是主串长度的一个因子。前缀表的最后一个数是最大的。3.(len-(next[len-1]+1))表示第一个子串的长度,如果是主串长度是其倍数,说明主串是由重复子串构成。不满足则不是。class Solution {public: // 得到前缀表 v
2022-05-28 10:24:04 189
原创 28. 实现 strStr()
@[TOC](28. 实现 strStr())题号:力扣028知识点:KMP,字符串目标完成度:65/150总结题干:思路:1.经典的KMP匹配。查找子串在主串中的位置。2.next是前缀表:记录下标i之前(包括i)的字符串中,有多大长度的相同前缀3.首先通过get_next函数计算模式串(子串)的前缀表。4.然后通过一个for循环遍历主串,如果主串中的元素与子串中的元素不相等,则子串位置根据前缀表回退。5.如果主串中的元素与子串中的元素相等,则子串指针位置后移一个。6.当子
2022-05-27 22:04:04 113
原创 YOLOv5算法相关论文整理
个人学习记录:看了yolov5的代码还是有点懵,对yolov5中涉及到的相关的论文进行了整理论文合集下载链接稍后补充Hendrycks D, Gimpel K. Gaussian error linear units (gelus)[J]. arXiv preprint arXiv:1606.08415, 2016.Lin T Y, Goyal P, Girshick R, et al. Focal loss for dense object detection[C]//Proceedings .
2022-05-26 19:02:46 7404 3
原创 剑指 Offer 58 - II. 左旋转字符串
剑指 Offer 58 - II. 左旋转字符串题号:力扣剑指 Offer 58 - II知识点:字符串,双指针目标完成度:64/150总结题干:思路:1.使用快慢指针,先让fast走n步,并记录下前n个字符(也就是左边的n个字符)到left_s中。2.然后快指针和慢指针同时往右移动,将快指针所指的字符放到慢指针所指的位置,实现第n个之后的字符前移n位。3.然后再将left_s中的字符接着慢指针的位置更新到字符串的右边// C++class Solution {public
2022-05-25 22:32:19 121
原创 18. 四数之和
18. 四数之和题号:力扣18知识点:双指针目标完成度:63/150总结题干:思路:class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); vector<vector<int>> ret;
2022-05-23 21:05:42 103
原创 15. 三数之和
15. 三数之和题号:力扣15知识点:数组,双指针目标完成度:62/150总结题干:思路:1.首先对数组进行排序,为了后续使用双指针2.使用一层遍历,这层遍历的数当作a,然后再定义左指针和右指针,分别对应b和c。3.固定a的值,使用while循环,查找符合a+b+c=0的b和c的值。4.难点:注意输出结果去重,去重方法,如果当前位置和上一个位置的数值一样的话,就跳过。class Solution {public: vector<vector<int>&
2022-05-22 14:30:43 116
原创 454. 四数相加 II
454. 四数相加 II题号:力扣454知识点:数组,哈希目标完成度:61/150总结题干:思路:1.简单的暴力想法就是四层循环遍历四个数组,计算四数相加为0的次数,但这种想法应该会超时。2.划分为两两相加,nums1和nums2求和得sum1,nums3和nums4求和得sum2,然后再计算sum1 + sum2 == 0的次数,这样可以将时间复杂度降到n2n^2n23.再改进一下,先对nums1和nums2求和,并将求和的结果存储在一个哈希表中,key值为他们的和,value值为这
2022-05-22 13:40:23 192
原创 202. 快乐数
202. 快乐数题号:力扣202知识点:哈希目标完成度:3/150总结题干:思路:1.这个题的难点是无限循环时的处理,如何在无限循环时退出程序。2.无限循环说明sum的值重复出现过,这样就好处理了。使用一个unordered_set集合来判断sum是否重复出现。3.如果sum重复出现了,则为false4.如果sum为1了,则为trueclass Solution {public: // 计算sum int getSum(int n){ int sum
2022-05-22 13:08:05 139
原创 438. 找到字符串中所有字母异位词
438. 找到字符串中所有字母异位词题号:力扣438知识点:字符串,滚动窗口目标完成度:59/150总结题干:思路:1.如果s的长度小于p,则s中必然找不到与p是异位词的子串。2.异位词的特点是每个字母出现的次数一直,但是出现的顺序不一定相同。因此我们建立两个容器,来记录p中和滚动窗口中每个字母出现的次数,由于字母一共只有26个,所以容易大小为26。3.第一个for循环相当于是对scount进行初始化,同时统计p中每个字母出现的次数。4.第二个for循环是滚动窗口,窗口的长度为p
2022-05-22 12:46:20 274
原创 142. 环形链表 II
142. 环形链表 II题号:力扣142知识点:链表,双指针目标完成度:58/150总结题干:思路:1.设置一个快指针和一个慢指针,快指针每次走两步,慢指针每次走一步,当快指针和慢指针相遇时,说明有环2.然后再分别从头结点和相遇结点出发两个指针,每次同时移动一步,当这两个指针相遇时的结点就是入环的第一个结点(证明见链接https://www.programmercarl.com/0142.%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8II.html)
2022-05-22 09:56:30 160
原创 49. 字母异位词分组
49. 字母异位词分组题号:力扣49知识点:哈希,字符串目标完成度:57/150总结题干:思路:1.异位词就是字母类别和个数相同的单词,但是字母的排列顺序不同。2.我们可以先对所有单词排个序,如果是异位词的话,排序之后应该是一样的字符串。3.然后再以排序之后的字符串为key值,以排序之前的单词为value值,存到unordered_map中4.异位词由于有相同key值的,所有在unordered_map中存储在同一个key值之下。5.最后再通过一个迭代器将每一个key值对应的存
2022-05-22 09:47:03 221
原创 【论文学习记录】Ultra Fast Structure-aware Deep Lane Detection 车道线检测算法解读
Ultra Fast Structure-aware Deep Lane Detection论文链接github0.摘要1.当前像素级分割的问题场景适应能力差速度慢2.人类识别车道线的特点利用了上下文信息(可以理解为人类的联想能力)和全局信息3.本文车道线检测算法基于人类识别车道线的特点–提出结构损失函数(structural loss)速度快,可以应对有挑战性的场景4.具体实现基于行的选择(row-based selecting) --> 速度变
2022-05-21 15:29:01 1706
原创 面试题 02.07. 链表相交
面试题 02.07. 链表相交题号:力扣面试题 02.07知识点:链表目标完成度:56/150总结题干:思路:1.先看下题目,题目比较长,大致意思是找到从后往前的公共子串的第一个结点。看到这个题目想到了一个类似的题目14. 最长公共前缀。2.14题这个比较简单,就是求字符串的最长公共前缀,而本题实际上可以理解为求最长公共后缀的问题。3.根据以上思路,可以先求出headA和headB的链表长度,假设headA的长度大于headB,计算出他们的长度之差为delta 4.然后先让
2022-05-20 21:33:32 210
原创 19. 删除链表的倒数第 N 个结点
19. 删除链表的倒数第 N 个结点题号:力扣19知识点:链表,双指针目标完成度:55/150总结题干:思路一:1.建立一个虚拟头结点dummyHead2.先求出链表的总长度,然后算出倒数第n个结点的从前往后数的位置3.while循环结束后cur指向要删除结点的前一个结点class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode *dummy
2022-05-20 20:36:28 163
原创 24. 两两交换链表中的节点
24. 两两交换链表中的节点题号:力扣24知识点:链表目标完成度:54/150总结题干:思路:1.模拟题,主要是想明白这个过程2.建一个虚拟头结点dummyNode,以减少对头结点的单独处理3.先让当前结点的后继结点指向其后继结点的后继结点4.然后让当前结点的后继结点的后继结点指向 原当前结点的后继结点(此处需要建一个临时结点tmp)5.然后让当前结点的后继结点的后继结点的后继结点指向 原当前结点的后继结点的后继结点的后继结点(此处需要建一个临时结点tmp2)6.最后让当前
2022-05-20 19:57:25 175
原创 203. 移除链表元素
203. 移除链表元素题号:力扣203知识点:链表目标完成度:53/150总结题干:思路:1.题意比较简单,C++代码如下:2.第一个while循环用来处理头结点,如果头结点的值等于val的话,需要将头结点后移,后移后并将原来的头结点删除3.第二个while循环用来处理非头结点,如果当前结点的后继结点的值等于val,需要将后继结点删除,也就是让当前结点的后继结点指向当前结点的后继结点的后继结点(跳过一个后继结点,就相当于删除了,后面的delete是为了释放没有的结点所占的空间)
2022-05-18 21:54:46 147
原创 209. 长度最小的子数组
209. 长度最小的子数组题号:力扣209知识点:数组,滑动窗口目标完成度:52/150总结题干:滑动窗口解法思路:1.先让窗口的右边界移动,如果子数组的和大于或等于了target,记录子数组长度,并同时移动窗口的左边界。2.在左右边界移动的过程中,只要子数组的和大于等于了target,那么就会得到一个子数组的长度,过程中需要一直维护这个变量为当前最小值3.窗口左侧边界的移动时,说明子数组之和已经大于或等于了target,为了测试减小一个左侧的数是否还成立,若成立就得到了更小的子
2022-05-16 22:19:35 81 2
原创 27. 移除元素
27. 移除元素题号:力扣27知识点:数组, 双指针目标完成度:51/150总结题干:思路:1.使用快慢指针解法,fast指针在前面“探路”,每次循环右移一步。2.当fast指针和val不相等时,slow紧跟fast,相当于把fast复制了一遍,但是还是只用了同一个数组3.当fast指针和val相等时,slow不跟,相当于就不复制了# C++ 双指针class Solution {public: int removeElement(vector<int>
2022-05-16 18:45:43 95
原创 3. 无重复字符的最长子串
3. 无重复字符的最长子串题号:力扣003知识点:字符串,滑动窗口目标完成度:50/150总结题干:思路:1.通过散列表来判断该字符是否出现过,并用value记录该字符最近一次出现的下标位置2.left为左指针,指向起点位置-1。或者出现重复字符后,指向新的起点位置–该字符上次出现的位置3.res为维护的表示最长字符串长度的变量class Solution: def lengthOfLongestSubstring(self, s: str) -> int:
2022-05-14 14:30:58 102
原创 2016. 增量元素之间的最大差值
2016. 增量元素之间的最大差值题号:力扣2016知识点:数组目标完成度:49/150总结题干:思路:1.题目意思解读:如果后面的数比前面的大,就计算后面的数比前面大多少,最后返回大的最多的差值。2.从前向后遍历数组,维护一个遍历到的最小值min_num,每遍历一个元素判断其是否大于前面的出现过的最小的元素,如果是,则计算其差值,并维护一个最大差值变量max_delta,将其差值与最大差值变量比较取较大者保留。class Solution: def maximumDi
2022-05-11 20:20:19 75
原创 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面题号:力扣 剑指 Offer 21知识点:双指针目标完成度:48/150总结题干:常规做法:1.遍历数组,把奇数元素放在nums1里面,把偶数元素放在nums2里面2.返回nums1+nums2# 常规做法class Solution: def exchange(self, nums: List[int]) -> List[int]: nums1 = [] nums2 = []
2022-05-10 19:13:00 188
原创 53. 最大子数组和
53. 最大子数组和题号:力扣53知识点:动态规划目标完成度:47/150总结题干:思路:1.如果子数字nums[i, j]的和最大,则说明在i之前的元素和<=0,在j之后的元素和<=02.状态转移方程如下class Solution: def maxSubArray(self, nums: List[int]) -> int: if len(nums) == 0: return 0 dp = [
2022-05-09 22:42:29 146
原创 125. 验证回文串
125. 验证回文串题号:力扣125知识点:双指针,字符串目标完成度:46/150总结题干:方法1-双指针:1.由于忽略字母的大小写,首先使用s = s.lower()把字符串统一成全部小写2.然后使用双指针,如果左指针和右指针都是指向的数字或字母,判断左右指针指向的字母或数字是否相同,如果相同,则left += 1, right -= 1, 继续向中间靠拢;如果不同则返回False,终止。3.如果左指针不是指向的数字或字母,则left += 1。4.如果右指针不是指向的数字或字
2022-05-08 09:29:40 387
原创 680. 验证回文字符串 Ⅱ
680. 验证回文字符串 Ⅱ题号:力扣00680知识点:双指针目标完成度:45/150总结题干:思路:1.题干补充一个条件:最多删掉一个字符并且不能移动其他字符2.使用双指针的方法解答,如果头指针和尾指针的字符相同,则向中间移动继续判断。3.如果头指针的字符和尾指针的字符不相同,则判断删除左侧或删除右侧一个字符后的子串是否为回文串。class Solution: def validPalindrome(self, s: str) -> bool:
2022-05-07 21:38:26 344
原创 409. 最长回文串
409. 最长回文串题号:力扣409知识点:贪心,哈希,字符串目标完成度:44/150总结题干:思路:1.回文字符串的样式:BAB2.我的想法是,首先要构成回文字符串,除了中间的那个类的字母数量可以是奇数个,其他的都必须是偶数个。3.如果s中的某类字母的个数是偶数2n个,则这2n个在构造回文字符串时都可以用上。4.如果s中的某类字母的个数是奇数2n+1个,则除了回文字符串中间位置可以允许放奇数个字符,其他位置用上2n个。5.那么放在中间的字母是哪一类呢?根据贪心思想,放奇数次字
2022-05-07 19:51:29 214
原创 605. 种花问题
605. 种花问题题号:力扣605知识点:贪心,数组目标完成度:43/150总结题干:思路:1.遍历数组,如果当前位置是0,并且它前一个位置和后一个位置也是0,则说明该位置可以种花。把该位置种上花,该位置的元素改为1,表示已经有花了。2.难点在于边界的处理,第一个位置和最后一个位置如果是0时需要特殊处理。class Solution: def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:
2022-05-06 21:10:18 368
原创 TVM入门:TVM编译Pytorch模型工作流程
TVM编译Pytorch模型工作流程TVM官方文档参考0.导包import tvmfrom tvm import relayimport numpy as npfrom tvm.contrib.download import download_testdata# PyTorch importsimport torchimport torchvision1.加载一个模型这里以resnet18为例model_name = "resnet18"model = getattr(
2022-05-05 16:24:41 2105 1
原创 506. 相对名次
506. 相对名次题号:力扣506知识点:排序,哈希目标完成度:42/150总结题干:思路:1.此题解法略繁琐,但思路还是有价值的2.首先看到题目根据分数得出排名,可以看作是一个映射关系:得分–>排名,一般出现映射关系的都可以用哈希来做3.首先在ret中按照分数排个名,然后把排名信息转移到字典中,以此建立起映射关系(key:得分, value:排名)4.然后按照score中的分数出现顺序输出排名class Solution: def findRelativeRa
2022-05-04 21:53:20 232
RUIE水下图像数据集
2021-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人