美文网首页我的大学
和我一起在LeetCode刷题吧(每天一题LeetCode)

和我一起在LeetCode刷题吧(每天一题LeetCode)

作者: 北斗星君 | 来源:发表于2020-03-06 10:36 被阅读0次

分类标签:链表

难易度:简单

题目描述:

编写一个函数,检查输入的链表是否是回文的。

示例 1:输入: 1->2              输出:false

示例 2:输入: 1->2->2->1  输出:true

思路:链表转换成数组

在链表问题处理过程中,很多时候对链表的指针处理是十分头疼的,对于这个问题我们可以采用将链表转换成数组,再通过对数组的下标进行处理,从而使得问题迎刃而解

代码:

bool isPalindrome(struct ListNode* head){

if(head==NULL)

    return true;

    struct ListNode * newHead=head;

    int count=0;

    while(newHead!=NULL)

    {

        count++;

        newHead=newHead->next;

    }

    int * nums=(int *)calloc(sizeof(int),count);

    int k=0;

    newHead=head;

  while(newHead!=NULL)

    {

      nums[k++]=newHead->val;

      newHead=newHead->next;

    }

    for(int i=0;i<count/2;i++)

    {

        if(nums[i]!=nums[count-1-i])

            return false;

    }

    return true;

}

运行结果:

运行结果 占有时间和空间

相关文章

网友评论

    本文标题:和我一起在LeetCode刷题吧(每天一题LeetCode)

    本文链接:https://www.haomeiwen.com/subject/hfztrhtx.html