自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode151. 反转字符串中的单词

中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。,这样就无需人为的写代码删除空格,将输入流中提取的单词存入结果字符串数组words中,3.将单词内部字符再反转,即使单词内部字符是正序,但是每个单词之间的顺序倒置了。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。而这道题其实正是想考察这两个点,因此法一就偏离了写这道题的本意了,试想一下,1.对字符串进行预处理,删除字符串中的多余空格,,下面提供两个解法。

2025-01-10 16:51:30 963

原创 leetcode15.三数之和

基本思路是数组排完序后,先取定a后,定义left指针指向a元素的下一个位置元素(即数组中>=a的所有数中最小的那个元素)并记为b,right指向数组最后一个元素(即>=a的所有数中最大的那个元素)并将其记为c。left和right其实可以抽象成一个窗口的前后边沿,此时找到符合的三元组后要把窗口缩小继续探查是否在a固定时,还有新的b,c组合。取a的时候,如果上一轮取的a和这一轮取的a一样,直接跳过,因为这一轮取定a后,找到的符合条件的三元组一定是和前一轮找到的相重复。注意,输出的顺序和三元组的顺序并不重要。

2025-01-07 23:41:54 297

原创 leetcode454. 四数相加 II

设题目给的四个数组分别为A,B,C,D,其中每次从A取出的元素为a,B、C、D中对应为b、c、d,即求有多少种a,b,c,d组合使之和为0。因此哈希表法时间复杂度为O(n^2),空间复杂度为O(n^2)。,逻辑上即是否存在(a+b)+(c+d)=0,是则count加上该key对应的value值.法一(暴力解):显然需要四重for循环嵌套,时间复杂度O(n^4),会超时。1.先双重for循环访问A,B数组统计a+b的值,将该值及其出现次数即。先考虑(a+b)并将该结果的出现次数存入map,

2025-01-06 23:33:52 293

原创 leetcode1.两数之和

遍历题目给的数组nums,并在map中查询是否存在一个数与当前遍历的元素值相加为target,存在则返回对应结果;不存在则将当前的元素值和下标存入map,继续遍历数组。时间复杂度O(n)。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。解法一(暴力解):常规双重for循环嵌套,时间复杂度O(n^2)。解法二(哈希表):定义一个unordered_map,整数,并返回它们的数组下标。你可以按任意顺序返回答案。

2025-01-05 16:09:24 335

原创 leetcode242.有效的字母异位词

因此直接创建大小为26的辅助数组count来统计字母出现次数,先遍历一次s串统计每个字母在s串中的出现次数,字母出现一次就在。两种情况返回false,否则是字母异位词,返回true。再遍历一次t串,字母每出现一次就在。,编写一个函数来判断。

2025-01-05 13:26:26 178

原创 leetcode面试题 02.07. 链表相交

解题思路:如果两表相等,很容易就想到设两个指针p,q,初始时分别指向AB表头节点,之后遍历AB两表看指针是否指向同一个节点来判断相交。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。在 B 中,相交节点前有 1 个节点。相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。

2025-01-04 16:24:16 678

原创 leetcode19.删除链表的倒数第N个节点

基本思路(双指针法):关键就是如何一次遍历找到倒数第N个节点,可以使用经典的快慢指针法。定义快慢指针fast和slow,初始时双指针都指向链表的虚拟头节点,之后让fast领先slow共n步,之后双指针同步后移,直到fast指向链表最后一个节点时,slow刚好指向要删除的。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。

2025-01-04 15:44:54 302

原创 leetcode203. 移除链表元素

因为没有虚拟头节点,若要删除第一个节点很麻烦,因此最好的办法是人为创建一个虚拟头节点,然后用常规的删除链表节点的双指针法删除对应val节点即可。,请你删除链表中所有满足。给你一个链表的头节点。

2025-01-03 23:41:58 148

原创 leetcode59. 螺旋矩阵 II

遇到的问题:报错segmentation fault,查了一下发现是数组访问越界,原因是对vector理解不够深,用初始化二维数组的方式初始化vector,即vector result={{0}};假设画5*5矩阵,"5"环,上、右、下、左四笔的起始位置依次为[0][0],[0][4],[4][4],[4][0],之后""3"环的上、右、下、左四笔为[1][1],[1][3],[3][3],[3][1]。因为1环特殊,就一个点,且位于矩阵正中心,很好定位赋值,先不管。

2025-01-02 23:54:50 340

原创 leetcode27. 移除元素

法二:双指针:定义快慢指针,两个指针初始时都指向数组第一个元素,每当数组元素等于一次val时,fast右移一步,slow不动;当数组元不是val时,fast和slow都右移,且fast所指元素向前覆盖slow所指元素(因为没出现val时两个指针指的下标相同,若出现两个指针错位,即说明出现了val值,且第一次覆盖的时候,slow一定指向val值元素,即值为val的数组元素被覆盖)。最终fast领先slow的步数的值即为val元素出现的次数,因此当fast指向数组末尾时,slow所指数组元素下标即为所求k。

2025-01-02 15:23:44 331

原创 leetcode977.有序数组的平方

法二:双指针法:类似归并排序中的数组合并,因为原来数组按升序排列,平方最大只可能出现在数组两端,初始时双指针分别指向数组头尾,比较元素平方后的大小,大的放入新数组的最右端,指向该元素的指针相应移动指向下一个元素,另一个指针不动,重复比较。平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]组成的新数组,要求也按。

2025-01-02 14:57:47 616

原创 leetcode209.长度最小的子数组

滑动窗口法本质是双指针法,定义前后两个指针表示窗口的前后边沿,因为指针始终后移,不会前移,因此时间复杂度O(n).核心代码如下。如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。找出该数组中满足其总和大于等于。个正整数的数组和一个正整数。这题双重循环暴力解会超时。

2025-01-02 14:44:57 245

空空如也

空空如也

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

TA关注的人

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