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

當前位置: 首頁 > news >正文

重慶造價信息網(wǎng)官網(wǎng)首頁長沙seo外包

重慶造價信息網(wǎng)官網(wǎng)首頁,長沙seo外包,源碼建網(wǎng)站,餐飲加盟網(wǎng)站制作文章目錄 翻轉(zhuǎn)鏈表找到鏈表的中間節(jié)點返回倒數(shù)第k個節(jié)點合并兩個有序鏈表判斷鏈表是否回文注意 翻轉(zhuǎn)鏈表 //反轉(zhuǎn)鏈表//實質(zhì)上是把每一個節(jié)點頭插法,原本第一個節(jié)點變成最后一個節(jié)點public ListNode reverseList(){//鏈表為空if (head null){return null;}//鏈表只有一個節(jié)點if…

文章目錄

  • 翻轉(zhuǎn)鏈表
  • 找到鏈表的中間節(jié)點
  • 返回倒數(shù)第k個節(jié)點
  • 合并兩個有序鏈表
  • 判斷鏈表是否回文
  • 注意


翻轉(zhuǎn)鏈表

在這里插入圖片描述

    //反轉(zhuǎn)鏈表//實質(zhì)上是把每一個節(jié)點頭插法,原本第一個節(jié)點變成最后一個節(jié)點public ListNode reverseList(){//鏈表為空if (head == null){return null;}//鏈表只有一個節(jié)點if (head.next == null ){return head;}ListNode cur = this.head.next;//先定義cur的位置this.head.next =null;//再把head.next置為空while(cur != null){ListNode curNext =cur.next;//再定義curNext在cur后面cur.next =this.head;//讓cur的下一個等于頭節(jié)點,就能把cur頭插到head前面head = cur;//head給到curcur = curNext;//cur再到curNext位置}return head;//返回頭,就能返回一整個鏈表}
}

找到鏈表的中間節(jié)點

方法1:鏈表長度除以2得到中間節(jié)點
在這里插入圖片描述

    //求鏈表中間節(jié)點//1.先求整個鏈表的長度//2.再求長度/2 就找到這個節(jié)點了public ListNode MiddleNode(){ListNode cur = this.head;int len = size();//讓cur走到中間節(jié)點for (int i = 0; i < len/2; i++) {cur = cur.next;}return cur;}

方法2:
優(yōu)化代碼:快慢指針的引用

  1. 當fast == null時,遍歷結(jié)束

在這里插入圖片描述

  1. 當fast.next == null時,遍歷結(jié)束

在這里插入圖片描述
所以循環(huán)結(jié)束有兩個條件:fast == null 或者 fast.next == null

    public ListNode MiddleNode1(){ListNode fast = this.head;ListNode slow = this.head;while (fast != null && fast.next != null ){fast = fast.next.next;slow = slow.next;}return slow;}

返回倒數(shù)第k個節(jié)點

在這里插入圖片描述

    public ListNode findKthToTail(int k){//判斷k的合法性if (k <= 0 || head == null){return null;}ListNode fast =head;ListNode slow =head;//先讓fast走k-1步while(k-1 != 0){fast = fast.next;//如果k很大,這個判斷可以讓代碼更高效if (fast == null){return null;}k--;}//slow和fast同時走//當fast.next =null時,slow已經(jīng)在倒數(shù)第k個節(jié)點了while(fast.next != null){fast = fast.next;slow = slow.next;}return slow;}

合并兩個有序鏈表

在這里插入圖片描述
在這里插入圖片描述

public class Test {//定義兩個鏈表public static MySingleList.ListNode  mergeTwoLists(MySingleList.ListNode head1, MySingleList.ListNode head2){//定義一個虛擬節(jié)點,保存合并之后的新鏈表MySingleList.ListNode newH = new MySingleList.ListNode(-1);//newH節(jié)點是新鏈表的頭節(jié)點,跟著記錄串聯(lián)之后的節(jié)點MySingleList.ListNode tmpH = newH;//當兩個鏈表都不為空才能進入循環(huán)進行合并排序while(head1 != null && head2 != null){//當head1的值小于head2時,頭節(jié)點tmpH的下一個節(jié)點就是連接小的那一個,然后head1再往后走一步           if (head1.val < head2.val){tmpH.next = head1;head1 = head1.next;}else{//當head2的值小于head1時,頭節(jié)點tmpH的下一個節(jié)點就是連接小的那一個,然后head2再往后走一步  tmpH.next = head2;head2 = head2.next;}//無論進入那個語句,tmp都會往后走一步tmpH = tmpH.next;}//當head1沒走完了,說明head2走完了,繼續(xù)接著剩下的head1if(head1 != null){tmpH.next = head1;}//當head2沒走完了,說明head1走完了,繼續(xù)接著剩下的head2if(head2 != null){tmpH.next = head2;}//最后返回return tmpH;}public static void main(String[] args) {MySingleList mySingleList = new MySingleList();mySingleList.addLast(12);mySingleList.addLast(23);mySingleList.addLast(34);mySingleList.addLast(45);mySingleList.display();//打印數(shù)組MySingleList mySingleList2 = new MySingleList();mySingleList2.addLast(15);mySingleList2.addLast(24);mySingleList2.addLast(37);mySingleList2.addLast(166);mySingleList2.display();MySingleList.ListNode head = mergeTwoLists(mySingleList.head,mySingleList2.head);mySingleList.display();}

判斷鏈表是否回文

1.先找到中間節(jié)點
2.翻轉(zhuǎn)
3.前面往后走,后面往前走,值是否一樣
在這里插入圖片描述

    //判斷是否回文public boolean chkPalindrome(){ListNode fast = head;ListNode slow = head;int len = size()/2;//5/2=2//1.找中間位置while(fast != null && fast.next != null){//fast先走倆步,slow再走一步fast = fast.next.next;slow = slow.next;}//2.翻轉(zhuǎn)ListNode cur = slow.next;while(cur != null){ListNode curNext = cur.next;cur.next = slow;slow = cur;cur = curNext;}//3.從前到后,從后到前while(head != slow){if (head.val != slow.val){return false;}//考慮偶數(shù)鏈表if (head.next == slow){return true;}head = head.next;slow = slow.next;}return true;}

注意

在寫題過程中,我混淆了找中間節(jié)點和返回倒數(shù)第k個節(jié)點的方法

他們的區(qū)別其實是:
找中間節(jié)點 :fast永遠是slow的二倍,slow走一步,fast就走兩步。

返回倒數(shù)第k個節(jié)點 :fast和slow的關(guān)系不是固定的,fast走幾步根據(jù)k-1得到,還有一個區(qū)別是,fast走了k-1步之后,slow走一步,fast也是走一步。

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

相關(guān)文章:

  • 搜搜提交網(wǎng)站入口長沙網(wǎng)站seo報價
  • 游戲推廣網(wǎng)站怎么做南京網(wǎng)絡(luò)營銷服務(wù)
  • 做英文網(wǎng)站 賺美元網(wǎng)絡(luò)推廣費計入什么科目
  • 榆林做網(wǎng)站多少錢網(wǎng)絡(luò)游戲推廣怎么做
  • 網(wǎng)絡(luò)公司 網(wǎng)站建設(shè) 小程序關(guān)鍵詞代做排名推廣
  • 自己做網(wǎng)站跟域名怎樣做房地產(chǎn)估價師考試
  • 免費網(wǎng)站注冊永久2345網(wǎng)址導航電腦版
  • 漢中網(wǎng)站建設(shè)服務(wù)自媒體視頻剪輯培訓班
  • 論壇網(wǎng)站用的虛擬主機深圳外貿(mào)網(wǎng)絡(luò)推廣渠道
  • 哪個網(wǎng)站有做車庫門的創(chuàng)建網(wǎng)站免費注冊
  • b2b2c平臺網(wǎng)站建設(shè)廣州網(wǎng)站排名優(yōu)化公司
  • 李氏牛仔網(wǎng)站建設(shè)風濟南網(wǎng)站建設(shè)方案
  • wordpress僅顯示標題互聯(lián)網(wǎng)廣告優(yōu)化
  • 個人網(wǎng)站 不用備案朋友圈廣告
  • 百度做一個網(wǎng)站多少錢專業(yè)制作網(wǎng)頁的公司
  • o2o網(wǎng)站開發(fā)框架長春seo排名優(yōu)化
  • 東莞哪家做網(wǎng)站比較好北京網(wǎng)上推廣
  • 做有網(wǎng)被視頻網(wǎng)站有哪些銷售平臺軟件有哪些
  • 成都網(wǎng)站搭建公司哪家好阿里大數(shù)據(jù)分析平臺
  • 網(wǎng)站建設(shè)丨找王科杰專業(yè)好的seo網(wǎng)站
  • 怎樣做網(wǎng)站外鏈seo的中文意思
  • 怎么做才能發(fā)布網(wǎng)站網(wǎng)站域名購買
  • 淘客網(wǎng)站是怎么做的中國seo關(guān)鍵詞優(yōu)化工具
  • 濟南做網(wǎng)站的公司電腦全自動掛機賺錢
  • 公務(wù)員建設(shè)文化與道德網(wǎng)站營銷網(wǎng)站優(yōu)化推廣
  • 廣西網(wǎng)站建設(shè)蘇州網(wǎng)站制作
  • 做傳銷網(wǎng)站違法嗎品牌推廣策略分析
  • 做自己的網(wǎng)站可以賺錢嗎市場推廣方案怎么寫
  • 織夢做的網(wǎng)站 xampp百度seo排名主要看啥
  • 做外貿(mào)開通哪個網(wǎng)站好seo優(yōu)化排名易下拉用法