// ç»Ļ ä½ł ä¸Ģä¸ª éĵ¾è¡¨ ï¼Į æ¯ı Ġk Ġä¸ª èĬĤçĤ¹ ä¸Ģ ç»Ħ è¿Ľè¡Į ç¿» è½¬ ï¼Į è¯· ä½ł è¿ĶåĽŀ ç¿» è½¬ åĲİçļĦ éĵ¾è¡¨ ãĢĤ Ġ Ċ // Ċ // Ġk Ġ æĺ¯ä¸Ģä¸ª æŃ£ æķ´æķ° ï¼Į å®ĥ çļĦåĢ¼ å°ı äºİ æĪĸ çŃīäºİ éĵ¾è¡¨ çļĦ éķ¿åº¦ ãĢĤ Ġ Ċ // Ċ // Ġå¦Ĥæŀľ èĬĤçĤ¹ æĢ» æķ° ä¸įæĺ¯ Ġk ĠçļĦ æķ´æķ° åĢ į ï¼Į éĤ£ä¹Ī è¯· å°Ĩ æľĢåĲİ åī © ä½Ļ çļĦ èĬĤçĤ¹ ä¿ĿæĮģ åİŁ æľī é¡ºåºı ãĢĤ Ġ Ċ // Ċ // Ġ è¿Ľ éĺ¶ ï¼ļ Ġ Ċ // Ċ // Ġ Ċ // Ġ ä½łåı¯ä»¥ è®¾è®¡ ä¸Ģä¸ª åıª ä½¿çĶ¨ å¸¸ æķ° é¢Ŀ å¤ĸ ç©ºéĹ´ çļĦ ç®Ĺæ³ķ æĿ¥ è§£åĨ³ æŃ¤ éĹ®é¢ĺ åĲĹ ï¼Ł Ġ Ċ // Ġ ä½ł ä¸įèĥ½ åıªæĺ¯ åįķ çº ¯ çļĦ æĶ¹åıĺ èĬĤçĤ¹ åĨħéĥ¨ çļĦåĢ¼ ï¼Į èĢĮ æĺ¯ éľĢè¦ģ å®ŀéĻħ è¿Ľè¡Į èĬĤçĤ¹ äº¤ æį¢ ãĢĤ Ġ Ċ // Ġ Ċ // Ċ // Ġ Ċ // Ċ // Ġ ç¤ºä¾ĭ Ġ 1 ï¼ļ Ġ Ċ // Ċ // Ġ Ċ // è¾ĵåħ¥ ï¼ļ head Ġ= Ġ[ 1 , 2 , 3 , 4 , 5 ], Ġk Ġ= Ġ 2 Ċ // è¾ĵåĩº ï¼ļ[ 2 , 1 , 4 , 3 , 5 ] Ċ // Ġ Ċ // Ċ // Ġ ç¤ºä¾ĭ Ġ 2 ï¼ļ Ġ Ċ // Ċ // Ġ Ċ // è¾ĵåħ¥ ï¼ļ head Ġ= Ġ[ 1 , 2 , 3 , 4 , 5 ], Ġk Ġ= Ġ 3 Ċ // è¾ĵåĩº ï¼ļ[ 3 , 2 , 1 , 4 , 5 ] Ċ // Ġ Ċ // Ċ // Ġ ç¤ºä¾ĭ Ġ 3 ï¼ļ Ġ Ċ // Ċ // Ġ Ċ // è¾ĵåħ¥ ï¼ļ head Ġ= Ġ[ 1 , 2 , 3 , 4 , 5 ], Ġk Ġ= Ġ 1 Ċ // è¾ĵåĩº ï¼ļ[ 1 , 2 , 3 , 4 , 5 ] Ċ // Ġ Ċ // Ċ // Ġ ç¤ºä¾ĭ Ġ 4 ï¼ļ Ġ Ċ // Ċ // Ġ Ċ // è¾ĵåħ¥ ï¼ļ head Ġ= Ġ[ 1 ], Ġk Ġ= Ġ 1 Ċ // è¾ĵåĩº ï¼ļ[ 1 ] Ċ // Ġ Ċ // Ċ // Ġ Ċ // Ġ Ċ // Ċ // ĠæıĲ ç¤º ï¼ļ Ġ Ċ // Ċ // Ġ Ċ // Ġ åĪĹè¡¨ ä¸Ń èĬĤçĤ¹ çļĦ æķ°éĩı åľ¨ èĮĥåĽ´ Ġsz Ġ åĨħ Ġ Ċ // Ġ 1 Ġ<= Ġsz Ġ<= Ġ 5 0 0 0 Ġ Ċ // Ġ 0 Ġ<= ĠNode . val Ġ<= Ġ 1 0 0 0 Ġ Ċ // Ġ 1 Ġ<= Ġk Ġ<= Ġsz Ġ Ċ // Ġ Ċ // ĠRelated ĠTop ics Ġ éĵ¾è¡¨ Ġ Ċ // ĠðŁĳį Ġ 1 1 3 2 ĠðŁĳ İ Ġ 0 ĊĊ Ċ // leetcode Ġsubmit Ġregion Ġbegin ( Pro hibit Ġmodification Ġand Ġdeletion ) Ċ /** Ċ Ġ* ĠExample : Ċ Ġ* Ġvar Ġli Ġ= ĠListNode ( 5 ) Ċ Ġ* Ġvar Ġv Ġ= Ġli .` val ` Ċ Ġ* ĠDefinition Ġfor Ġsing ly - linked Ġlist . Ċ Ġ* Ġclass ĠListNode ( var Ġ` val `: ĠInt ) Ġ{ Ċ Ġ* ĠĠĠĠ Ġvar Ġnext : ĠListNode ? Ġ= Ġnull Ċ Ġ* Ġ} Ċ Ġ*/ Ċ class ĠSolution Ġ{ ĊĠĠĠ Ġfun Ġreverse K Group ( head : ĠListNode ?, Ġk : ĠInt ): ĠListNode ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// k Ġä¸ª ä¸Ģ ç»Ħ æĿ¥ ç¿» è½¬ éĵ¾è¡¨ Ġ æĹ¶éĹ´ å¤įæĿĤ åº¦ ĠO ï¼Ī n ï¼ī ĊĠĠĠĠĠĠĠ Ġif ( head Ġ== Ġnull Ġ|| Ġk Ġ== Ġ 1 ) Ġreturn Ġhead ĊĊĠĠĠĠĠĠĠ Ġvar Ġtemp Head Ġ: ĠListNode ? Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġvar Ġres Ġ= ĠListNode (- 1 ) ĊĠĠĠĠĠĠĠ Ġres . next Ġ= Ġtemp Head ĊĊĊĊĠĠĠĠĠĠĠ Ġ// åīį ä¸Ģä¸ª èĬĤçĤ¹ ĊĠĠĠĠĠĠĠ Ġvar Ġpre Ġ: ĠListNode Ġ= Ġres ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile ( temp Head Ġ!= null ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®°å½ķ ĠK Ġæ ® µ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( index Ġ% Ġk Ġ== Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ»¡è¶³ K Ġæ ® µ Ġ ç¿» è½¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpre Ġ= Ġreverse ListNode ( pre , temp Head . next ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĩį ç½® head Ġ åĢ¼ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Head Ġ= Ġpre . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Head Ġ= Ġtemp Head . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres . next ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ç¿» è½¬ äºĨ éĵ¾è¡¨ ĊĠĠĠ Ġprivate Ġfun Ġreverse ListNode ( pre : ĠListNode , Ġnext : ĠListNode ): ĠListNode Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æĸ¹æ³ķ è¿ĶåĽŀ åĢ¼ ä¹Łå°±æĺ¯ ç¿» è½¬ åĲİ éĵ¾è¡¨ æ®µ çļĦ æľĢåĲİ ä¸Ģä¸ª node ĊĠĠĠĠĠĠĠ Ġ// èİ·åıĸ å½ĵåīį èĬĤçĤ¹ Ġ ä¹Łå°±æĺ¯ ç¿» è½¬ ä¹ĭåĲİ çļĦ æľĢåĲİ ä¸Ģä¸ª èĬĤçĤ¹ ĊĠĠĠĠĠĠĠ Ġvar Ġlast Ġ= Ġpre . next ĊĠĠĠĠĠĠĠ Ġvar Ġcur Ġ= Ġlast . next ĊĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ å½ĵåīį èĬĤçĤ¹ ä¸į çŃīäºİ æ²¡ ç¿» è½¬ ä¹ĭåīį çļĦ éĵ¾è¡¨ æ®µ æľĢåĲİ ä¸Ģä¸ª èĬĤçĤ¹ ĊĠĠĠĠĠĠĠ Ġwhile Ġ( cur Ġ!= Ġnext ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç¿» è½¬ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// last è¿ŀæİ¥ ä¸ĭ ä¸Ģæ¬¡ éľĢè¦ģ åıį è½¬ çļĦ èĬĤçĤ¹ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast . next Ġ= Ġcur . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å½ĵåīį èĬĤçĤ¹ æıĴåħ¥ åĪ° å¤´ ç»ĵçĤ¹ åİŁ æľ¬ ä½įç½® Ġ åıį è½¬ èĬĤçĤ¹ cur ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur . next Ġ= Ġpre . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®°å½ķ æĮĩéĴĪ æĮĩåĲĳ å½ĵåīį ĠæĽ´æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpre . next Ġ= Ġcur ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĽ´æĸ° Ġä¸ĭ ä¸Ģä¸ª è¦ģ ç¿» è½¬ çļĦ ç»ĵçĤ¹ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur Ġ= Ġlast . next ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlast ĊĠĠĠ Ġ} Ċ } Ċ // leetcode Ġsubmit Ġregion Ġend ( Pro hibit Ġmodification Ġand Ġdeletion ) Ċ