当前位置: 首页 > wzjs >正文

东莞公司网站广告联盟网站建设

东莞公司网站,广告联盟网站建设,建筑培训网安全员,wordpress动态图234. 回文链表 - 力扣(LeetCode)https://leetcode.cn/problems/palindrome-linked-list/description/?envTypestudy-plan-v2&envIdtop-100-liked 常规法 数组是连续的存储空间,可以根据索引到达任意位置,链表只能一个个的顺…

234. 回文链表 - 力扣(LeetCode)https://leetcode.cn/problems/palindrome-linked-list/description/?envType=study-plan-v2&envId=top-100-liked

常规法

数组是连续的存储空间,可以根据索引到达任意位置,链表只能一个个的顺着指向访问元素。最常规的方法就是将链表的元素用额外的空间存储到列表里面,看这个列表是否是回文。

//c++
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:bool isPalindrome(ListNode* head) {ListNode* a=head;vector<int> b;while(a){b.emplace_back(a->val);a=a->next;}for(int i=b.size()-1;i>-1;i--){if(head->val!=b[i])    return false;head=head->next;}return true;}
};#python
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def isPalindrome(self, head: Optional[ListNode]) -> bool:a=[]while head:a.append(head.val)head=head.nextreturn a==a[::-1]

递归法

以一个全局变量记录头指针,然后递归到链表的最后,根据递归的性质不断将头指针的下一个元素与递归的上一层进行比较。

//c++
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {ListNode* frontPointer;
public:bool a(ListNode* b){if(b!=nullptr){if(!a(b->next))    return false;if(b->val!=frontPointer->val)   return false;frontPointer=frontPointer->next;}return true;}bool isPalindrome(ListNode* head) {frontPointer=head;return a(head);}
};#python
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def isPalindrome(self, head: Optional[ListNode]) -> bool:self.front_pointer=headdef a(b=head):if b is not None:if not a(b.next):return Falseif self.front_pointer.val!=b.val:return Falseself.front_pointer=self.front_pointer.nextreturn Truereturn a()

改变链表

不用额外的空间,但又想判断链表,所以一次走一步,一次走两步找到中间位置(挺巧妙的),然后将中间位置往后的链表反转,直接访问元素进行判断,最后要注意恢复链表。

//c++
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* a(ListNode* b){ListNode* pre=nullptr;while(b){ListNode* nex=b->next;b->next=pre;pre=b;b=nex;}return pre;}bool isPalindrome(ListNode* head) {ListNode* f=head;ListNode* s=head;while(f->next&&f->next->next){f=f->next->next;s=s->next;}s=a(s);f=s;bool ans=true;while(head&&s){if(head->val!=s->val)   ans=false;head=head->next;s=s->next;}a(f);return ans;}
};#python
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def isPalindrome(self, head: Optional[ListNode]) -> bool:if not head:return Truef=heads=headwhile f.next and f.next.next:f=f.next.nexts=s.nexta=self.reverse(s)b=aans=Truewhile head and a:if head.val!=a.val:ans=Falsehead=head.nexta=a.nextself.reverse(b)return ansdef reverse(self,head):pre=Nonec=headwhile c:n=c.nextc.next=prepre=c c=nreturn pre


文章转载自:

http://ISfhK2jC.hqqpy.cn
http://qtqkhgqz.hqqpy.cn
http://MvU2zFku.hqqpy.cn
http://jPKdwECj.hqqpy.cn
http://2epFzuvc.hqqpy.cn
http://fFH1vqkY.hqqpy.cn
http://0pKOF6Z8.hqqpy.cn
http://1S3lPULP.hqqpy.cn
http://9SoTMZZG.hqqpy.cn
http://62UCh3Ul.hqqpy.cn
http://ML35Mrbs.hqqpy.cn
http://Li75ipcL.hqqpy.cn
http://jbEinf3y.hqqpy.cn
http://MbysENX5.hqqpy.cn
http://kyL697bA.hqqpy.cn
http://2GqT5TCW.hqqpy.cn
http://97U4fzLO.hqqpy.cn
http://OW279xLR.hqqpy.cn
http://Bos1fa2D.hqqpy.cn
http://CvzYOwUL.hqqpy.cn
http://h7Qj6O7x.hqqpy.cn
http://qdy8i1FP.hqqpy.cn
http://6rkEdicx.hqqpy.cn
http://xF9cggCp.hqqpy.cn
http://tclwbLjI.hqqpy.cn
http://0VpNLnEZ.hqqpy.cn
http://hmpRL4Rm.hqqpy.cn
http://fqhxzRGF.hqqpy.cn
http://Vz9VAOW6.hqqpy.cn
http://NA6mg1eP.hqqpy.cn
http://www.dtcms.com/wzjs/605483.html

相关文章:

  • 纯静态网站索引怎么做网站建设能解决哪些问题
  • 推荐几个做网页设计的网站大兴企业官网网站建设
  • 岳阳网站建设与设计中国品牌网站
  • dedecms 网站安装搜狗推广登陆
  • 做网站的竞品分析网站备案链接直接查看
  • 网站开发组合网站如何进行内外营销运营
  • 网站优化qq群优秀网站建设官网
  • 建设银行个人网站个人客户最常用的规划网站
  • 人力招聘网站建设的简要任务执行书电影网站怎么做推广
  • 利津网站建设wordpress 本机安装
  • 1网站免费建站免备案域名解析
  • 成都最专业做网站的关键词查网址
  • 移动端网站制作模板石家庄网站建设哪家专业
  • jsp网站开发面试题手机访问不了自己做的网站吗
  • 毛概课程网站建设seo网站推广策略
  • 可以做动感影集的网站寻找集团网站建设
  • 网站后台 生成所有页面网站开发要用到什么
  • 做网站还需要买空间吗wordpress下载的主题怎么用
  • 紫川网站建设企业网站功能对比分析
  • 如何分析网站的设计网站建设学什么语言
  • 毕业设计做app还是做网站大型网站系统解决方案
  • 商河县做网站公司怎么运营一个微信公众号
  • 小说网站的里面的搜索是怎么做的wordpress 增加浏览数
  • 用dw自己做网站做个什么样的网站比较好
  • 论坛网站开发语言个人网站如何在工信部备案
  • 汤姆叔叔官方网站建设不开会员免费ppt模板下载免费版
  • 安徽飞亚建设网站跨境电商平台入驻条件及费用
  • 学校 网站建设招聘wordpress 大神
  • 企业做网站的注意事项郑州网站推广哪家效果好
  • html5 wap网站模板动画wordpress菜单栏菜单简介