Go CodeTop 题解

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

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

使用滑动窗口的思想,用一个 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)

146. LRU 缓存

146. LRU 缓存 - 力扣(LeetCode)

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

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

用快速排序完成

25. K 个一组翻转链表

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

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

15. 三数之和

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

53. 最大子数组和

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

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

补充题:手撕快速排序

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

21. 合并两个有序链表

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

1. 两数之和

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

5. 最长回文子串

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

102. 二叉树的层序遍历

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

33. 搜索旋转排序数组

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

200. 岛屿数量

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

121. 买卖股票的最佳时机

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

20. 有效的括号

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

141. 环形链表

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

88. 合并两个有序数组

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

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

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

46. 全排列

46. 全排列 - 力扣(LeetCode)

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

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

92. 反转链表 II

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

54. 螺旋矩阵

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

23. 合并 K 个升序链表

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

160. 相交链表

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

300. 最长递增子序列

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

415. 字符串相加

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

143. 重排链表

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

42. 接雨水

42. 接雨水 - 力扣(LeetCode)

142. 环形链表 II

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

56. 合并区间

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

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

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

72. 编辑距离

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

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

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

93. 复原 IP 地址

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

1143. 最长公共子序列

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

94. 二叉树的中序遍历

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

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

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

199. 二叉树的右视图

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

704. 二分查找

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

232. 用栈实现队列

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

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

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

148. 排序链表

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

69. x 的平方根

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

8. 字符串转换整数

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

31. 下一个排列

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

22. 括号生成

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

2. 两数相加

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

70. 爬楼梯

70. 爬楼梯 - 力扣(LeetCode)

165. 比较版本号

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

239. 滑动窗口最大值

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

41. 缺失的第一个正数

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

322. 零钱兑换

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

76. 最小覆盖子串

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

78. 子集

78. 子集 - 力扣(LeetCode)

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

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

155. 最小栈

155. 最小栈 - 力扣(LeetCode)

32. 最长有效括号

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

43. 字符串相乘

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

151. 反转字符串中的单词

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

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

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

104. 二叉树的最大深度

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

101. 对称二叉树

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

144. 二叉树的前序遍历

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

543. 二叉树的直径

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

98. 验证二叉搜索树

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

470. 用 Rand7() 实现 Rand10()

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

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

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

64. 最小路径和

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

48. 旋转图像

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

39. 组合总数

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

113. 路径之和 II

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

394. 字符串解码

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

240. 搜索二维矩阵

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

221. 最大正方形

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

162. 寻找峰值

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

234. 回文链表

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

112. 路径总和

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

14. 最长公共前缀

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

128. 最长连续序列

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

718. 最长重复子数组

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

169. 多数元素

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

662. 二叉树最大宽度

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

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

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

62. 不同路径

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

226. 翻转二叉树

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

179. 最大数

179. 最大数 - 力扣(LeetCode)

152. 乘积最大的子数组

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

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

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

695. 岛屿的最大面积

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

227. 基本计算器 II

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

198. 打家劫舍

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

139. 单词拆分

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

补充题:手撕堆排序

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

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

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

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

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

560. 和为 K 的子数组

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

209. 长度最小的子数组

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

最后更新于