当前位置:   article > 正文

LeetCode 单链表判断是否存在回文 O(1)空间复杂度_单链表判断是不是回文 空间复杂度为1

单链表判断是不是回文 空间复杂度为1
利用的思想是小学奥数常见的追及问题

思路:如果存在回路,当两个速度不同的指针在其中不断循环时,一定会出现追及问题

如何体现速度不同:一个指针一次只跳一个结点,另一个指针一次跳两个(或多个)结点。

如何体现追及:判断两个指针所指向的内容是否是同一块地址区间。

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
        if(head==NULL)
            return false;
        ListNode * fast_p = head;
        ListNode * slow_p = head;
        while(fast_p!= NULL && fast_p->next!=NULL){
            slow_p = slow_p->next;
            fast_p = fast_p->next->next;
            if(fast_p == slow_p)
                return true;
        }
        return false;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/383327
推荐阅读
相关标签
  

闽ICP备14008679号