- 博客(23)
- 收藏
- 关注
原创 【复盘】LeetBook初级算法 -- 数组
删除排序数组中的重复项给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:输入:nums = [1,1,2]输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。解题思路:去重题,用双指针法(哨兵).slow指.
2022-02-06 13:21:36
1148
原创 【KMP】next数组理解
生成next数组时,k=next[k],理解:while(k!=-1 && s[k+1] != s[i]) k = next[k];当前公共前后缀无法继续延伸了,回溯一步,或者说收缩到上一个较短的公共前后缀位置, 继续尝试延伸(尝试匹配).具体讲,前缀串的右边界往左收缩,意味着后缀串的左边界往右收缩.收缩到哪个位置呢?当前公共前后缀的位置是k,根据next数组的定义,上一个较短的公共前后缀位置就是next[k]...
2022-01-15 18:39:11
1550
原创 【复盘】滑动窗口
#3. 无重复字符的最长子串输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。滑动窗口解法:1.map保存了字符到最近下标的映射关系。2.left从0开始,right从1开始,只要s[right]不在map,或者在map里但是最新下标比left小(表明曾经在滑动窗口内后来滑出去了),right++。更新map[s[right] ]= right。当前滑动窗口
2021-12-27 22:20:30
158
原创 【复盘】深度优先搜索与广度优先搜索
#994 腐烂的橘子BFS解法:新增矩阵保存每个橘子的当前最大腐烂时间。初始腐烂橘子最大腐烂时间为0,其他情况为最大值。记录新鲜橘子的总数。初始时,所有的坏橘子放入BFS的cache queue。然后从cache queue挨个出队为cur,访问cur的上下左右,如果是新鲜橘子,把它腐烂,修改它的腐烂时间为cur的最大腐烂时间+1,新鲜橘子总数减一。新鲜橘子总数减为0时,返回这个橘子的最大腐烂时间。cache queue为空时,新鲜橘子总数仍然大于0,则返回-1.DFS解法:新增矩阵保存每个橘子的
2021-12-21 09:42:30
101
原创 【复盘】双指针
有序数组的平方给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]第一步,找出绝对值最小的数以及位置k.第二步,以k为中心,左右两个下标分别向数组两端移动.选出绝对值较小者,计算平方放入结果,并且移动下标.第三步,直到左右两个下标都到达了数组两端.
2021-12-16 22:35:52
177
原创 【复盘】二分查找
二分查找704 二分查找278 第一个错误的版本35 搜索插入位置代码模板:left = 0;right = nums.size()-1;while(left <= right){ mid = left + (right-left)/2; if(nums[mid]==target) return mid; else if(nums[mid]<target) left = mid+1; else right = mid-1;}return -11.循
2021-12-16 14:40:30
483
原创 Leetcode 15. 三数之和 再谈three sum
之前总结过three sum问题的算法流程,今天总结一下这道提的一个细节,就是去重。三个数,nums[i] 、nums[j]、nums[k],这几个数字可以重复,但是三数集合不能重复出现在结果里。因此这三个数,分别都要跳过重复数字。...
2021-11-15 14:36:05
55
原创 Leetcode 977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]思路:双指针先找到绝对值最小的位置k,从k向左右两边延伸.比较左右位置,选取平方小的.时间复杂度: O(n)int left = k-1;int right = r+1;while(left&g.
2021-11-14 20:42:36
191
原创 Leetcode 704. 二分查找
1.mid的计算,mid = begin + (end - begin) / 2;2.循环继续的条件,begin <= end, 包括等号。
2021-11-12 16:52:11
177
原创 352. 将数据流变为多个不相交区间
将数据流变为多个不相交区间给你一个由非负整数 a1, a2, …, an 组成的数据流输入,请你将到目前为止看到的数字总结为不相交的区间列表。实现 SummaryRanges 类:SummaryRanges() 使用一个空数据流初始化对象。void addNum(int val) 向数据流中加入整数 val 。int[][] getIntervals() 以不相交区间 [starti, endi] 的列表形式返回对数据流中整数的总结。map<int, int> low_to_.
2021-10-18 22:37:22
59
原创 2021-10-18 187. 重复的DNA序列
重复的DNA序列所有 DNA 都由一系列缩写为 ‘A’,‘C’,‘G’ 和 ‘T’ 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。输入:s = “AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”输出:[“AAAAACCCCC”,“CCCCCAAAAA”]寻找长度为10的,重复出现过的子串. Hash可以满.
2021-10-18 22:11:26
149
原创 2021-10-13 Leetcode 130. 被围绕的区域
给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。解法一,并查集。每个格子有一个属性isEdged,是否在矩阵的边上。遍历每个格子,如果当前格子cur是’O‘,上邻居top也是’O’,将cur并入top所在的集合。若左邻居left也是’O’,将cur所在的集合并入left所在的集合。集合合并的时候,isEdged属性也合并到集合的root节点格子。然后,遍历集合中的每个’O’,查找所属集.
2021-10-14 15:01:33
68
原创 2021-10-12
并查集的压缩优化并查集有两个基本操作:查:查找x、y的root并:如果x、y的root不相同,修改y的root为x的root数据结构parents[x]代表x的父级,如果不压缩,最坏情况下【n个元素串成一串】找到root的时间复杂度是O(n)。优化:将parents扁平压缩为两层,root节点是第一层,同一集合中其他的节点是第二层,它们的parents都是root。这样,查找root的时间复杂度始终是O(1)代码实现:int findRoot(int x){ if(x != parents
2021-10-12 15:55:42
57
原创 排序类题目总结归纳
这里写自定义目录标题欢迎使用Markdown编辑器排序类题目总结归纳功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何
2021-09-30 15:05:26
114
原创 2021-09-05 Leetcode 15. 三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:暴力求解,3重循环.时间复杂度:O(n^3)这个解法超过了Leetcode的运行时间限制.无法提交..
2021-09-05 23:23:45
68
原创 Leetcode 389. 找不同
我的思路:遍历s,建立map,计数.遍历t,在map中查找每个字母,没找到或者(–计数)为负数,则返回该字母.时间复杂度:O(n)空间复杂度:O(n)官方题解:题解一:题目给定了条件,只有26个小写字母.于是使用长度为26的vector即可.字母-'a’作为vector的下标,值为字母出现次数.扫描一遍s,完成vector.然后,扫描一遍t.每个字母查找vector,(–计数),如果为负数,则返回该字母.时间复杂度:O(n)空间复杂度:O(n)题解二:分别遍历s,t. char转为
2021-08-31 22:47:03
62
原创 2021-08-30 Leetcode 350 两个数组的交集 II
目前还是练的太少,自己想的思路是两个数组都遍历,各自建立map记录出现次数,再处理两个map,得出交集并且比较两个map得出某个数字的最少出现次数.看了官方的解法,更优的思路是,只需建立一个数组的map.遍历第二个数组,如果map查到了,并且value–后大于0,则放入交集.按这个思路,少建立了一个map.应该更为优化.怎么理解呢?建立第一个map后,交集中某个数字的出现次数,最多就是map中的value,或者是它在第二个数组的出现次数.哪个小,次数就是哪个.于是,出现次数=min(value in
2021-08-30 23:23:15
54
原创 xilinx TRD 2019.2
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/176783395/Zynq+UltraScale+MPSoC+VCU+TRD+2019.2
2019-12-10 09:35:51
433
1
原创 python3数组转存为图片
看似比较简单的一个东西,折腾了1个多小时才搞定。主要原因是各种python第三库的版本问题。最终解决问题的方法是:1.安装python3版本的pillowconda install pillow2.使用pillow的Image.fromarrayfrom PIL import ImageImage.fromarray(image_array).save(your_pic.jpg)...
2019-09-23 19:57:26
3196
原创 解决import tensorflow出现的numpy版本报错问题
1.现象:2.原因分析:当前安装的tensorflow 1.12.0对应的numpy版本太低3.解决方法,以下操作都是在activate conda环境下执行:先升级pip(这个环境的tensorflow是用pip装的,不是conda install):python -m pip install --upgrade pip然后升级numpy:(可能不是必须的步骤)pip inst...
2019-09-19 20:21:45
7716
原创 解决navicat连接mysql8.0报错的问题
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password' PASSWORD EXPIRE NEVER; FLUSH PRIVILEGES;
2019-08-12 10:37:42
275
原创 安装pycharm配置tensorflow
安装pycharm配置tensorflow下载pycharm community版本,免费。https://www.jetbrains.com/pycharm/download/#section=windows注意选择community版本
2019-07-30 20:13:30
150
原创 anaconda搭建tensorflow-gpu环境
搭建开发环境安装annaconda清华镜像站直接点下面的安装链接:安装tensorflow命令行安装也可以用conda navigator图形化安装安装GPU版本的tensorflow安装annaconda清华镜像站https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载 Anaconda3-4.2.0-Windows-x86_64....
2019-07-29 20:29:40
661
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人