![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go! Nowcoder!
白昼先生
这个作者很懒,什么都没留下…
展开
-
3. 无重复字符的最长子串
这个算法的时间复杂度是 O(n),其中 n 是字符串 s 的长度。因为我们最多只需要遍历整个字符串一次,并且每个字符只会被访问一次。空间复杂度也是 O(n),因为最坏情况下,我们需要存储整个字符串中的所有字符。具体来说,我们首先创建一个空的哈希表 hashmap 和两个指针 left 和 right,它们初始化为 0。这段代码是 Go 语言实现的无重复字符的最长子串问题。算法的基本思路是使用双指针来维护一个不含有重复字符的子串,同时使用哈希表来记录每个字符最后一次出现的位置。原创 2023-06-10 20:54:46 · 262 阅读 · 0 评论 -
5. 最长回文子串
函数的作用是从给定的中心向两边扩展,找到以该中心为中心的最长回文子串。每次扩展之前,我们需要先判断左右两个指针指向的字符是否相等,如果相等,则可以继续向外扩展;否则,就已经找到了以该中心为中心的最长回文子串,可以返回其长度了。函数返回的是 s 中最长回文子串的起始位置和结束位置之间的子串,并且时间复杂度是 O(n^2),其中 n 是字符串 s 的长度。函数中,我们使用一个双指针循环遍历字符串 s 的每个字符,并计算以该字符为中心的最长回文子串长度。函数用来计算以给定的左右两个下标为中心的最长回文子串长度。原创 2023-06-10 21:29:39 · 234 阅读 · 0 评论 -
4. 寻找两个正序数组的中位数
具体来说,我们首先计算出 nums1 和 nums2 的长度 m 和 n,然后创建一个长度为 m+n 的新数组 nums,用于存储排序后的元素。接着,我们使用归并排序的思想将 nums1 和 nums2 中的元素依次加入 nums 数组中,并保持它们的相对顺序不变。在每一轮循环中,我们比较 nums1[i] 和 nums2[j] 的大小关系,并将较小的元素加入 nums 数组中。因为我们需要遍历两个数组中的所有元素,以及将它们存储到一个新的有序数组中。这段代码是 Go 语言实现的两个有序数组的中位数问题。原创 2023-06-10 21:05:50 · 182 阅读 · 0 评论 -
2. 两数相加
接下来,我们将 n1、n2 和 carry 相加,并将结果除以 10 得到进位值 carry 和当前位上的数字 digit,将 digit 添加到输出链表的尾部。首先,我们定义了两个指针 head 和 tail 来记录当前输出链表的头结点和尾结点,以及一个变量 carry 来存储进位值,初始值为 0。在每次循环中,如果 l1 不为空,则获取 l1 当前节点的值 n1,并将 l1 指向下一个节点;最后,如果循环结束后 carry 的值大于 0,说明还存在一位需要进位,需要将其添加到输出链表的尾部。原创 2023-06-10 20:39:13 · 135 阅读 · 0 评论 -
1. 两数之和 Go语言
当我们遍历到第 i 个元素时,如果在 map m 中找到了键值为 another 的元素,就说明我们已经找到了一组符合条件的解,可以直接返回这两个元素的下标。对于每个元素 nums[i],我们计算出另一个需要与之配对的数 another = target - nums[i],并在 map m 中查找是否已经有一个元素等于 another。这段代码是一个 golang 实现的两数之和问题,它的思路是使用一个 map 来存储已经遍历过的元素以及它们的下标。原创 2022-07-14 21:11:36 · 343 阅读 · 0 评论 -
GO语言:反转链表
GO语言:反转链表原创 2022-10-13 17:12:03 · 379 阅读 · 1 评论