- 博客(7)
- 收藏
- 关注
原创 day8 || 344.反转字符串 541.反转字符串|| 剑指offer.05.替换空格 151.反转字符串里的单词 剑指offer58.|| 左旋转字符串
接下来,代码从字符串的末尾开始遍历,跳过空格并记录单词的边界,然后将每个单词添加到 newArr 中,并在每个单词的末尾添加一个空格。它使用一个StringBuilder对象来构建新字符串,遍历输入字符串中的每个字符,如果字符是空格,则将"%20"添加到StringBuilder中,否则将字符本身添加到StringBuilder中。具体来说,交换两个字符的方法是使用异或运算,将两个字符的ASCII码进行异或,得到的结果再异或其中一个字符,最后再异或另一个字符,就可以完成交换。然后,交换反转组中的字符。
2023-04-27 21:11:22 82
原创 DAY06 || 454.四数相加|| 383.赎金信 15.三数之和 18.四数之和
在第三个循环中,我们使用双指针技术来查找第三个和第四个元素,使它们的和等于目标整数。具体来说,函数使用两个for循环遍历nums1和nums2中的元素,将它们相加得到temp,然后将temp作为key,出现次数作为value存入map中。接着,遍历nums3和nums4中的元素,将它们相加得到temp,然后在map中查找是否存在0-temp的key,如果存在,则将对应的value累加到结果res中。然后使用两个指针,一个从第二个元素开始,另一个从数组的末尾开始,找到其余两个元素,使它们的和等于目标值。
2023-04-25 23:27:14 74
原创 DAY06 || 242.有效的字母异位词 349.两个数组的交集 202.快乐数 1.两数之和
首先创建一个大小为26的整数数组“record”,用于跟踪第一个字符串“s”中每个字符的频率。第一个“for”循环遍历“s”中的每个字符,并增加“record”中相应计数。第二个“for”循环遍历第二个字符串“t”中的每个字符,并减少“record”中相应计数。首先检查两个输入数组是否为空,如果是,则返回一个空数组。然后,遍历数组,并对于每个元素,计算目标值与该元素之间的差。在这种情况下,将两个元素的索引存储在结果数组中并返回。否则,创建一个HashMap来将数组元素存储为键,将它们的索引存储为值。
2023-04-24 23:19:36 72
原创 DAY03 || 24.两两交换链表中的节点 19.删除链表中的倒数第n个节点 面试题02.07.链表相交
如果h1和h2不相等,则方法将h1移动到headA中的下一个节点,将h2移动到headB中的下一个节点。如果h1或h2到达其各自链表的末尾,则将其设置为另一个链表的头。本题首先判断链表是否为空,然后设置两个指针,一个慢指针和一个快指针,快指针先走n步。本题使用了一个哨兵节点 newHead,它的下一个节点是原链表的头节点 head。然后使用指针 p 遍历链表,每次交换 p 的下一个节点和下下个节点,然后将 p 指向交换后的第二个节点。最后返回哨兵节点的下一个节点,即交换后的链表头。
2023-04-22 23:38:53 83 1
原创 DAY03 || 203.移除链表元素 206.反转链表
prev指向当前节点的前一个节点,cur指向当前节点,temp指向当前节点的下一个节点。dummy节点是一个虚拟节点,它的下一个节点是原始链表的头节点。cur节点是当前正在处理的节点。如果当前节点的值等于给定值,则将pre节点的下一个节点设置为当前节点的下一个节点,从而删除当前节点。否则,将pre节点设置为当前节点,并将当前节点设置为下一个节点。在每次递归中,将head的下一个节点反转,并将head的下一个节点的下一个节点设置为head。最后,该方法返回dummy节点的下一个节点,即新链表的头节点。
2023-04-21 22:58:34 145 1
原创 DAY02 | 977.有序数组的平方 209.长度最小的子数组 59.螺旋数组
首先,创建一个长度为n + 1的前缀和数组sums,其中sums[i]表示nums数组中前i个元素的和。对于每个子数组,计算目标值target,该值等于s加上前i-1个元素的和。如果找到了target,则计算子数组的长度,并将其与当前最小长度进行比较。如果没有找到target,则使用返回的插入点计算子数组的长度,并将其与当前最小长度进行比较。利用双指针从数组两头开始遍历数组,由于原数组两头的元素一定是新数组较大元素,因此先找两头进行比较,并在每次比较后,将较大的元素位置移动一格,再与另一侧元素进行比较……
2023-04-21 00:31:11 299 1
原创 DAY01|leetcode 704.二分查找 35.搜索插入位置 27.移除元素
本题为双指针,即指针一快一慢,当快指针搜索到目标值时,令慢指针停下,从而使二者之间有了差距,再将快指针后续搜索的值赋给慢指针,即可实现元素的移除。1.上述代码中第一个为最初自己写的版本,下面为标答,可以看出二者最大的差别为是否使用二分法,事实证明,二分法确实比暴力搜索更快更省内存;双指针的方法为逆向法,即正向思维为搜索到目标值,进行移除,而逆向思维为搜索非目标值,直接对目标值进行覆盖。2.如图代码为左闭右闭区间,左右为数组两端,需要注意后面low与high分别需要加减1。p.s 元素的移除本质上是覆盖。
2023-04-19 22:38:49 561 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人