777 Interview Notes
  • 🎯ᐕ)୨ 戳我戳我
  • 社招
    • 叨叨
  • 外企
    • 上海外企汇总
  • 数据结构与算法
    • 简介
    • 题型
      • Template
      • 动态规划
        • LEETCODE 5. 最长回文子串
        • LEETCODE 32. 最长有效括号
        • LEETCODE 44. 通配符匹配
        • LEETCODE 62. 不同路径
        • LEETCODE 63. 不同路径 II
        • LEETCODE 64. 最小路径和
        • LEETCODE 97. 交错字符串
        • LEETCODE 120. 三角形最小路径和
        • LEETCODE 122. 买卖股票的最佳时机 II
        • LEETCODE 139. 单词拆分
        • LEETCODE 174. 地下城游戏
        • LEETCODE 188. 买卖股票的最佳时机 IV
        • *LEETCODE 222. 完全二叉树的节点个数
        • LEETCODE 309. 最佳买卖股票时机含冷冻期
        • LEETCODE 343. 整数拆分
        • LEETCODE 494. 目标和
        • LEETCODE 718. 最长重复子数组
        • LEETCODE 837. 新21点
        • LEETCODE 1014. 最佳观光组合
        • LCOF 10-II. 青蛙跳台阶问题
        • LCOF 14-I. 剪绳子
        • LCOF 19. 正则表达式匹配
        • LCOF 42. 连续子数组的最大和
        • LCOF 46. 把数字翻译成字符串
        • LCOF 47. 礼物的最大价值
        • LCOF 48. 最长不含重复字符的子字符串
        • LCOF 49. 丑数
        • LCOF 63. 股票的最大利润
      • 贪心
        • LEETCODE 12. 整数转罗马数字
        • LEETCODE 122. 买卖股票的最佳时机 II
        • *LEETCODE 316. 去除重复字母
        • LEETCODE 435. 无重叠区间
        • LEETCODE 455. 分发饼干
        • LEETCODE 605. 种花问题
        • LEETCODE 860. 柠檬水找零
        • LEETCODE 1046. 最后一块石头的重量
        • LCOF 14-I. 剪绳子
        • LCOF 14-II. 剪绳子 II
      • 双指针
        • LEETCODE 4. 寻找两个正序数组的中位数
        • LEETCODE 19. 删除链表的倒数第N个节点
        • LEETCODE 75. 颜色分类
        • LEETCODE 86. 分隔链表
        • LCOF 04. 二维数组中的查找
        • LCOF 21. 调整数组顺序使奇数位于偶数前面
        • LCOF 24. 反转链表
        • LCOF 52. 两个链表的第一个公共节点
        • LCOF 57. 和为s的两个数字
        • LCOF 58 - I. 翻转单词顺序
      • 滑动窗口
        • LEETCODE 239. 滑动窗口最大值
        • LEETCODE 424. 替换后的最长重复字符
        • LEETCODE 643. 子数组最大平均数 I
        • LEETCODE 1208. 尽可能使字符串相等
        • LEETCODE 1423. 可获得的最大点数
        • LCOF 59 - I. 滑动窗口的最大值
      • 深度优先搜索
        • LEETCODE 207. 课程表
        • *LEETCODE 210. 课程表 II
        • LEETCODE 329. 矩阵中的最长递增路径
        • LEETCODE 547. 省份数量
        • LEETCODE 785. 判断二分图
        • LCOF 12. 矩阵中的路径
        • LCOF 13. 机器人的运动范围
        • LCOF 34. 二叉树中和为某一值的路径
        • LCOF 38. 字符串的排列
        • LCOF 54. 二叉搜索树的第k大节点
        • LCOF 55 - I. 二叉树的深度
        • LCOF 55 - II. 平衡二叉树
        • LCOF 68 - II. 二叉树的最近公共祖先
      • 广度优先搜索
        • LEETCODE 547. 省份数量
        • LCOF 32 - I. 从上到下打印二叉树
        • LCOF 32 - II. 从上到下打印二叉树 II
        • LCOF 32 - III. 从上到下打印二叉树 III
        • LCOF 55 - I. 二叉树的深度
      • 前缀和
        • LEETCODE 560. 和为K的子数组
      • 背包问题
        • LEETCODE 494. 目标和
      • HashMap
        • LEETCODE 128. 最长连续序列
        • LEETCODE 242. 有效的字母异位词
        • LEETCODE 350. 两个数组的交集 II
        • LEETCODE 560. 和为K的子数组
        • LCOF 03. 数组中重复的数字
        • LCOF 35. 复杂链表的复制
        • LCOF 50. 第一个只出现一次的字符
      • HashSet
        • LEETCODE 888. 公平的糖果棒交换
        • LCOF 61. 扑克牌中的顺子
      • 数组
        • LEETCODE 31. 下一个排列
        • LEETCODE 75. 颜色分类
        • LEETCODE 189. 旋转数组
        • LEETCODE 228. 汇总区间
        • LEETCODE 442. 数组中重复的数据
        • LEETCODE 448. 找到所有数组中消失的数字
        • LEETCODE 560. 和为K的子数组
      • 模拟
        • LEETCODE 860. 柠檬水找零
        • LCOF 29. 顺时针打印矩阵
        • LCOF 31. 栈的压入、弹出序列
      • 排序
        • LCOF 45. 把数组排成最小的数
        • LCOF 51. 数组中的逆序对
      • 递归
        • LCOF 06. 从尾到头打印链表
        • LCOF 07. 重建二叉树
        • LCOF 10-I. 斐波那契数列
        • LCOF 16. 数值的整数次方
        • LCOF 24. 反转链表
        • LCOF 25. 合并两个排序的链表
        • LCOF 26. 树的子结构
        • LCOF 27. 二叉树的镜像
        • LCOF 28. 对称的二叉树
        • LCOF 64. 求1+2+…+n
      • 队列
        • LCOF 59 - I. 滑动窗口的最大值
        • LCOF 59 - II. 队列的最大值
      • 字符串
        • LEETCODE 5. 最长回文子串
        • *LEETCODE 165. 比较版本号
        • LEETCODE 205. 同构字符串
        • LEETCODE 242. 有效的字母异位词
        • LEETCODE 678. 有效的括号字符串
        • LEETCODE 830. 较大分组的位置
        • LCOF 05. 替换空格
        • LCOF 20. 表示数值的字符串
        • LCOF 38. 字符串的排列
        • LCOF 45. 把数组排成最小的数
        • LCOF 58 - I. 翻转单词顺序
        • LCOF 58 - II. 左旋转字符串
        • LCOF 67. 把字符串转换成整数
      • 二分查找
        • LEETCODE 4. 寻找两个正序数组的中位数
        • LEETCODE 33. 搜索旋转排序数组
        • LEETCODE 34. 在排序数组中查找元素的第一个和最后一个位置
        • LEETCODE 153. 寻找旋转排序数组中的最小值
        • LEETCODE 154. 寻找旋转排序数组中的最小值 II
        • LEETCODE 278. 第一个错误的版本
        • LEETCODE 704. 二分查找
        • LEETCODE 744. 寻找比目标字母大的最小字母
        • LEETCODE 852. 山脉数组的峰顶索引
        • LCOF 11. 旋转数组的最小数字
        • LCOF 53 - I. 在排序数组中查找数字 I
        • LCOF 53 - II. 0~n-1中缺失的数字
      • 位运算
        • LEETCODE 338. 比特位计数
        • LEETCODE 461. 汉明距离
        • LCOF 15. 二进制中1的个数
        • LCOF 56 - I. 数组中数字出现的次数
        • LCOF 56 - II. 数组中数字出现的次数 II
      • 链表
        • LEETCODE 19. 删除链表的倒数第N个节点
        • LEETCODE 86. 分隔链表
        • # LEETCODE 234. 回文链表
        • LEETCODE 237. 删除链表中的节点
        • LCOF 06. 从尾到头打印链表
        • LCOF 18. 删除链表的节点
        • LCOF 22. 链表中倒数第k个节点
        • LCOF 24. 反转链表
        • LCOF 25. 合并两个排序的链表
        • LCOF 35. 复杂链表的复制
        • LCOF 36. 二叉搜索树与双向链表
        • LCOF 52. 两个链表的第一个公共节点
      • 二叉树
        • LEETCODE 94. 二叉树的中序遍历
        • LEETCODE 95. 不同的二叉搜索树 II
        • LEETCODE 96. 不同的二叉搜索树
        • # LEETCODE 98. 验证二叉搜索树
        • LEETCODE 104. 二叉树的最大深度
        • LEETCODE 108. 将有序数组转换为二叉搜索树
        • LEETCODE 112. 路径总和
        • # LEETCODE 144. 二叉树的前序遍历
        • LEETCODE 543. 二叉树的直径
        • LEETCODE 617. 合并二叉树
        • LEETCODE 958. 二叉树的完全性检验
        • LCOF 07. 重建二叉树
        • LCOF 26. 树的子结构
        • LCOF 27. 二叉树的镜像
        • LCOF 28. 对称的二叉树
        • LCOF 32 - I. 从上到下打印二叉树
        • LCOF 32 - II. 从上到下打印二叉树 II
        • LCOF 32 - III. 从上到下打印二叉树 III
        • LCOF 33. 二叉搜索树的后序遍历序列
        • LCOF 34. 二叉树中和为某一值的路径
        • LCOF 36. 二叉搜索树与双向链表
        • LCOF 37. 序列化二叉树
        • LCOF 54. 二叉搜索树的第k大节点
        • LCOF 55 - I. 二叉树的深度
        • LCOF 55 - II. 平衡二叉树
        • LCOF 68 - I. 二叉搜索树的最近公共祖先
        • LCOF 68 - II. 二叉树的最近公共祖先
      • 堆
        • LEETCODE 215. 数组中的第K个最大元素
        • LEETCODE 1046. 最后一块石头的重量
        • LCOF 40. 最小的k个数
        • LCOF 41. 数据流中的中位数
      • 栈
        • LEETCODE 32. 最长有效括号
        • LCOF 06. 从尾到头打印链表
        • LCOF 09. 用两个栈实现队列
        • LCOF 27. 二叉树的镜像
      • 大数
      • 数学
        • LEETCODE 16. 最接近的三数之和
        • LEETCODE 9. 回文数
        • LEETCODE 238. 除自身以外数组的乘积
        • LEETCODE 990. 等式方程的可满足性
        • LCOF 43. 1~n 整数中 1 出现的次数
        • LCOF 44. 数字序列中某一位的数字
        • LCOF 62. 圆圈中最后剩下的数字
        • LCOF 67. 把字符串转换成整数
      • 多线程
      • 回溯
        • LEETCODE 17. 电话号码的字母组合
        • LEETCODE 46. 全排列
        • LCOF 34. 二叉树中和为某一值的路径
        • LCOF 38. 字符串的排列
      • 设计
        • LEETCODE 146. LRU缓存机制
        • LCOF 30. 包含min函数的栈
        • LCOF 37. 序列化二叉树
        • LCOF 41. 数据流中的中位数
        • LCOF 59 - II. 队列的最大值
      • 分治
        • LCOF 16. 数值的整数次方
        • LCOF 17. 打印从1到最大的n位数
        • LCOF 33. 二叉搜索树的后序遍历序列
        • LCOF 36. 二叉搜索树与双向链表
        • LCOF 40. 最小的k个数
        • LCOF 51. 数组中的逆序对
    • 剑指Offer
      • 03. 数组中重复的数字【排序/哈希/比较交换】
      • 04. 二维数组中的查找【线性查找】
      • 05. 替换空格【字符串】
      • 06. 从尾到头打印链表【栈/递归】
      • 07. 重建二叉树【递归】
      • 09. 用两个栈实现队列【辅助栈】
      • 10-I. 斐波那契数列【DP】
      • 10-II. 青蛙跳台阶问题【DP】
      • 11. 旋转数组的最小数字【二分查找】
      • 12. 矩阵中的路径【DFS】
      • 13. 机器人的运动范围【DFS/BFS】
      • 14-I. 剪绳子【DP/贪心】
      • 14-II. 剪绳子 II【贪心】
      • 15. 二进制中1的个数【位运算】
      • 16. 数值的整数次方【分治】
      • *17. 打印从1到最大的n位数
      • 18. 删除链表的节点
      • *19. 正则表达式匹配
      • 20. 表示数值的字符串
      • 21. 调整数组顺序使奇数位于偶数前面【双指针】
      • 22. 链表中倒数第k个节点【快慢指针】
      • 24. 反转链表【递归/双指针】
      • 25. 合并两个排序的链表【递归】
      • 26. 树的子结构【递归】
      • 27. 二叉树的镜像【递归/辅助栈】
      • 28. 对称的二叉树【递归】
      • 29. 顺时针打印矩阵【模拟】
      • 30. 包含min函数的栈【辅助栈】
      • 31. 栈的压入、弹出序列【辅助栈】
      • 32 - I. 从上到下打印二叉树【BFS】
      • 32 - II. 从上到下打印二叉树 II【BFS】
      • 32 - III. 从上到下打印二叉树 III【BFS 双端队列】
      • 33. 二叉搜索树的后序遍历序列【分治 递归】
      • 34. 二叉树中和为某一值的路径【递归 回溯】
      • *35. 复杂链表的复制【哈希表】
      • 36. 二叉搜索树与双向链表【DFS】
      • 37. 序列化二叉树【BFS】
      • 38. 字符串的排列【DFS】
      • *39. 数组中出现次数超过一半的数字【哈希/摩尔投票】
      • 40. 最小的k个数【堆】
      • 41. 数据流中的中位数【堆】
      • 42. 连续子数组的最大和【DP】
      • 43. 1~n 整数中 1 出现的次数【找规律】
      • 44. 数字序列中某一位的数字【找规律】
      • 45. 把数组排成最小的数【排序】
      • 46. 把数字翻译成字符串【DP】
      • 47. 礼物的最大价值【DP】
      • 48. 最长不含重复字符的子字符串【滑动窗口】
      • 49. 丑数【DP】
      • 50. 第一个只出现一次的字符【哈希表】
      • *51. 数组中的逆序对【归并排序】
      • 52. 两个链表的第一个公共节点【双指针】
      • 53 - I. 在排序数组中查找数字 I【二分查找】
      • 53 - II. 0~n-1中缺失的数字【二分查找/位运算】
      • 54. 二叉搜索树的第k大节点【中序遍历】
      • 55 - I. 二叉树的深度【DFS/BFS】
      • 55 - II. 平衡二叉树【DFS】
      • 56 - I. 数组中数字出现的次数【位运算】
      • 56 - II. 数组中数字出现的次数 II【位运算】
      • 57. 和为s的两个数字【双指针/哈希表】
      • 57 - II. 和为s的连续正数序列【双指针】
      • 58 - I. 翻转单词顺序【双指针】
      • 58 - II. 左旋转字符串【字符串】
      • *59 - I. 滑动窗口的最大值【滑动窗口】
      • 59 - II. 队列的最大值【队列】
      • *60. n个骰子的点数【DP】
      • 61. 扑克牌中的顺子【Set/排序】
      • 62. 圆圈中最后剩下的数字【约瑟夫环】
      • 63. 股票的最大利润【DP】
      • 64. 求1+2+…+n【短路】
      • 65. 不用加减乘除做加法【位运算】
      • *66. 构建乘积数组【DP】
      • 67. 把字符串转换成整数
      • 68 - I. 二叉搜索树的最近公共祖先【迭代/递归】
      • 68 - II. 二叉树的最近公共祖先【递归】
    • 常见问题
      • 俩必须掌握的排序
      • 腾讯常见问题
      • 字节常见问题
  • 计算机网络
    • 简介
    • 基础知识
      • 综述
      • 物理层
      • 链路层
      • 网络层
      • 传输层
      • 应用层
        • HTTP
    • 常见问题
      • 常见问题带答案
  • 操作系统
    • 简介
    • 基础知识
      • 概述
      • 进程管理
      • 死锁
      • 内存管理
      • 设备管理
      • 链接
    • 常见问题
  • 数据库
    • 简介
    • 基础知识
      • SQL 语法
      • 数据库系统基础
    • 常见问题
  • Java
    • 简介
    • 基础知识
      • Java 基础
      • Java 容器
      • Java 并发
      • Java 虚拟机
      • Java I/O
    • 常见问题
  • Android
    • 简介
    • 基础知识
      • Android 基础
      • Android 进阶
      • 开源框架
      • 具体场景分析
    • 常见问题
  • 面经
    • 简介
      • 777牌面筋
    • 腾讯面经汇总
      • 实习
      • 提前批
      • 秋招
    • 阿里面经汇总
      • 杂
      • HR 面准备
    • 字节跳动面经汇总
      • 实习
        • Android
          • 字节跳动客户端一二面面经
          • 字节客户端暑期实习一面面经
          • 字节跳动客户端面试经历
          • 字节实习面筋
          • 移动客户端开发(抖音)面经
          • [21届秋招] 字节——安卓开发实习生 面经
          • 字节跳动-头条Android开发实习生面试
          • 字节 安卓一面面经
          • 字节跳动安卓客户端面经
          • 字节跳动安卓日常实习生凉经
          • 字节 客户端开发 一面
          • 字节安卓实习一面
          • 字节跳动客户端一面面经
          • 字节跳动安卓实习一二面面经
          • BAT集齐!Java/安卓暑期实习面经汇总
          • 字节跳动(Andriod方向)一二三面面经
          • 字节客户端神奇二面
          • 字节抖音(一面客户端开发)
          • 字节跳动安卓、后端实习5轮面经
          • 2020技术开发岗面经:腾讯 & 字节跳动(已Offer)
          • 字节跳动安卓客户端面经(安卓开发零经验)
          • 字节跳动Android客户端一面凉经
          • 西瓜视频一面
          • 头条三面面筋+HR(已上岸,感谢各位牛友的帮助)
          • 字节跳动android实习生一面二面
          • 字节跳动 客户端实习生 1-5面 面经
          • 2019春招实习Android面试总结(后续再发秋招总结)
          • 字节客户端安卓开发三面面经
          • 字节跳动效率工程提前批Android实习面经
          • 字节 客户端 一二面面经 下周三面
          • 【字节跳动安卓暑假实习一面】
          • 字节跳动Android实习面经
          • 字节跳动 Android客户端 一~三面(已收到offer)
          • 字节跳动暑期实习Android一二三hr面经(offer)
        • iOS
          • 字节ios懂车帝实习 三面已过
          • 字节懂车帝IOS实习一面面经
          • 字节飞书iOS客户端实习一面面经
          • 字节飞书iOS客户端二面面经[已OC]
          • 字节跳动iOS客户端实习面经
          • 字节飞书iOS客户端日常实习面经 一二面+HR面
          • 21届字节ios开发日常实习 一二三面面经(已拿offer)
          • 字节iOS客户端实习123面经
          • 字节iOS客户端实习 三次技术面面经
          • 字节跳动 iOS日常实习三面+hr面挂
          • 字节跳动ios客户端一二三四+hr面(已收到offer)
          • 字节IOS客户端实习面经
          • iOS实习面经(字节美团阿里蘑菇街)
          • 字节跳动面经|iOS开发|大三暑期实习(已收offer)
          • 字节ios[深圳]实习一面面经
          • 字节跳动飞书iOS开发一二面
          • 字节跳动ios客户端实习3+hr面经【已拿offer】
          • 字节客户端三面完成后两天接到hr电话 ,许愿offer
          • 字节跳动iOS客户端日常实习一、二、三面凉经
          • 21届大三抖音ios 一面 二面 三面 面经(挂hr……)
          • 字节跳动iOS客户端实习生面经
          • 抖音iOS 暑期实习 过经(问了安卓)
          • 字节跳动 IOS开发实习 面经 (内附投递经验与总结!)
          • 字节三面问题整理
      • 提前批
        • 字节跳动的校招面试精髓(提前批免笔试)
        • 字节提前批移动端面经(1-3面)已拿意向书
        • 字节跳动客户端开发两次一轮游(21 届秋招)
        • 字节提前批。客户端开发一面二面
        • 字节提前批 安卓客户端加面 四面
        • 字节跳动 客户端开发提前批一面凉经
        • 字节跳动提前批安卓客户端 一二三四+HR面(已意向书)
        • 字节跳动提前批客户端至二面(凉透经)
        • 字节提前批-客户端Android一面面经
        • 字节提前批客户端一二三面面经(已凉)
        • 字节跳动抖音Android客户端一二三面面经
        • 字节客户端开发面经
      • 秋招
        • 2020年字节跳动秋招面经(抖音全栈已oc)
        • 字节客户端 一、二面面经,许愿三面~
        • 字节客户端三~四面面经,已oc(更新:已邮件)
        • 字节客户端几乎无安卓基础三面面经
        • 字节客户端抖音一二三面凉经
        • 上海抖音客户端开发面经
        • 字节跳动安卓工程师一面凉
        • 字节跳动客户端一面二面凉经
        • 字节视频架构一面凉经(安卓)
        • 字节客户端一二三面面经,已收到意向书
        • 字节客户端三面面经分享,求一个意向书(已收到意向书)
        • 字节教育客户端一二面,求个offer
        • 字节跳动客户端开发一面+二面
        • pyer零基础字节跳动客户端面试
        • 字节上海抖音客户端
        • 字节跳动客户端开发0基础 一面凉经
  • 杂
    • Git
    • 智力题
    • 设计模式
      • 单例模式
      • MVC MVP MVVM
    • 简历
  • JAVASCRIPT
    • 简介
    • 基础知识
    • 常见问题
由 GitBook 提供支持
在本页
  • 反转链表
  • 单链表按照K值排序
  • 二叉树叶子节点之间的最长路径
  • 二叉树的直径
  • 找树中有没有和为特定值的路径,返回 boolean
  • 合并两个有序链表
  • 三个线程
  • N 叉树
  • 手写快速排序
  • 做一道题topk的题,指定用快排的思路
  • 给一个x,输出相加等于x的连续子数组。
  • 双栈实现队列
  • 数据结构,10大排序挑2个讲
  • 给一个链表,判断链表元素是否回文
  • 如何判断一个二叉树是否是完全二叉树
  • 手写一个堆排序
  • 将一段文本中的单词逆序输出
  • 求解矩形起点到终点的最短路径,只能向右或者向下走
  • leetcode 142 变形 求环的长度
  • 1-100建立二叉树,中序遍历输出
  • 给定单链表,求离终点距离为 k 的节点
  • HashMap
  • 请问下面这段代码的输出结果是什么?添加代码,怎么保证输出的结果为1?
  • a b 两个字符串,找出b中匹配a的连续子串
  • B树
  • 回文数
  • 给定一个整型数组array和一个加和 n,是否存加和为 n 的三个数,
  • 一个数组,有正有负,是否存在一个三个数的子序列,并且严格递增
  • www.people.com.cn -> www.elpoep.moc.nc
  • 你有一个函数random7可以等概率随机产生1~7中的一个值
  • 实现是否为AVL树的判断
  • 了解排序算法吗
  • 讲讲排序
  • 排序中稳定和非稳定
  • 快排是稳定还是非稳定
  • 快速排序思想讲一下
  • 找出数组里重复次数最多的数
  • 了解查找算法吗?
  • 数组和链表区别?各自优缺点?在内存中的分配?适用场景?
  • HashMap 查找的时间复杂度
  • 用数组或链表实现 FIFO 的 get 和 add 方法
  • 简化Linux的文件路径表达
  • 查找
  • 讲一下你是怎么优化题解的?
  • 一个链表找倒数第 N 个元素
  • 一个链表怎么判断有没有闭环
  • 二分法找递增排序数组中的绝对值最小的数
  • 找数组中和为 k 的 m 个数
  • 股票买卖问题
  • 烧绳子
  • 实现LFU
  • 二叉树查找
  • 二叉树 Z 字型遍历
  • 扔硬币
  • 给定一个数组,将奇数排在左边,偶数排在右边
  • 给定一个三角形,找出自顶向下的最小路径和
  • 给定一个byte返回倒序排列后的byte
  • 两个数字非常大的String,对其求和
  • 链表每隔k结点翻转一次
  • 无序数组a,找任意一个i
  • 二叉树的前序遍历
  • 10000个数取最大的100个
  • 扑克牌大集合🎴
  • 两数之和
  • 汉诺塔
  • 数组反转
  • 最长连续子序列
  • 封装一个单链表
  • 数组反转
  • 发牌
  • 数组A 数组B 计算A-B
  • 0-n之间所有质数
  • 讲讲排序算法
  • 归并/快排
  • 堆排序
  • 合并有序数组
  • 二叉树的右视图
  • 单链表判断有无环
  • 二叉树每层最大值
  • 实现生产者消费者
  • 判断一个数是偶数的方法有哪些
  • 二叉树的最大宽度
  • 抛硬币
  • 求两个链表的交叉结点
  • 二叉树中两个结点的距离
  • stack实现o(1)获得最小值,手写基于数组的栈
  • 单链表倒数第k个节点
  • 平衡二叉树判断
  • 二叉树路径之和为 N
  • Top K问题
  • 求数组中第k小的数。
  • 给定一个有序数组和target,判断target是否在数组里重复出现,如果有,输出第一次出现的下标。
  • 给代码问功能
  • 二叉树层序遍历
  • 最长非重复字符串
  • 股票,两次买进卖出,怎样收益率最大
  • 网络流模板
  • 三数之和
  • 对字符串数组进行全排列
  • 大整数加法
  • 根据二叉树的前序和后序序列能恢复出多少棵树
  • 跳台阶,不能连续跳2步
  • 一个二维数组,找出其中的最长路径
  • K 路归并
  • Leetcode 165 比较版本号
  • 电梯题
  • 用两个栈实现一个队列
  • 青蛙上台阶
  • 区间合并求并集
  • 连续子数组的最大和
  • 二分查找
  • 8个桶(每个桶只能放一个球),5个球,三个连续的情况有几种一般情况下呢
  • 求k数给一个数组,找出这样一些数,这个数s左边的数都比它小,右边的数都比它大
  • leetcode1 两数之和
  • 剑指offer 62 圆圈中剩下的数字
  • LeetCode 41.LeetCode 缺失的第一个正数
  • 一次股票买卖所能获得的最大利润
  • 反转单词序列
  • 翻转域名
  • 0123_456_769变成3210_654_967

这有帮助吗?

  1. 数据结构与算法
  2. 常见问题

字节常见问题

是从面经里扒拉出来的算法题

上一页腾讯常见问题下一页简介

最后更新于4年前

这有帮助吗?

反转链表

单链表按照K值排序

二叉树叶子节点之间的最长路径

二叉树的直径

找树中有没有和为特定值的路径,返回 boolean

合并两个有序链表

三个线程

线程1打印a,线程2打印b,线程3打印c,要求循环打印abc10次。

N 叉树

计算从一棵多叉树(节点取值不相同)的根节点走N步,能走到节点x的概率,任何一个走过的节点不能走第二次(即不能往回走),如果没路可以走可以原地走,如果有路可走,但是步数没用完需要接着走。

手写快速排序

做一道题topk的题,指定用快排的思路

给一个x,输出相加等于x的连续子数组。

双栈实现队列

口述一下过程

数据结构,10大排序挑2个讲

给一个链表,判断链表元素是否回文

空间复杂度O(1)

如何判断一个二叉树是否是完全二叉树

手写一个堆排序

算法 给你数组 实现堆排序的过程(我刚开始i说 用优先队列 他说不用这么麻烦,只要给我输出是最大堆的形式,我都卡半天不知道干嘛 最后才想起来用堆的特性 父节点与子结点交换,不知道对不对)

将一段文本中的单词逆序输出

求解矩形起点到终点的最短路径,只能向右或者向下走

leetcode 142 变形 求环的长度

1-100建立二叉树,中序遍历输出

给定单链表,求离终点距离为 k 的节点

要求只扫一次且空间复杂度为O(1)

这就是求倒数第k个结点吧

HashMap

已知一个model类new一个对象,并将该对象作为HashMap的key, value为Hello,修改该对象中某一个属性的值,再去HashMap中get此key,此时的value值是什么?

请问下面这段代码的输出结果是什么?添加代码,怎么保证输出的结果为1?

class A { 
    private int i = 0;
    private void foo() {
        ......
        new Thread(new Runnable() { <a href="/profile/992988" data-card-uid="992988" class="js-nc-card" target="_blank" from-niu="default">@Override public void run() {
                .....
                i = 1;
                ......
            }
        }).start();
        .....
        System.out.print(i);
        .....
    }
}

a b 两个字符串,找出b中匹配a的连续子串

(连续子串长度与a相同,每个字符位置可以不同)

B树

回文数

给定一个整型数组array和一个加和 n,是否存加和为 n 的三个数,

O(n^2)就可以

一个数组,有正有负,是否存在一个三个数的子序列,并且严格递增

解释了一下子序列,解释了一下严格递增,O(n2)写了,让优化……提示提示提示,我死活想不出来,这时候面试官的提示越来越高大上,提示包含关系,提示命题的逆否,提示到我越来越想不起来……过了很久很久。然后说我们下一个环节【此时已经知道肯定没戏了】【力扣334】

www.people.com.cn -> www.elpoep.moc.nc

char[] www.people.com.cn char[] www.elpoep.moc.nc //在原数组上操作,不使用 String 的类方法,不创建额外的空间(数组、堆、栈、对列等)

你有一个函数random7可以等概率随机产生1~7中的一个值

// 现在用这个random7去实现一个random10.

实现是否为AVL树的判断

struct treeNode{ treeNode left, right; int val; }; //实现是否为AVL树的判断 bool isBalance(treeNode root){ }

了解排序算法吗

讲讲快排。把一个完全有序的序列排序时间代价最小的是哪种?(插入排序)

讲讲排序

排序中稳定和非稳定

快排是稳定还是非稳定

快速排序思想讲一下

复杂度是多少,最优和最坏情况复杂度是多少,怎么算出来的。

找出数组里重复次数最多的数

(我这里了讲一种要排序的,一种不用排序然后用hashmap,他问我时间复杂度各是多少)

了解查找算法吗?

讲了二分查找。

数组和链表区别?各自优缺点?在内存中的分配?适用场景?

为什么数组查找快,链表插入快。

HashMap 查找的时间复杂度

最好和最坏情况下是多少。

用数组或链表实现 FIFO 的 get 和 add 方法

简化Linux的文件路径表达

如/a/b/../.可简化成/a

查找

给一个日志文件,精确到秒,同一时间可能会有多条日志。给一个时间,精确到分钟,找到这一分钟所有的日志。

日志是按时间顺序的,可以用二分查找

讲一下你是怎么优化题解的?

一个链表找倒数第 N 个元素

复杂度O(n)

一个链表怎么判断有没有闭环

力扣环形链表

找数组中和为 k 的 m 个数

股票买卖问题

(只能买卖一次和或任意次

烧绳子

无数根各处粗细不均匀的绳子,烧完是一个小时,怎么计时出45分钟。

实现LFU

二叉树查找

二叉树 Z 字型遍历

扔硬币

两个人轮流投掷硬币,规定正面赢,正反面各50%概率,计算先投的人获胜的概率(用级数去解决)

给定一个数组,将奇数排在左边,偶数排在右边

【利用快排的思想很快就可以做出来】

给定一个三角形,找出自顶向下的最小路径和

每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)【遍历路径求和】

给定一个byte返回倒序排列后的byte

如输入10110000返回00001101【面试官提醒可以用移位保存每个位置的值然后再倒序】

两个数字非常大的String,对其求和

如"999","2"->"1001"【转为char[]倒序相加,注意进位】

链表每隔k结点翻转一次

无序数组a,找任意一个i

想着用无序数组的中位数来解决,但是面试官说如果选择了数组的最小值或最大值这怎么办,经过我东扯西扯,面试官可能懂了,问了这个方法的时空复杂度。

可以从头找,如果当前值小于最小值,那就更新最小值,然后向后找一个比它大的就可以了

二叉树的前序遍历

10000个数取最大的100个

(这个算法没写完,面试官见时间不够了就让我别写先了)

扑克牌大集合🎴

扑克牌三带二(算一算出现的概率,太菜了)

扑克牌五张同色的概率(降低难度,花了一会时间才算出,太菜了)

扑克牌乱序发牌(一开始想着交换乱序,后来想了一段时间,构造乱序数组)

两数之和

给一对无序数组,给一个target整数,找出数组中两个数字相加为target,并输出下标(不能用哈希) // 就是两数之和呀,不让哈希的话就只能先排序再双指针?

汉诺塔

数组反转

// 数组双指针 链表递归

最长连续子序列

复杂度要求 O(n)

封装一个单链表

要求实现删除,添加,反转方法

数组反转

给一个target整数,每target长度反转一次

发牌

手上握有一堆牌,分两步‌

1.把顶上的牌发出去

2.把顶上的牌放到底部

重复1-2步,直到手上没牌

给出桌子上的发牌顺序,求原来手牌顺序

数组A 数组B 计算A-B

0-n之间所有质数

(先求所有合数)

讲讲排序算法

归并/快排

(实现原理/平均复杂度/能否提前结束/谁性能更优)

堆排序

(怎么实现调整堆结构/k个最大的数)

合并有序数组

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组

二叉树的右视图

剑指有这一题

单链表判断有无环

力扣应该有一题环形链表

二叉树每层最大值

实现生产者消费者

判断一个数是偶数的方法有哪些

// % &

二叉树的最大宽度

抛硬币

AB抛硬币,A先抛硬币,正面为赢,直到其中一个人抛出正面

求A赢的概率 // 好多硬币题目啊我不想做

求两个链表的交叉结点

二叉树中两个结点的距离

(通过公共祖先结点的距离和)先说出思路,回溯获得根到子节点的路径

stack实现o(1)获得最小值,手写基于数组的栈

单链表倒数第k个节点

平衡二叉树判断

二叉树路径之和为 N

Top K问题

0-100 1000w个小数(后面改成了两位小数)(很详细) -> 桶排序 复杂度

求数组中第k小的数。

给定一个有序数组和target,判断target是否在数组里重复出现,如果有,输出第一次出现的下标。

给代码问功能

给了我一段代码,让我讲一下这个函数的作用是什么,大概是:

int isPair(int a,int b){

int sum=a+b;

return sum>100? 1:(sum<100?-1:0);

}

int countPair(int []array){

//Todo...}

讲完后,让我实现下面那个函数,让我求出数组里有多少对相加等于100的,我想的是排序后,用头尾指针,我写完代码后,他说你这就结束了?让我想一下哪里有问题,还让我想一想如果不排序怎么做。

然后说今天面试结束了,面试官就下线了(也没让我提问....)

二叉树层序遍历

最长非重复字符串

股票,两次买进卖出,怎样收益率最大

网络流模板

三数之和

对字符串数组进行全排列

回溯

给定一个[Int] Arr,给定数:N、Sum。要求在Arr中找出N个数和为Sum,如果找不到,则返回nil。只需找出一组解即可。

大整数加法

大数要多做几道

根据二叉树的前序和后序序列能恢复出多少棵树

跳台阶,不能连续跳2步

一个二维数组,找出其中的最长路径

每次只能向值比自己小的方向走,且每次只能向下或者向右走 口述搜索、写了dp转移方程,然后实现dp(没跑数据,写出来就行)

力扣那个机器人的题吧

K 路归并

优先队列就行了。。然后他提了句还可以胜者树败者树,表示这个我知道但是一般好像是外存中用的比较麻烦学的时候也没讲实现也不会写 然后优先队列怎么实现,堆,实现堆有哪些要注意的(我也不知道有什么好注意的。。就说了几句实现细节)

Leetcode 165 比较版本号

电梯题

电梯从一层往上走时,我们只允许电梯停在其中的某一层。所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层。在一楼的时候,每个乘客选择自己的目的层,电梯则计算出应停的楼层。 问:电梯停在哪一层楼,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少?(直觉是中位数,不过没想出来严谨的证明,换了种写法,前缀和后缀和搞了一下,面试官期望的应该是DP,不过面试官表示认同我的解法。

用两个栈实现一个队列

如何优化前面说的那种思路?

青蛙上台阶

区间合并求并集

连续子数组的最大和

二分查找

在升序数组中找出绝对值最小的那个数

8个桶(每个桶只能放一个球),5个球,三个连续的情况有几种一般情况下呢

求k数给一个数组,找出这样一些数,这个数s左边的数都比它小,右边的数都比它大

没刷到过这个题,一开始满脑子都是快排思想,面试官提示用动态规划的思路后才写出来

leetcode1 两数之和

给出三种方法

剑指offer 62 圆圈中剩下的数字

LeetCode 41.LeetCode 缺失的第一个正数

一次股票买卖所能获得的最大利润

力扣上好几个股票题

反转单词序列

追问怎么优化,有没有更好的办法

翻转域名

www.baidu.com ➡️ com.baidu.www

0123_456_769变成3210_654_967

二分法找递增数组中的绝对值最小的数

LEETCODE 543. 二叉树的直径
LEETCODE 112. 路径总和
排序
58 - I. 翻转单词顺序【双指针】
LCOF 24. 反转链表
Logo单链表按k值重新排序_未来之歌-CSDN博客