天天看點

六六力扣刷題雙指針之反轉連結清單

前言

之前小六六一直覺得自己的算法比較菜,算是一個短闆吧,以前刷題也還真是三天打魚,兩天曬網,刷幾天,然後就慢慢的不堅持了,是以這次,借助平台的活動,打算慢慢的開始開刷,并且自己還會給刷的題總結下,談談自己的一些思考,和自己的思路等等,希望對小夥伴能有所幫助吧,也可以借此機會把自己短闆補一補,希望自己能堅持下去呀

連結清單的合集

  • ​​六六力扣刷題哈希表之哈希理論​​
  • ​​六六力扣刷題哈希表之有效的字母異位詞​​
  • ​​六六力扣刷題哈希表之兩個數組的交集​​
  • ​​六六力扣刷題哈希表之快樂數​​
  • ​​六六力扣刷題哈希表之贖金信​​
  • ​​六六力扣刷題哈希表之三數之和​​

字元串

  • ​​六六力扣刷題字元串之反轉字元串​​
  • ​​六六力扣刷題字元串之反轉字元串2​​
  • ​​六六力扣刷題字元串之替換空格​​
  • ​​六六力扣刷題字元串之反轉字元串中的單詞​​
  • ​​六六力扣刷題字元串之找出字元串中第一個比對項的下​​
  • ​​六六力扣刷題字元串之重複的子字元串​​

雙指針

  • ​​六六力扣刷題雙指針之移除元素​​
  • ​​六六力扣刷題雙指針之删除連結清單的倒數第N個節點​​
  • ​​六六力扣刷題雙指針之連結清單相交​​
  • ​​六六力扣刷題雙指針之三數之和​​

題目

給你單連結清單的頭節點 ​

​head​

​ ,請你反轉連結清單,并傳回反轉後的連結清單。

示例 1

六六力扣刷題雙指針之反轉連結清單
輸入: head = [1,2,3,4,5]
輸出: [5,4,3,2,1]      

示例 2:

六六力扣刷題雙指針之反轉連結清單
輸入: head = [1,2]
輸出: [2,1]      

疊代

假設連結清單為 1 -> 2 ->3 1→2→3→∅,我們想要把它改成 1<-2<-3∅←1←2←3。

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode prev = null;
        ListNode curr = head;
        while (curr != null) {
            ListNode next = curr.next;
            curr.next = prev;
            prev = curr;
            curr = next;
        }
        return prev;
    }
}      

雙指針

class Solution {
  public ListNode reverseList(ListNode head) {
    //申請節點,pre和 cur,pre指向null
    ListNode pre = null;
    ListNode cur = head;
    ListNode tmp = null;
    while(cur!=null) {
      //記錄目前節點的下一個節點
      tmp = cur.next;
      //然後将目前節點指向pre
      cur.next = pre;
      //pre和cur節點都前進一位
      pre = cur;
      cur = tmp;
    }
    return pre;
  }
}      

結束

繼續閱讀