前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BAT算法面试题(12)--环形链表(哈希表法)

BAT算法面试题(12)--环形链表(哈希表法)

作者头像
iOSSir
发布2023-03-19 13:26:15
2910
发布2023-03-19 13:26:15
举报

面试题目

给定一个链表,判断链表中是否有环. 难度升级: 试试能否在不使用额外空间解决此问题?

解决方案(哈希表)

思路

我们可以通过检查一个结点此前是否被访问过来判断链表是否为环形链表.常用方法,一般是使用哈希表.

算法

我们遍历所有的节点并在哈希表中存储每个结点的引用(或内存地址).如果当前节点为空结点null,表示我们已经检测到链表的末尾的下一个节点.那么表示我们已经完成了链表的遍历,并且此链表不是环形链表.如果当前结点的引用已经存在过哈希表中,那么即可立马返回true(表示此链表为环形链表).

代码

Java Code

复杂度分析

  • 时间复杂度: O(n),对于含有n个元素的链表,我们访问每个元素最多一次.添加一个结点到哈希表中只需要花费O(1)的时间.
  • 空间复杂度:O(n),空间取决于添加哈希表中的元素数目.最多可以添加n个元素.

学习建议

  • 只要明白哈希表,即可解决这个问题.!

算法面试系列文章:

BAT面试算法进阶(1)--两数之和

BAT面试算法进阶(2)- 无重复字符的最长子串(暴力法)

BAT面试算法进阶(3)- 无重复字符的最长子串(滑动窗口法)

BAT面试算法进阶(4)- 无重复字符的最长子串(滑动法优化+ASCII码法)

BAT面试算法进阶(5)- BAT面试算法进阶(5)- 最长回文子串(方法一)

BAT面试算法进阶(6)- BAT面试算法进阶(6)-最长回文子串(方法二)

BAT面试算法进阶(7)- 反转整数

BAT面试算法进阶(8)- 删除排序数组中的重复项

BAT面试算法进阶(9)- 三维形体投影面积

BAT面试算法进阶(10)- 最长的斐波那契子序列的长度(暴力法)

BAT面试算法进阶(11)- 最长的斐波那契子序列的长度(动态规划法)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python课后小剧场 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面试题目
  • 解决方案(哈希表)
    • 思路
      • 算法
      • 代码
      • 复杂度分析
      • 学习建议
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档