题解 | #链表中环的入口结点#

链表中环的入口结点

https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

/**
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */
object Solution {
    /**
    * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    *
    * 
        * @param pHead ListNode类 
        * @return ListNode类
    */

    var current: ListNode? = null
    var arrow: ListNode? = null

    fun EntryNodeOfLoop(pHead: ListNode?): ListNode?  {
        // write code here
        val mHead = ListNode(-1)
        mHead.next = pHead

        current = mHead
        arrow = current
        if (hasCycle(2)) {
            arrow = mHead
            hasCycle(1)
            return arrow
        } else {
            return null
        }
    }

    private fun hasCycle(step: Int): Boolean {
        while (arrow != null && current != null) {
            repeat(step) {
                arrow = arrow?.next
            }
            current = current?.next
            if (arrow == null) {
                return false
            }
            if (arrow == current) {
                return true
            }
        }
        return false   
    }
}

可能不对

全部评论

相关推荐

02-13 15:16
三江学院 运营
据说名字越长别人越关注你的昵称我觉得我要被关注了:完全看不出你到底干了什么 全是车轱辘话
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务