自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 问答 (1)
  • 收藏
  • 关注

原创 代码随想录算法训练营第七天 | Java |454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和

首先遍历magazine数组,生成字母元素集合,然后遍历ransomNote数组,当出现某个元素时,在magazine对应的表中-1,当元素值小于0时,证明生成失败。首先遍历数组a,b,将a+b的和生成unorderedMap,key值记录和的值,value记录和出现的次数。然后遍历数组c,d,当前表中存在满足 0-(c+d) 的元素,证明有元素能满足题意,count对应增加。本题同第一题不同,本题要求在一个数组中找到三个不同的元素组成的集合满足和为零,且元素不重复。只输出元素集合,不考虑元素原下标。

2024-07-04 16:29:25 396

原创 代码随想录算法训练营第六天 | Java |242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

本题考查数组交集,即两个集合中重复的元素,立刻想到使用哈希表。判断是否无限循环的问题,若每轮循环结束后的 sum 值都未出现,则一直运行,若出现重复元素,则说明是无限循环的,这里使用 set 来判断。其次,需要记录符合条件元素的下标,此时考虑使用 map,不仅记录 Key 值,还保存元素 Value。字符串仅包含26个小写字母,利用数组下标区分不同字母,数组数值记录元素出现次数,遍历 s 时累加,遍历 t 时递减,最终遍历字母数组,若均为 0 ,则证明两个字符串为字母异位词,反之不是。

2024-06-13 11:32:30 582 2

原创 代码随想录算法训练营第二十五天 | Java |216.组合总和III,17.电话号码的字母组合

其次,开始抽象树形结构:按序操作,树的宽度为第一个数字映射的字母的个数,树的深度为数字的个数。首先抽象出的树形结构中,只能使用1-9,因此树的宽度为9;本题要求求k个数之和,因此树的深度为k。其次,解决本题需要考虑和的情况,因此回溯函数中要记录和,需要设置一个参数记录这一数值。为便于操作,可设计辅助字符串数记录数字和字母的映射关系。因为本题要求加和为n的K个数,所以在结束判别时当和、个数超出时都可直接判断结束。该列表不能包含相同的组合两次,组合可以以任何顺序返回。的字符串,返回所有它能表示的字母组合。

2024-04-15 14:23:18 273 1

原创 代码随想录算法训练营第二十四天 | Java |【回溯算法】,77. 组合

首先,组合不排序,只考虑元素个数。常规思路for循环嵌套,数值大时不现实。考虑回溯,即递归,逐层向下。【感觉掌握的还是皮毛】回溯后要退回上一步位置,退回很重要。其次,剪枝也可以再一定程度上减少计算压力。抽象为树形结构理解,集合大小为树的宽度,递归深度为树的深度。本质是暴力穷举,和递归函数相辅相成。

2024-04-13 13:17:20 222

原创 代码随想录算法训练营第十五天 | Java |102层序遍历,226.翻转二叉树,101.对称二叉树

借助队列记录每层的数据值,每层的队列单独保存到一个元素中。注意:递归法中递归执行的位置很重要,在判断左右节点都存在且相等后再向下判断;思路:首先要判断根节点下的左右节点是否都存在且数值相等,然后再执行递归,判断左右子树外侧和内侧是否对称。注意:遍历顺序要注意,迭代法用广度遍历实现,递归法用深度遍历(前序、后续遍历)。注意:有一个表记录每层的输出元素,有一个辅助队列记录当前层的元素。思路:翻转二叉树,实质上就是调换每个节点的左右节点。,翻转这棵二叉树,并返回其根节点。题目:给你一个二叉树的根节点。

2024-04-12 22:48:40 280 1

原创 代码随想录算法训练营第二十三天 | Java |669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树

搜索二叉树可以看成一个单调递增的数组,累加大于或等于当前节点值的和,可以看成从后向累加数组元素,替换当前节点值,因此这个一个遍历顺序的问题。考虑二叉搜索树是有序的,那么当当前节点值小于范围时,删除当前节点,保留当前节点的右子树;当当前节点大于范围时,删除当前节点,保留当前节点的左子树。递归法容易理解,迭代法分左右子树操作时,考虑到二叉搜索树的有序性,不符合范围的左/右子树直接跟随节点删除了。树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。

2024-04-12 16:58:23 340 1

原创 代码随想录算法训练营第十四天 | Java |【递归遍历、迭代遍历】144.二叉树前序遍历,145.二叉树后续遍历,94.二叉树中序遍历

个人认为结点定义类似于链表结点定义的一种形式。

2024-04-05 21:53:23 224 1

原创 代码随想录算法训练营第十三天 | Java |239. 滑动窗口最大值,347.前 K 个高频元素

(2)进阶思路:用map记录元素值和出现次数,用大顶推排序后输出前K个值。(1)最初思路:用两个表分别记录元素值和元素出现次数,根据出现次数表排序后,对应将元素值表调整顺序,依次输出前K个值。(1)最初思路:用队列模拟窗口,依次取k个值比较得出最大值,后续弹出队首元素,添加队尾元素,比较最大值,循环结束。(2)进阶思路【看教程后】: 窗口移动中维护单调递减队列,确保留在队列中队首元素为当前窗口中的最大值。的滑动窗口从数组的最左侧移动到数组的最右侧。进阶思路中需要自定义队列,各方法需要重写。

2024-04-05 15:20:08 187 1

原创 代码随想录算法训练营第十一天 | Java |20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

最复杂的是用循环,当出现重复时覆盖当前重复元素后,循环倒退回开头再次开始,时间复杂度最高。合理的选择递归或者栈,栈更适合一点。当前元素如果和栈顶元素一直,栈顶元素出栈,向后遍历比较,最终留在栈中的为不重复的剩余元素。遇到左半符号‘(’,‘{’,‘[’按照右半符号进栈,遇到右半符号直接与栈顶元素比较,如何一致,证明匹配。思路:实质为实现后缀表达式,用栈实现。当遇到数字入栈,遇到符号将前两个数字出栈组合符号进行计算,将得到的结果入栈,继续遍历。:如果使用循环,请注意每次删除重复元素后要从头开始循环。

2024-04-02 22:29:49 230 1

原创 代码随想录算法训练营第十天 | Java |232.用栈实现队列,225. 用队列实现栈

栈与队列操作注意:栈(Stack):push,pop,top,isEmpty队列(Queue):add,pop,peek,isEmpty。

2024-03-29 16:14:16 356 1

原创 代码随想录算法训练营第四天 | Java | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交 ,142.环形链表II

还可以采用双指针法,一个指针定位链表尾部,另一个指针定位删除结点前一位,两个指针间隔n。: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。两个链表可以相交,相交结点一致,相交部分长度一致,因此链表长度不同时一定是以短链表长度为比较起点。其次,确定入口位置。双结点使用时一个记录当前交换对的第一个结点,另一个记录下组交换对结点的位置。相交部分是同一结点,因此地址是一致的,比较时注意不要单纯以结点值为评判标准。链表尾部指针先走n位,然后定位指针和链表指针同步行进。个结点,并且返回链表的头结点。

2024-03-28 00:22:13 1102 1

原创 代码随想录算法训练营第三天 | Java | 203.移除链表元素,707.设计链表, 206.反转链表

的节点的值:首先需要考虑index的合法区间,因为初始化中包含一个虚拟头结点,所以index[0,size-1]。的节点之前:首先判断index的范围,见代码注释。注意:进行删除操作需要将指针停到满足删除条件的节点前一位,否则删除当前节点指针指向出现问题,因此采用虚拟头结点的方法遍历链表。另外,该函数需要返回链表新的头结点,需要记录头结点信息,因此需要保留虚拟头结点指向真实的头结点。思路:删除链表中值为val的节点,边遍历链表边删除满足条件的节点。,请你反转链表,并返回反转后的链表。

2024-03-26 21:42:59 1422

原创 代码随想录算法训练营第二天 | Java | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

(二)滑动窗口(双指针):子数组起始( i )和结束( j )位置均从下标0开始,比较子数组和 sum 和目标值 target 的大小关系,当 sum < target 时,j++,重新计算子数组总和然后比较;当 sum >= target 时,与子数组元素个数的原纪录比较并记录小值,sum减去当前起始位置的值,i++,重新计算子数组总和然后比较,循环往复。双指针法需要借助辅助数组记录平方排序结果,当 i > j 时,数组元素已遍历结束,程序判停。(一)暴力法:两次循环,首先逐个求平方,其次重新排序。

2024-03-22 00:29:43 291 1

原创 代码随想录算法训练营第一天 | Java | 704. 二分查找、27. 移除元素

注意:当前下标元素首次删除后,需要重新判断更新数组在当前下标位置是否仍然与目标值相等,如果相等需要继续删除,因此最外层循环推荐使用while循环,程序判断结束条件为遍历结束。思路:移除元素首先考虑遍历问题,当遍历过程中遇到目标值,从当前下标位置开始数组更新(删除当前元素,其余元素向前移动一位),以此类推。思路:二分法首要考虑左右区间的设定,其次考虑中间值与目标值比较后左右区间的变化。的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用。你不需要考虑数组中超出新长度后面的元素。

2024-03-20 21:28:24 339

原创 力扣面试经典150题——80.删除有序数组中的重复项||【C++】

结题思路:参考27题移除元素下标标记方法,本次注意要记录的是后一项。

2023-11-20 20:01:14 84 1

原创 力扣每日一题——2342.数位和相等数对的最大和【C++】

题主原代码,暴力求解,解题思路:遍历求出每个数数位和,按照排序思路找出相等数对,再求和。借鉴一下大佬的思路:哈希+排序。71/83通过,超出时间限制。

2023-11-18 15:30:38 52 1

原创 力扣面试经典150题——26.删除有序数组中的重复项【C++】

解题思路:从i=0,j=i+1开始,依次向后比较,当nums[i]!=nums[j]时,用K记录当前元素,i=j,j++依次向后递增;当nums[i]== nums[j]时,j的下标向后移动。注意:i,j 的下标范围,容易出现数组访问下标溢出。

2023-11-18 13:01:37 80 1

原创 力扣面试经典150题——27.移除元素【C++】

答主原思路:从后向前遍历元素,当元素等于val时,将当前元素置为数组最后一个元素,数组长度减一,但是一直报错显示溢出,欢迎是这个思路的朋友们一起来 讨论。

2023-11-16 22:42:50 93

原创 力扣面试经典150题——88.合并两个有序数组【C++】

反思:从后向前直接比较两组数元素大小,插入原数组,情况较多。

2023-11-09 16:40:23 119 1

原创 【TI毫米波雷达】IWR6843AOPEVM在mmWave_Demo_Visualizer的初步使用

IWR6843AOPEVM在mmWave_Demo_Visualizer的初步使用

2023-10-12 19:40:28 294 4

原创 “pip install airflow”屡屡失败的解决方法

出现这个错误是因为代码中使用了 airflow 模块,但是当前 Python 环境中没有安装 airflow 模块或者没有正确找到 airflow 模块。来检查已经安装的包列表中是否包含 airflow 模块。确认是否正确设置 Python 环境变量:如果已经安装了 airflow 模块,但是依然出现了。如果使用了虚拟环境,请确认是否在虚拟环境中安装了 airflow 模块,并且已经激活了虚拟环境。确认是否已经安装 airflow 模块:可以使用命令。替换为实际的 airflow 安装路径。

2023-05-16 15:17:34 479

原创 解决新版pyqtgraph中module ‘pyqtgraph.Qt.QtGui‘ has no attribute ‘QApplication‘的问题

在新版的PyQt库中,

2023-05-13 14:17:03 2821

空空如也

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

TA关注的人

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