自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣:226. 翻转二叉树 101. 对称二叉树

对比当前节点是否相等,对比外侧是否相等,再对比内侧是否相等;,翻转这棵二叉树,并返回其根节点。给你一棵二叉树的根节点。给你一个二叉树的根节点。, 检查它是否轴对称。226. 翻转二叉树。101. 对称二叉树。

2024-01-25 19:07:14 401

原创 力扣:239. 滑动窗口最大值 347. 前 K 个高频元素

情况1如果上一次在窗口中的数最大的值是中间的(非两端),是不是就可以直接用这个结果和下一次最右边的数对比就好了;情况2如果上一次在窗口中的最大数就是最左边的,这一次就不能利用上一次max的结果了,就只能保持原来的逻辑遍历所有的找最大值;该题还可以尝试使用队列的思路,使用队列维护窗口中的递减队列,本次就不分享了后续再分享;思路:将所有nums通过map统计出数字出现的频率,把所有的数据都排序一遍之后取前k个元素,返回即可;的滑动窗口从数组的最左侧移动到数组的最右侧。

2024-01-22 16:50:23 343

原创 力扣:20. 有效的括号150. 逆波兰表达式求值

有效的括号的特点是成对出现的,如果单个肯定是无效的,或者错乱了如"[(])",都是无效的;为什么会想到用栈的思想去解决一个有效括号的问题呢?浏览器左右箭头,代表这后台和前进,这个也是用栈来存储url的,浏览器分别用了两个栈分别存储前进的url和后台的url;当然这个有效括号只需要一个栈,可以把左括号作为一个入栈标识,右括号作为出栈标识(并且出栈的括号能和该右括号匹配上的括号),当结束的时候栈是空的即是有效的括号;返回一个表示表达式值的整数。本次分享主要是通过栈的思想解决问题。150. 逆波兰表达式求值。

2024-01-20 20:22:13 421

原创 力扣:151. 反转字符串中的单词344. 反转字符串541. 反转字符串 II

思路:只考虑需要反转的部分,反转的部分的区间是哪些?假设每次循环都走2k个长度,第i次可反转的区间是[2*i*k,2*i*k+k-1],如果2*i*k+k-1大于s的长度(越界),反转区间就是[2*i*k,s.length-1];思路:该题的关键是如何处理多个空格拆分单词,剩下的就是反转单词,采用双指针的思路;今天分享的都是使用双指针的方法解决的字符串反转问题,希望对大家有说帮助;输入字符串以字符数组。不要给另外的数组分配额外的空间,你必须。中使用至少一个空格将字符串中的。151. 反转字符串中的单词。

2024-01-17 22:41:47 362

原创 力扣:454. 四数相加 II 383. 赎金信

先将前3组数进行遍历相加,把结果用map记录,key值是相加的和(三个数相加的和),value值是key值出现的次数;思路1:遍历ransomNote中的字母item,到magazine中去找item,如果找到了就直接删除magazine中的item,如果没有找到判定为false;顺着上面的思路,降维到2次循环,将sum1和sum2的两数之和的结果记录到map中,将sum3和sum4的和的相反数去匹配map,如果找到了就把对应的value值累加起来;时间复杂度是O(n^2+n^2)=>O(n^2);

2024-01-16 17:25:10 830 1

原创 力扣:242. 有效的字母异位词

思路:首先排除两个字符串长度不相等(不是异位词)情况;使用Map去记录第一个字符串中每个字符的个数,遍历第二个字符串中每个字母是否在map中,如果在就减去相应的个数,同时判断是否存在个数小于零的情况(不是异位词);如果不在map中,直接判定不是异位词;总结:该题关键是使用了map字典存储O(n),否则用暴力就需要双重循环O(n^2),典型的空间换时间的思路;242. 有效的字母异位词:给定两个字符串。,编写一个函数来判断。

2024-01-15 21:58:03 664

原创 力扣:24. 两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。两两交换链表中的节点,按照题意,先获取前两个节点然后交换位置,交换后的节点放到结果的末尾,就得到目标链表;特殊的日子,序珩宝贝2024年1月13日22点08分诞生了;

2024-01-14 01:12:42 365 1

原创 力扣:203. 移除链表元素206. 反转链表

直接遍历所有节点,如果节点值等于val就用node.next = node.next.next(相当于删除节点);问题是如果头节点就相等,此时想用node.next就麻烦了,因为没有node.next(prev)指向头节点的节点;既然头节点没有前置节点,那就构造一个前置节点返回的时候不返回这个构造节点就好了;链表反转主要是想清楚,怎么从原节点拿到当前节点cur,当前节点要拼接到结果节点的前面即cur.next = res;203. 移除链表元素:给你一个链表的头节点。,请你反转链表,并返回反转后的链表。

2024-01-12 21:37:18 289

原创 力扣:977. 有序数组的平方59. 螺旋矩阵 II

在力扣上跑,是通过了,但是排名靠后,是什么原因呢?因为每次数组的下标对应的数值都在改变,也就是每次unshift后面所有的数都要更新一次,很好性能;通过双指针的方法,从两边向中间收拢的方法,比较两边平方之后的数,较大的放到目标数组中,放入数组的下标向中间靠拢(即,left大即left++,right大即right--);用了两个for循环,一个sort,时间复杂度是O(n)+O(n)+O(n*logn);到这里用双指针的方法实现了这个时间复杂度为O(n)的方法;关键字,含义就是可能有相等的数,也有可能是。

2024-01-11 22:36:58 811

原创 力扣:704. 二分查找、27. 移除元素

尝试使用快慢指针,快指针遍历每一个元素,慢指针在遇到要删除的元素不向后移动即(不自增),最后返回慢指针就可以了;题目要求是不能创建额外的空间,就只能操作原数组,在原数组中删除某个元素js中最擅长的就是splice方法了。看题目最容易想到的就是一个循环,一个一个的匹配,找到了直接返回下标,直到找到最后一个,没有找到返回-1;这道题有一个关键点是有序的数组,因为有序会想到另外一种思路,二分法;不要使用额外的数组空间,你必须仅使用。,如果目标值存在返回下标,否则返回。的元素,并返回移除后数组的新长度。

2024-01-10 21:24:31 481 1

空空如也

空空如也

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

TA关注的人

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