zoukankan      html  css  js  c++  java
  • 19. Remove Nth Node From End of List

    19. Remove Nth Node From End of List

    题目

    Given a linked list, remove the nth node from the end of list and return its head.
    
    For example,
    
       Given linked list: 1->2->3->4->5, and n = 2.
    
       After removing the second node from the end, the linked list becomes 1->2->3->5.
    
    Note:
    Given n will always be valid.
    Try to do this in one pass. 
    

    解析

    • 两种思路
    • 思路一:第一遍遍历得到链表的长度,第二遍走cnt-n步,注意边界条件
    • 思路二:两个指针,第一个先走n-1步,然后两个指针一起走
    
    // 19. Remove Nth Node From End of List
    class Solution {
    public:
    	ListNode* removeNthFromEnd(ListNode* head, int n) {
    
    		ListNode* cur = head;
    		if (head==NULL)
    		{
    			return NULL;
    		}
    		int cnt = 0;
    		while (cur!=NULL)
    		{
    			cnt++;
    			cur = cur->next;
    		}
    		cur = head;
    		int pos = cnt - n+1;
    		if (pos==1)
    		{
    			return cur->next;
    		}
    		pos = pos - 2;
    		while (pos)
    		{
    			cur = cur->next;
    			pos--;
    		}
    		ListNode* dete = cur->next;
    		if (dete->next)
    		{
    			cur->next = cur->next->next;
    		}
    		else
    		{
    			cur->next = NULL;
    		}
    		
    		
    		//delete dete;
    		return head;
    	}
    };
    

    题目来源

  • 相关阅读:
    如何开启无线网卡
    E-SATA接口
    sata express接口
    联想服务器驱动
    国家信息安全漏洞共享平台
    SQL SERVER 性能调优
    计算机网络知识库
    CCNP 视频
    ORACLE 培训 -相克军
    phxsql
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/8324367.html
Copyright © 2011-2022 走看看