中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

展示型建站模板平臺(tái)東莞網(wǎng)站推廣的公司

展示型建站模板平臺(tái),東莞網(wǎng)站推廣的公司,深圳 b2c 網(wǎng)站建設(shè),網(wǎng)站怎樣上傳到空間文章目錄 一、題目二、C# 題解 一、題目 編寫(xiě)一個(gè)函數(shù),檢查輸入的鏈表是否是回文的。 點(diǎn)擊此處跳轉(zhuǎn)題目。 示例 1: 輸入: 1->2 輸出: false 示例 2: 輸入: 1->2->2->1 輸出: true …

文章目錄

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

一、題目

??編寫(xiě)一個(gè)函數(shù),檢查輸入的鏈表是否是回文的。

??點(diǎn)擊此處跳轉(zhuǎn)題目。

示例 1:

輸入: 1->2
輸出: false

示例 2:

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

進(jìn)階:

  • 你能否用 O(n) 時(shí)間復(fù)雜度和 O(1) 空間復(fù)雜度解決此題?

二、C# 題解

??使用 O ( n ) O(n) O(n) 空間很容易寫(xiě)出來(lái),只需要開(kāi)辟一個(gè)數(shù)組或者反向鏈表即可。這里為了實(shí)現(xiàn)進(jìn)階要求,在原鏈表上修改。首先將鏈表的前半部分翻轉(zhuǎn),然后比較前后兩個(gè)鏈表是否相同,最后恢復(fù)原鏈表即可,具體實(shí)現(xiàn)細(xì)節(jié)見(jià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;// 統(tǒng)計(jì)鏈表長(zhǎng)度while (p != null) {p = p.next;n++;}if (n <= 1) return true;    // 長(zhǎng)度 <= 1,一定是回文串i = n / 2;                  // 長(zhǎng)度的一半,向下取整p = head;while (--i > 0) p = p.next; // 定位到鏈表中間q = p.next;p.next = null;              // 斷開(kāi)鏈表Reverse(head);              // 翻轉(zhuǎn)前半部分// 判斷鏈表前后兩部分是否相同if (n % 2 == 0) result = Same(p, q);else result = Same(p, q.next); // 奇數(shù)長(zhǎng)度的鏈表需要跳過(guò)最中間的元素// 恢復(fù)鏈表原狀Reverse(p);p.next = q;return result;}// 翻轉(zhuǎn)鏈表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;}// 比較兩個(gè)鏈表是否相同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;}
}
  • 時(shí)間復(fù)雜度: O ( n ) O(n) O(n)。
  • 空間復(fù)雜度: O ( 1 ) O(1) O(1)。

??看了一下官方解法,發(fā)現(xiàn)還可以進(jìn)行優(yōu)化。使用快慢指針定位到中間節(jié)點(diǎn),代碼會(huì)更加高級(jí)和優(yōu)雅hh。但是效率和上面統(tǒng)計(jì)長(zhǎng)度然后遍歷一半進(jìn)行定位的方式差不多,因?yàn)槎际潜闅v了一個(gè)半鏈表(快指針遍歷整個(gè)鏈表,慢指針遍歷半個(gè)鏈表),但是快慢指針這種方法它顯得高級(jí)呀哈哈!

/*** 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 前進(jìn)兩格if (q != null) p = p.next; // q 不為空,p 才前進(jìn)}ListNode r = p.next;           // 定位到后半段鏈表的首部p.next = null;                 // 斷開(kāi)鏈表Reverse(head);                 // 翻轉(zhuǎn)前半部分// 判斷鏈表前后兩部分是否相同if (q != null) result = Same(p, r);else result = Same(p, r.next); // 奇數(shù)長(zhǎng)度的鏈表需要跳過(guò)最中間的元素// 恢復(fù)鏈表原狀Reverse(p);p.next = r;return result;}// 翻轉(zhuǎn)鏈表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;}// 比較兩個(gè)鏈表是否相同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;}
}
  • 時(shí)間復(fù)雜度: O ( n ) O(n) O(n)。
  • 空間復(fù)雜度: O ( 1 ) O(1) O(1)。

??修改過(guò)后,發(fā)現(xiàn)快慢指針跑出來(lái)的速度不如直接統(tǒng)計(jì)鏈表長(zhǎng)度來(lái)得快。果然,高端的代碼往往以最樸素的方法寫(xiě)出來(lái)~

http://www.risenshineclean.com/news/7847.html

相關(guān)文章:

  • 專(zhuān)業(yè)的網(wǎng)站開(kāi)發(fā)服務(wù)軟文有哪些發(fā)布平臺(tái)
  • 教育網(wǎng)站報(bào)名友妙招鏈接怎么弄
  • 政府網(wǎng)站建設(shè)人員組成上海優(yōu)化公司選哪個(gè)
  • 泉州自助建站seo怎么優(yōu)化效果更好
  • 沒(méi)備案的網(wǎng)站可以做淘客優(yōu)化大師班級(jí)
  • 如何做好公司網(wǎng)站公司seo是什么職位
  • php網(wǎng)站怎么做靜態(tài)化西安百度推廣聯(lián)系方式
  • 網(wǎng)站后臺(tái)卸載cmsdede安卓?jī)?yōu)化大師新版
  • 句容建設(shè)路幼兒園網(wǎng)站鄭州高端網(wǎng)站建設(shè)哪家好
  • 外貿(mào)網(wǎng)站建設(shè)軟件百度一下你就知道主頁(yè)
  • 上海殷行建設(shè)網(wǎng)站百度上海分公司
  • 自學(xué)網(wǎng)站建設(shè)需要什么學(xué)歷關(guān)鍵詞排名點(diǎn)擊軟件首頁(yè)
  • seo網(wǎng)站建設(shè)公司哪家好網(wǎng)店培訓(xùn)班
  • 網(wǎng)站的用戶(hù)登錄一般怎么做的成功的軟文營(yíng)銷(xiāo)案例
  • 網(wǎng)站如何做電腦和手機(jī)appseo創(chuàng)業(yè)
  • 網(wǎng)頁(yè)設(shè)計(jì)與網(wǎng)站建設(shè)大作業(yè)友情鏈接搜讀
  • 網(wǎng)上購(gòu)物app進(jìn)一步優(yōu)化落實(shí)
  • 做網(wǎng)站開(kāi)發(fā)需要什么證書(shū)重慶百度推廣關(guān)鍵詞優(yōu)化
  • 想做個(gè)ktv的網(wǎng)站怎么做網(wǎng)絡(luò)廣告策劃方案范文
  • 武漢市建設(shè)廳網(wǎng)站國(guó)內(nèi)最新新聞?wù)?/a>
  • 微博推廣軟件網(wǎng)站的seo是什么意思
  • 電子請(qǐng)柬網(wǎng)站開(kāi)發(fā)app推廣實(shí)名認(rèn)證接單平臺(tái)
  • 政府網(wǎng)站頁(yè)面設(shè)計(jì)標(biāo)準(zhǔn)win10優(yōu)化大師怎么樣
  • 上海哪家網(wǎng)站建得好百度seo最成功的優(yōu)化
  • 福州外文網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣平臺(tái)幾大類(lèi)
  • 企業(yè)網(wǎng)站制作公司24小時(shí)接單seo sem
  • wordpress郵件模板seo實(shí)戰(zhàn)視頻
  • 服務(wù)器windos做網(wǎng)站整合營(yíng)銷(xiāo)傳播方案
  • 家居網(wǎng)站建設(shè)全網(wǎng)營(yíng)銷(xiāo)微信營(yíng)銷(xiāo)軟件免費(fèi)版
  • wordpress的cms插件山東進(jìn)一步優(yōu)化