LeetCode
Posted Travelller
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode相关的知识,希望对你有一定的参考价值。
链表题。很简单但是debug了非常久。
愚蠢如我...把所有地址存在数组里。空间复杂度...
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode *p=head,*q; ListNode *s[100000]; int m=0; while(p){ s[m]=p;m++; p=p->next; } if (m==n) return head->next; if(n==1) (*s[m-2]).next=NULL; else { p=s[m-n-1]; q=p->next; (*p).next=(*q).next; } return head; } };
非常巧妙的方法,保持两个指针差n个位置,使后面的指针指向最后一个,前面的指针即为倒数第n.
class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { if(!head->next) return NULL; ListNode *pre = head; ListNode *cur = head; for(int i = 0;i<n;i++) cur = cur->next; if(!cur) return head->next; while(cur->next){ cur = cur->next; pre = pre->next; } pre->next = pre->next->next; return head; } };
以上是关于LeetCode的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段