<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      LEETCODE(力扣) 19. 刪除鏈表的倒數第 N 個結點

      給你一個鏈表,刪除鏈表的倒數第 n 個結點,并且返回鏈表的頭結點。

      示例 1:

      輸入:head = [1,2,3,4,5], n = 2
      輸出:[1,2,3,5]
      示例 2:

      輸入:head = [1], n = 1
      輸出:[]
      示例 3:

      輸入:head = [1,2], n = 1
      輸出:[1]

      提示:

      鏈表中結點的數目為 sz
      1 <= sz <= 30
      0 <= Node.val <= 100
      1 <= n <= sz

      自解

      image
      (本來空間擊敗30,多提交兩次就96.74了,樂)

      第一時間想到了反轉鏈表刪除對應節點后再反轉回去
      考慮實用的話應該把刪去的節點空間回收

      /**
       * Definition for singly-linked list.
       * struct ListNode {
       *     int val;
       *     struct ListNode *next;
       * };
       */
       //反轉鏈表再反回去
      
      struct ListNode* reverse_list(struct ListNode*head)//反轉鏈表
      {
          struct ListNode *last=NULL,*next=NULL;
          while(head!=NULL)
          {
              next=head->next;
              head->next=last;
              last=head;
              head=next;
          }
          return last;
      }
      
      
      
      struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
          struct ListNode *temp=NULL,*head1=NULL;
          head=reverse_list(head);//反轉
          head1=head;//記錄反轉后的頭節點
          if(n<=1)//如果刪除反轉后的首結點
          {
              head=reverse_list(head->next);//直接將頭節點之后節點反轉回去,返回反轉后的鏈表
              return head;
          }
          n--;//遍歷到刪除的節點前面那個
          while(--n)head=head->next;
          head->next=head->next->next;//去掉要刪掉的節點(實際要注意回收內存)
          head1=reverse_list(head1);//鏈表反轉后返回
          return head1;
          
      }
      

      力扣解

      三個解答里我認為雙指針最優美
      使用兩個指針,快指針比慢指針快n,當快指針到NULL時,慢指針就在第n個節點
      當然這樣不太好直接刪除該節點,因此可以用一個dummy節點,讓慢指針再滯后一個節點,這樣快指針指向NULL時慢指針就是需要刪除節點的前一個結點。

      struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
          struct ListNode* dummy = malloc(sizeof(struct ListNode));
          dummy->val = 0, dummy->next = head;
          struct ListNode* first = head;
          struct ListNode* second = dummy;
          for (int i = 0; i < n; ++i) {
              first = first->next;
          }
          while (first) {
              first = first->next;
              second = second->next;
          }
          second->next = second->next->next;
          struct ListNode* ans = dummy->next;
          free(dummy);
          return ans;
      }
      
      作者:力扣官方題解
      鏈接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/solutions/450350/shan-chu-lian-biao-de-dao-shu-di-nge-jie-dian-b-61/
      來源:力扣(LeetCode)
      著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
      
      posted @ 2025-04-28 15:24  Osen  閱讀(11)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲一区成人在线视频| 中文字幕亚洲国产精品| 精品久久人人妻人人做精品| 国产999精品2卡3卡4卡| 久久se精品一区精品二区国产| 亚洲综合色区另类av| 亚洲中文字幕无码日韩精品| 国产一区二区三区色噜噜| 人妻在线无码一区二区三区| 乱女伦露脸对白在线播放| 久久精品国产99精品亚洲| 亚洲成色精品一二三区| 日本高清视频网站www| 欧美视频精品免费覌看| 麻花传媒免费网站在线观看| 国产精品一区二区三区自拍| 欧美日本在线一区二区三区| 亚洲午夜福利精品无码不卡| 熟女丝袜潮喷内裤视频网站| 九九热免费在线播放视频| 亚洲欧美日韩在线码| 日韩有码中文在线观看| 午夜精品区| 久久久天堂国产精品女人| 乱人伦人妻中文字幕不卡| 久久中文字幕无码专区| 91亚洲精品一区二区三区| 99精品热在线在线观看视| 老少配老妇老熟女中文普通话| 狼人大伊人久久一区二区| japanese无码中文字幕| 综合色综合色综合色综合| 成人啪精品视频网站午夜| 亚洲精品宾馆在线精品酒店| 漂亮人妻被强中文字幕久久 | 欧美日韩中文字幕久久伊人| 蜜臀AⅤ永久无码精品| 男女啪啪网站| 放荡的少妇2欧美版| 精品日韩精品国产另类专区| 日韩乱码人妻无码中文字幕视频 |