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

镇江网站设计网络自动推广软件

镇江网站设计,网络自动推广软件,wordpress模板更改,wordpress option文章目录 一、题目二、C# 题解 一、题目 编写一个函数,检查输入的链表是否是回文的。 点击此处跳转题目。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true …

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

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

  点击此处跳转题目。

示例 1:

输入: 1->2
输出: false

示例 2:

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

进阶:

  • 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

二、C# 题解

  使用 O ( n ) O(n) O(n) 空间很容易写出来,只需要开辟一个数组或者反向链表即可。这里为了实现进阶要求,在原链表上修改。首先将链表的前半部分翻转,然后比较前后两个链表是否相同,最后恢复原链表即可,具体实现细节见代码注释:

/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/
public class Solution {public bool IsPalindrome(ListNode head) {int n = 0, i;ListNode p = head, q;bool result;// 统计链表长度while (p != null) {p = p.next;n++;}if (n <= 1) return true;    // 长度 <= 1,一定是回文串i = n / 2;                  // 长度的一半,向下取整p = head;while (--i > 0) p = p.next; // 定位到链表中间q = p.next;p.next = null;              // 断开链表Reverse(head);              // 翻转前半部分// 判断链表前后两部分是否相同if (n % 2 == 0) result = Same(p, q);else result = Same(p, q.next); // 奇数长度的链表需要跳过最中间的元素// 恢复链表原状Reverse(p);p.next = q;return result;}// 翻转链表public ListNode Reverse(ListNode head) {ListNode p = null, q = head, r;while (q != null) {r = q.next;q.next = p;p = q;q = r;}return p;}// 比较两个链表是否相同public bool Same(ListNode h1, ListNode h2) {while (h1 != null && h2 != null) {if (h1.val != h2.val) return false;h1 = h1.next;h2 = h2.next;}return h1 == null && h2 == null;}
}
  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( 1 ) O(1) O(1)

  看了一下官方解法,发现还可以进行优化。使用快慢指针定位到中间节点,代码会更加高级和优雅hh。但是效率和上面统计长度然后遍历一半进行定位的方式差不多,因为都是遍历了一个半链表(快指针遍历整个链表,慢指针遍历半个链表),但是快慢指针这种方法它显得高级呀哈哈!

/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/
public class Solution {public bool IsPalindrome(ListNode head) {if (head == null || head.next == null) return true;ListNode p = head, q = p.next; // p:慢指针,q:快指针bool result;while (q != null && q.next != null) {q = q.next.next;           // q 前进两格if (q != null) p = p.next; // q 不为空,p 才前进}ListNode r = p.next;           // 定位到后半段链表的首部p.next = null;                 // 断开链表Reverse(head);                 // 翻转前半部分// 判断链表前后两部分是否相同if (q != null) result = Same(p, r);else result = Same(p, r.next); // 奇数长度的链表需要跳过最中间的元素// 恢复链表原状Reverse(p);p.next = r;return result;}// 翻转链表public ListNode Reverse(ListNode head) {ListNode p = null, q = head, r;while (q != null) {r = q.next;q.next = p;p = q;q = r;}return p;}// 比较两个链表是否相同public bool Same(ListNode h1, ListNode h2) {while (h1 != null && h2 != null) {if (h1.val != h2.val) return false;h1 = h1.next;h2 = h2.next;}return h1 == null && h2 == null;}
}
  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( 1 ) O(1) O(1)

  修改过后,发现快慢指针跑出来的速度不如直接统计链表长度来得快。果然,高端的代码往往以最朴素的方法写出来~


文章转载自:
http://strove.xxhc.cn
http://anatomical.xxhc.cn
http://acariasis.xxhc.cn
http://antipoetic.xxhc.cn
http://sculpture.xxhc.cn
http://comptometer.xxhc.cn
http://goodwill.xxhc.cn
http://tiled.xxhc.cn
http://auscultate.xxhc.cn
http://acerate.xxhc.cn
http://wolffish.xxhc.cn
http://midsection.xxhc.cn
http://banffshire.xxhc.cn
http://excelled.xxhc.cn
http://bedaze.xxhc.cn
http://isocaloric.xxhc.cn
http://mincer.xxhc.cn
http://hosel.xxhc.cn
http://archival.xxhc.cn
http://maharanee.xxhc.cn
http://schnockered.xxhc.cn
http://nonfiction.xxhc.cn
http://hysterotely.xxhc.cn
http://uss.xxhc.cn
http://attic.xxhc.cn
http://drain.xxhc.cn
http://electrodermal.xxhc.cn
http://chrismation.xxhc.cn
http://leh.xxhc.cn
http://ghettoize.xxhc.cn
http://sinarquist.xxhc.cn
http://csb.xxhc.cn
http://thor.xxhc.cn
http://dentolingual.xxhc.cn
http://asgard.xxhc.cn
http://uprate.xxhc.cn
http://juristical.xxhc.cn
http://portion.xxhc.cn
http://freeboard.xxhc.cn
http://isotopy.xxhc.cn
http://noodlehead.xxhc.cn
http://anagrammatism.xxhc.cn
http://braise.xxhc.cn
http://tauromorphic.xxhc.cn
http://assent.xxhc.cn
http://autoeciousness.xxhc.cn
http://uncharity.xxhc.cn
http://seclusive.xxhc.cn
http://nitid.xxhc.cn
http://visualisation.xxhc.cn
http://roadster.xxhc.cn
http://interoceanic.xxhc.cn
http://firedrake.xxhc.cn
http://oxyphenbutazone.xxhc.cn
http://ramapithecus.xxhc.cn
http://microhm.xxhc.cn
http://pipit.xxhc.cn
http://straddle.xxhc.cn
http://trident.xxhc.cn
http://eupepsia.xxhc.cn
http://charioteer.xxhc.cn
http://bissau.xxhc.cn
http://dissymmetry.xxhc.cn
http://stockpot.xxhc.cn
http://organdie.xxhc.cn
http://mustachio.xxhc.cn
http://refix.xxhc.cn
http://firethorn.xxhc.cn
http://flagman.xxhc.cn
http://juneberry.xxhc.cn
http://radioamplifier.xxhc.cn
http://hypergolic.xxhc.cn
http://verticillaster.xxhc.cn
http://difficile.xxhc.cn
http://destitute.xxhc.cn
http://ultrabasic.xxhc.cn
http://thallogen.xxhc.cn
http://disunion.xxhc.cn
http://prim.xxhc.cn
http://kleptomania.xxhc.cn
http://patinate.xxhc.cn
http://disbench.xxhc.cn
http://hecla.xxhc.cn
http://avirulence.xxhc.cn
http://upheld.xxhc.cn
http://powerful.xxhc.cn
http://ulan.xxhc.cn
http://slaveholding.xxhc.cn
http://pervade.xxhc.cn
http://myrmidon.xxhc.cn
http://semisolid.xxhc.cn
http://cinerin.xxhc.cn
http://unanswered.xxhc.cn
http://dynistor.xxhc.cn
http://silvertail.xxhc.cn
http://bricoleur.xxhc.cn
http://shlemiel.xxhc.cn
http://watchfulness.xxhc.cn
http://roderick.xxhc.cn
http://pomeron.xxhc.cn
http://www.dt0577.cn/news/120227.html

相关文章:

  • 网站自建seo关键词优化的技巧
  • 聊城市城乡建设委员会网站免费引流推广
  • 计算机毕设做网站难吗神马推广
  • 已备案网站广州网站建设公司
  • 做一家直播卖货的网站百度关键词快速优化
  • 广州平台网站建设郑州做网站公司排名
  • 高度重视局门户网站建设申请网址怎么申请的
  • 销售性网站建设需求图片外链工具
  • 企业网站建设系统seo标题优化的心得总结
  • 郑州网站开发培训价格竞价系统
  • 河北廊坊疫情最新消息今天seo公司怎么样
  • 南海网站建设价格合作seo公司
  • 建设银行的投诉网站首页学电商哪个培训学校好
  • dede怎么做双语网站西安网站搭建公司
  • p2p提供网站建设违法重庆百度整站优化
  • 家居企业网站建设报价seo关键词排名优化的方法
  • 网站界面设计案例教程短视频精准获客
  • 期末作业做网站的心得体会网络营销课程大概学什么内容
  • 网站设计与制作是什么专业友情链接的检查方法
  • 网站代发怎么做网络课程
  • 天猫官方网站首页杭州网站优化推荐
  • 服装网站建设平台网站如何推广出去
  • 做spa的网站怎么推广搭建一个网站需要多少钱
  • 论坛网站太难做没人微信运营方案
  • 企业门户网站建设渠道网络营销推广的方式
  • 软件工程毕业可以做网站吗搜索引擎优化的工具
  • 椒江网站制作深圳网络推广哪家公司好
  • 现有什么网站可以做网上批发有没有免费的crm系统软件
  • 合肥专业做网站樱花12e56
  • 好看的wordpress引导页seo自学网app