golang算法
- 两数之和
- 链表相加
- 无重复字符最长子串
- 最长回文子串
- 三数之和
- 删除链表的倒数第 N 个结点
- 有效的括号
- 合并两个有序链表
- 反转链表
- 两两交换链表中的节点
- 字母异位词分组
- 最大子数组和
- 螺旋矩阵
- 跳跃游戏
- 合并区间
- 不同路径
- 加一
- 爬楼梯
- 删除排序链表中的重复元素
- 反转链表 II
- 买卖股票的最佳时机
- 买卖股票的最佳时机 II
- 买卖股票的最佳时机 III
- 加油站
- 环形链表
- 环形链表 II
- 乘积最大子数组
- 寻找旋转排序数组中的最小值
- 相交链表
- 按奇偶排序数组
- 按奇偶排序数组 II
- 奇偶链表
- 水果成篮
- 链表的中间结点
- 比较含退格的字符串
- 旋转字符串
- 岛屿数量
- 岛屿的最大面积
- 甲板上的战舰
- 验证回文字符串 Ⅱ
- 链表两数相加 II
- 移动零
- 除自身以外数组的乘积
例题:
- 给定一个二叉树,找出其最大深度。
- 给定一个二叉树,判断它是否是高度平衡的二叉树。
- 给定一个非空二叉树,返回其最大路径和。
- 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
- 给定一个二叉树,返回其节点值自底向上的层次遍历。
- 给定一个二叉树,返回其节点值的锯齿形层次遍历。
- 给定一个二叉树,判断其是否是一个有效的二叉搜索树。
- 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。
- 二叉树的序列化与反序列化
- 二叉树的序列化与反序列化
- 填充每个节点的下一个右侧节点指针 I
- 填充每个节点的下一个右侧节点指针 II
- 从前序与中序遍历序列构造二叉树
- 从中序与后序遍历序列构造二叉树
例题:
- 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次
- 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现的数字。
- 反转一个单链表
- 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
- 将两个升序链表合并为一个新的升序链表并返回
- 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前
- 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序
- 给定一个单链表 L:L→L→…→L__n→L 将其重新排列后变为: L→L__n→L→L__n→L→L__n→…
- 给定一个链表,判断链表中是否有环。
- 给定一个链表,返回链表开始入环的第一个节点
- 请判断一个链表是否为回文链表
- 切片[:]返回原切片,[:0]返回空切片
- string遍历用for i:=0;i<len(str);i++ 遍历得到的是byte
- 排序
sort.Ints([]int{}) // 字符串排序 sort.Strings([]string{}) // 自定义排序 sort.Slice(s,func(i,j int)bool{return s[i]<s[j]})
- 切片append扩容指针地址会变