挥剑 Offer 06. 从尾停止打印出单链表

键入单链表的头连接点,从结尾到结尾回到每一个连接点的值(二维数组回到)。

类型解决方法6 {

public int[]reverse print(ListNode head){ 0

//解析xml一次,依据数组下标将原素倒送到二维数组中。

int数据库索引= 0;

ListNode node = head//临时测算单链表的长短。

while(连接点!= null){ 0

index ;

node = node.next

}

//必须建设一个二维数组。

int[]RES = new int[index];

for(int I = index-1;I > = 0;I–){

RES[I]= head . val;

head = head.next

}

回到res

}

}

指剑献十八。删掉单链表的连接点。

classSolution{publicListNodedeleteNode(ListNodehead,intval){if(head==null)returnnull;if(head.val==val)returnhead.next;//原本是returnhead,可是这类状况特点,删掉头连接点,这行能够删除,由于后边选用了虚似头连接点//删掉这一连接点的前一个连接点的部位,先寻找,随后转换表针就可以ListNodedummy=newListNode(0);//虚似头连接点dummy.next=head;//使他偏向头连接点ListNodenode=dummy;//临时性连接点,被删掉的前一个连接点while(node!=null&&node.next!=null){if(node.next.val==val){node.next=node.next.next;//单链表删掉便是那么简易break;}node=node.next;//不然得话再次后退}returndummy.next;}

剑指的是offer22 .单链表中的最后一个k连接点。

键入一个单链表并輸出单链表中的第k个连接点。为了更好地达到大部分人的习惯性,这一题型从1逐渐数,也就是单链表的尾连接点是最后第二个连接点。

比如,一个单链表有六个连接点,他们的值是第一个连接点的1.2.3.4.5和6。该单链表底端的第三个连接点是一个数值4的连接点。

/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(intx){val=x;}*}*/classSolution{publicListNodegetKthFromEnd(ListNodehead,intk){//假如求正数第2个连接点,爱情保卫战?立即用一个index,向后走2次就到//这儿用双指针,2个表针的间距为k,与此同时往后退;ListNodefast=head,slow=head;while(fast!=null&&k>0){fast=fast.next;k--;}//这儿用双指针,2个表针的间距为k,与此同时往后退;//slow指的便是倒数第k个while(fast!=null){fast=fast.next;slow=slow.next;}returnslow;}}

快来,大伙儿:p。

评论(0条)

刀客源码 游客评论