Go CodeTop 题解

3. 无重复字符的最长子串

3. 无重复字符的最长子串 - 力扣(LeetCode)arrow-up-right

使用滑动窗口的思想,用一个 Map 来存储目前遇到的字符。

package main

import (
	"fmt"
	"math"
)

func lengthOfLongestSubstring(s string) int {
	if len(s) <= 0 {
		return 0
	}

	h := make(map[byte]int, 0)
	r, l, res := 0, 0, math.MinInt64

	for r < len(s) {
		c := s[r]
		r++
		h[c]++
		for h[c] > 1 {
			d := s[l]
			l++
			h[d]--
		}
		res = max(res, r-l)
	}
	if res == math.MinInt64 {
		return 0
	}
	return res
}

func main() {
	var s string
	fmt.Scanln(&s)
	fmt.Println(lengthOfLongestSubstring(s))
}

206. 反转链表

206. 反转链表 - 力扣(LeetCode)arrow-up-right

146. LRU 缓存

146. LRU 缓存 - 力扣(LeetCode)arrow-up-right

215. 数组中的第 K 个最大元素

215. 数组中的第K个最大元素 - 力扣(LeetCode)arrow-up-right

用快速排序完成

25. K 个一组翻转链表

25. K 个一组翻转链表 - 力扣(LeetCode)arrow-up-right

每次调用翻转链表翻转 K 个节点,接着递归下去即可。

15. 三数之和

15. 三数之和 - 力扣(LeetCode)arrow-up-right

53. 最大子数组和

53. 最大子数组和 - 力扣(LeetCode)arrow-up-right

用滑动窗口的思想来做,需要在第二个 for 循环之前将 res 赋值。

补充题:手撕快速排序

[912. 排序数组 - 力扣(LeetCode)](https://leetcode.cn/problems/sort-an-array/description/

21. 合并两个有序链表

21. 合并两个有序链表 - 力扣(LeetCode)arrow-up-right

1. 两数之和

1. 两数之和 - 力扣(LeetCode)arrow-up-right

5. 最长回文子串

5. 最长回文子串 - 力扣(LeetCode)arrow-up-right

102. 二叉树的层序遍历

102. 二叉树的层序遍历 - 力扣(LeetCode)arrow-up-right

33. 搜索旋转排序数组

33. 搜索旋转排序数组 - 力扣(LeetCode)arrow-up-right

200. 岛屿数量

200. 岛屿数量 - 力扣(LeetCode)arrow-up-right

121. 买卖股票的最佳时机

121. 买卖股票的最佳时机 - 力扣(LeetCode)arrow-up-right

20. 有效的括号

20. 有效的括号 - 力扣(LeetCode)arrow-up-right

141. 环形链表

141. 环形链表 - 力扣(LeetCode)arrow-up-right

88. 合并两个有序数组

88. 合并两个有序数组 - 力扣(LeetCode)arrow-up-right

236. 二叉树的最近公共祖先

236. 二叉树的最近公共祖先 - 力扣(LeetCode)arrow-up-right

46. 全排列

46. 全排列 - 力扣(LeetCode)arrow-up-right

103. 二叉树的锯齿形层序遍历

103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode)arrow-up-right

92. 反转链表 II

92. 反转链表 II - 力扣(LeetCode)arrow-up-right

54. 螺旋矩阵

54. 螺旋矩阵 - 力扣(LeetCode)arrow-up-right

23. 合并 K 个升序链表

23. 合并 K 个升序链表 - 力扣(LeetCode)arrow-up-right

160. 相交链表

160. 相交链表 - 力扣(LeetCode)arrow-up-right

300. 最长递增子序列

300. 最长递增子序列 - 力扣(LeetCode)arrow-up-right

415. 字符串相加

415. 字符串相加 - 力扣(LeetCode)arrow-up-right

143. 重排链表

143. 重排链表 - 力扣(LeetCode)arrow-up-right

42. 接雨水

42. 接雨水 - 力扣(LeetCode)arrow-up-right

142. 环形链表 II

142. 环形链表 II - 力扣(LeetCode)arrow-up-right

56. 合并区间

56. 合并区间 - 力扣(LeetCode)arrow-up-right

124. 二叉树中的最大路径和

124. 二叉树中的最大路径和 - 力扣(LeetCode)arrow-up-right

72. 编辑距离

72. 编辑距离 - 力扣(LeetCode)arrow-up-right

19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)arrow-up-right

93. 复原 IP 地址

93. 复原 IP 地址 - 力扣(LeetCode)arrow-up-right

1143. 最长公共子序列

1143. 最长公共子序列 - 力扣(LeetCode)arrow-up-right

94. 二叉树的中序遍历

94. 二叉树的中序遍历 - 力扣(LeetCode)arrow-up-right

82. 删除排序链表中的重复元素 II

82. 删除排序链表中的重复元素 II - 力扣(LeetCode)arrow-up-right

199. 二叉树的右视图

199. 二叉树的右视图 - 力扣(LeetCode)arrow-up-right

704. 二分查找

704. 二分查找 - 力扣(LeetCode)arrow-up-right

232. 用栈实现队列

232. 用栈实现队列 - 力扣(LeetCode)arrow-up-right

4. 寻找两个正序数组的中位数

4. 寻找两个正序数组的中位数 - 力扣(LeetCode)arrow-up-right

148. 排序链表

148. 排序链表 - 力扣(LeetCode)arrow-up-right

69. x 的平方根

69. x 的平方根 - 力扣(LeetCode)arrow-up-right

8. 字符串转换整数

8. 字符串转换整数 (atoi) - 力扣(LeetCode)arrow-up-right

31. 下一个排列

31. 下一个排列 - 力扣(LeetCode)arrow-up-right

22. 括号生成

22. 括号生成 - 力扣(LeetCode)arrow-up-right

2. 两数相加

2. 两数相加 - 力扣(LeetCode)arrow-up-right

70. 爬楼梯

70. 爬楼梯 - 力扣(LeetCode)arrow-up-right

165. 比较版本号

165. 比较版本号 - 力扣(LeetCode)arrow-up-right

239. 滑动窗口最大值

239. 滑动窗口最大值 - 力扣(LeetCode)arrow-up-right

41. 缺失的第一个正数

41. 缺失的第一个正数 - 力扣(LeetCode)arrow-up-right

322. 零钱兑换

322. 零钱兑换 - 力扣(LeetCode)arrow-up-right

76. 最小覆盖子串

76. 最小覆盖子串 - 力扣(LeetCode)arrow-up-right

78. 子集

78. 子集 - 力扣(LeetCode)arrow-up-right

105. 从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)arrow-up-right

155. 最小栈

155. 最小栈 - 力扣(LeetCode)arrow-up-right

32. 最长有效括号

32. 最长有效括号 - 力扣(LeetCode)arrow-up-right

43. 字符串相乘

43. 字符串相乘 - 力扣(LeetCode)arrow-up-right

151. 反转字符串中的单词

151. 反转字符串中的单词 - 力扣(LeetCode)arrow-up-right

129. 求根节点到叶节点数字之和

129. 求根节点到叶节点数字之和 - 力扣(LeetCode)arrow-up-right

104. 二叉树的最大深度

104. 二叉树的最大深度 - 力扣(LeetCode)arrow-up-right

101. 对称二叉树

101. 对称二叉树 - 力扣(LeetCode)arrow-up-right

144. 二叉树的前序遍历

144. 二叉树的前序遍历 - 力扣(LeetCode)arrow-up-right

543. 二叉树的直径

543. 二叉树的直径 - 力扣(LeetCode)arrow-up-right

98. 验证二叉搜索树

98. 验证二叉搜索树 - 力扣(LeetCode)arrow-up-right

470. 用 Rand7() 实现 Rand10()

470. 用 Rand7() 实现 Rand10() - 力扣(LeetCode)arrow-up-right

34. 在排序数组中查找元素的第一个和最后一个位置

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)arrow-up-right

64. 最小路径和

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)arrow-up-right

48. 旋转图像

48. 旋转图像 - 力扣(LeetCode)arrow-up-right

39. 组合总数

39. 组合总和 - 力扣(LeetCode)arrow-up-right

113. 路径之和 II

113. 路径总和 II - 力扣(LeetCode)arrow-up-right

394. 字符串解码

394. 字符串解码 - 力扣(LeetCode)arrow-up-right

240. 搜索二维矩阵

240. 搜索二维矩阵 II - 力扣(LeetCode)arrow-up-right

221. 最大正方形

221. 最大正方形 - 力扣(LeetCode)arrow-up-right

162. 寻找峰值

162. 寻找峰值 - 力扣(LeetCode)arrow-up-right

234. 回文链表

234. 回文链表 - 力扣(LeetCode)arrow-up-right

112. 路径总和

112. 路径总和 - 力扣(LeetCode)arrow-up-right

14. 最长公共前缀

14. 最长公共前缀 - 力扣(LeetCode)arrow-up-right

128. 最长连续序列

128. 最长连续序列 - 力扣(LeetCode)arrow-up-right

718. 最长重复子数组

718. 最长重复子数组 - 力扣(LeetCode)arrow-up-right

169. 多数元素

169. 多数元素 - 力扣(LeetCode)arrow-up-right

662. 二叉树最大宽度

662. 二叉树最大宽度 - 力扣(LeetCode)arrow-up-right

122. 买卖股票的最佳时机 II

122. 买卖股票的最佳时机 II - 力扣(LeetCode)arrow-up-right

62. 不同路径

62. 不同路径 - 力扣(LeetCode)arrow-up-right

226. 翻转二叉树

226. 翻转二叉树 - 力扣(LeetCode)arrow-up-right

179. 最大数

179. 最大数 - 力扣(LeetCode)arrow-up-right

152. 乘积最大的子数组

152. 乘积最大子数组 - 力扣(LeetCode)arrow-up-right

83. 删除排序链表中重复元素

83. 删除排序链表中的重复元素 - 力扣(LeetCode)arrow-up-right

695. 岛屿的最大面积

695. 岛屿的最大面积 - 力扣(LeetCode)arrow-up-right

227. 基本计算器 II

227. 基本计算器 II - 力扣(LeetCode)arrow-up-right

198. 打家劫舍

198. 打家劫舍 - 力扣(LeetCode)arrow-up-right

139. 单词拆分

139. 单词拆分 - 力扣(LeetCode)arrow-up-right

补充题:手撕堆排序

912. 排序数组 - 力扣(LeetCode)arrow-up-right

24. 两两交换链表中的节点

24. 两两交换链表中的节点 - 力扣(LeetCode)arrow-up-right

297. 二叉树的序列化与反序列化

297. 二叉树的序列化与反序列化 - 力扣(LeetCode)arrow-up-right

560. 和为 K 的子数组

560. 和为 K 的子数组 - 力扣(LeetCode)arrow-up-right

209. 长度最小的子数组

209. 长度最小的子数组 - 力扣(LeetCode)arrow-up-right

最后更新于