当前位置: 首页 > 后端技术 > Java

牛客网高频算法题系列-BM3-链表中的节点每k个一组翻转

时间:2023-04-02 01:37:21 Java

牛客网高频算法习题系列-BM3-Thelinkedlistinnodesareflippedeverykgroups链表中的节点每k组翻转一次,返回翻转后的链表。如果链表中的节点数不是k的倍数,则最后剩下的节点将保持原样。您不能更改节点中的值,只能更改节点本身。见原题:BM3链表中的节点每k组翻转一次。方案一:递归用递归的方法处理每k个节点。具体处理方法如下:先用tail记录每次翻转的尾部,也就是前K+1个节点,从头节点开始,遍历链表,找到第k+1个节点,如果当前数ofnodes不够k,不倒置直接返回;然后从链表表头开始遍历,翻转节点并记录反转后的表头pre和表尾节点head;然后从tail开始递归处理后面的链表节点,head指向递归处理后的链表;returnnewtableheader是反向的new链表的头节点。代码publicclassBm003{/***递归**@paramheadListNodeclass*@paramkintinteger*@returnListNodeclass*/publicstaticListNodereverseKGroup(ListNodehead,intk){//找到每个翻转的TailListNodetail=头;//遍历k次到尾部for(inti=0;i