Given the head of a linked list, rotate the list to the right by k places.
Input: head = [1,2,3,4,5], k = 2
Output: [4,5,1,2,3]
Input: head = [0,1,2], k = 4
Output: [2,0,1]
Soruda bize bir linked list ve k sayısı veriliyor.Bu k sayısı kadar linked listi kaydırmamız isteniyor.
İlk olarak linked listin uzunluğunu ve tail yani son elemanı buluruz.
Daha sonra verilen k sayısının 0 olması yada linked listen uzun olması durumlarını kontrol ederiz.
Daha sonra (lenght - k - 1) kadar giderek yeni şuan linked listin ortasında olan ama kaydırmayı tamamladığımızda linked listin son elemanı olacak olan node buluruz bunun nexti none yaparız.
Son olarakta tail nexti head yaparak işlemi bitiririz.
classSolution:defrotateRight(self,head:Optional[ListNode],k:int)->Optional[ListNode]:ifnothead:returnhead#get lenghtlenght,tail=1,headwhiletail.next:tail=tail.nextlenght+=1k=k%lenghtifk==0:returnhead# Move to the pivot and rotatecur=headforiinrange(lenght-k-1):cur=cur.nextnewHead=cur.nextcur.next=Nonetail.next=headreturnnewHead