Java for You 数据结构 字节面试高频百题(四)

字节面试高频百题(四)

61、反转数字

牛客 57 反转数字

​

思路:

  • 注意不能引入 long 类型
  • 通过求余倒着计算结果,每加入一个字符要判断下加入这个字符会不会超限

​

62、重排链表

牛客 2 重排链表:

​

思路:

  • 给一个单链表,将链表两两首尾相连
  • 原链表:1->2->3->4…..n->null
  • 对折后链表:1->n->2->n-1->3->n-2…….->null
  • 示例:1 2 3 4 5 6 编程 1 6 2 5 3 4
  • 找到链表中点,反转后链表,遍历前链表插入后链表节点,拼接后表剩余节点

​

​

63、矩阵元素查找

牛客 86 矩阵元素查找:

​

思路:

  • 行维度倒序剪枝
  • 行维度从后往前,当前元素值比目标值大,意味着这一列都比它大,没必要循环

​

64、缺失的第一个正整数

牛客 30 缺失的第一个正整数

​

思路:

  • 基础:哈希表,遍历判断
  • 进阶:原地哈希

​

65、丢失的数字

力扣 268 丢失的数字:

​

思路:

  • 基础:哈希表,遍历判断
  • 进阶:数学法

​

​

66、链表的奇偶重排

力扣 328/牛客 133 链表的奇偶重排:

思路:

  • 合并链表的思路,分别把奇数节点和偶数节点合并到新链表中

67、二叉树中的最大路径和

力扣 124/牛客 6 二叉树中的最大路径和:

​

思路:

  • 左右子树贡献求最大,注意负数情况的处理,函数返回节点贡献值选左子树或者由子树

​

68、对称二叉树

力扣 101/牛客 16 对称的二叉树:

​

​

思路:

  • 二叉树后续遍历:
  • 节点比较
  • 层序遍历借助栈

69、括号生成

牛客 26 括号生成

​

思路:

  • 递归树,左子树处理左括号,右子树处理有括号
  • left 为当前左括号个数,right 为当前右括号个数,n 对括号。递归树终止条件是 left==n&&left==right

​

70、顺时针旋转矩阵

牛客 18 顺时针旋转矩阵

​

​

思路:

  • 对角线置换+水平前后置换

71、删除有序链表中重复的元素-I

力扣 83/牛客 25 删除有序链表中重复的元素-I

​

思路:

  • 快慢指针。都初始化 head,遍历快指针,当快慢指针值不等时,慢指针直接连接不等值的快指针,此时慢指针再推进,达到跳过重复数字的效果。
  • 注意循环结束要对慢指针跳过后面重复元素的连接: 2-3-3 的case。

​

72、加起来和为目标值的组合

牛客 238 加起来和为目标值的组合:

思路:

  • 回溯法

73、左边界二分查找

牛客 105 二分查找-II:

​

思路:

  • 等值时收缩右边界

​

74、序列化二叉树

力扣 297/牛客 123 序列化二叉树

​

思路:

  • 在相应位置做逻辑处理

​

【前序】

​

【层序】

75、字符串变形

牛客 89 字符串变形:

​

思路:

  • 空格拆子字符串,针对子字符串做大小写转换

76、环形链表的约瑟夫问题

牛客 132 环形链表的约瑟夫问题:

​

思路:

  • 构建一个环形链表,指针符合要求则删除节点

77、最大数

牛客111 最大数:

​

思路:

  • 整型转字符串,排序并拼接

​

78、验证 IP 地址

牛客 113 验证 IP 地址:

​

思路:

  • 根据 IP 特点做针对性检查

​

79、兑换零钱

力扣 322/牛客 126 兑换零钱(一):

​

思路:

  • 动态规划 子问题

​

80、数组中的逆序对

牛客 118 数组中的逆序对:

​

思路:

  • 归并排序过程中计算数量

​

本文由 java4u.cn 发布,可自由转载、引用,但需署名作者且注明文章出处(作者:白色蜗牛,出处:java4u.cn)。如转载至微信公众号,请在文末添加作者公众号二维码。 https://java4u.cn/algorithms/3265.html

作者: 蜗牛

字节面试高频百题(五)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

公众号:蜗牛互联网

在线咨询: QQ交谈

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部