Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में k आकार के समूहों द्वारा लिंक की गई सूची को उलटने का कार्यक्रम

मान लीजिए कि हमारे पास एक एकल लिंक की गई सूची है, और दूसरा मान k है, तो हमें नोड्स के प्रत्येक k सन्निहित समूह को उलटना होगा।

इसलिए, यदि इनपुट सूची =[1,2,3,4,5,6,7,8,9,10], k =3 जैसा है, तो आउटपुट [3, 2, 1, 6, 5 होगा। , 4, 9, 8, 7, 10, ]

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • tmp :=0 मान वाला एक नया नोड
  • tmp के आगे:=नोड
  • पिछला:=शून्य, वक्र:=शून्य
  • एलपी:=अस्थायी, एलसी:=वर्तमान
  • सीएनटी:=के
  • जबकि curr शून्य नहीं है, करें
    • पिछला :=शून्य
    • जबकि cnt> 0 और curr शून्य नहीं है, करें
      • निम्नलिखित :=वर्तमान के आगे
      • करी के आगे :=पिछला
      • पिछला :=curr, curr :=निम्नलिखित
      • सीएनटी:=सीएनटी - 1
    • एलपी के आगे:=पिछला, एलसी के बाद:=कर्व
    • lp :=lc, lc:=curr
    • सीएनटी:=के
  • tmp के आगे वापसी

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

class ListNode:
   def __init__(self, data, next = None):
      self.val = data
      self.next = next
def make_list(elements):
   head = ListNode(elements[0])
   for element in elements[1:]:
      ptr = head
      while ptr.next:
         ptr = ptr.next
      ptr.next = ListNode(element)
   return head
def print_list(head):
   ptr = head print('[', end = "")
   while ptr:
      print(ptr.val, end = ", ")
      ptr = ptr.next
      print(']')
class Solution:
   def solve(self, node, k):
      tmp = ListNode(0)
      tmp.next = node
      prev, curr = None, node
      lp, lc = tmp, curr
      cnt = k
      while curr:
         prev = None
         while cnt > 0 and curr:
            following = curr.next
            curr.next = prev
            prev, curr = curr, following
            cnt -= 1
         lp.next, lc.next = prev, curr
         lp, lc = lc, curr
         cnt = k
      return tmp.next
ob = Solution()
head = make_list([1,2,3,4,5,6,7,8,9,10])
print_list(ob.solve(head, 3))

इनपुट

[1,2,3,4,5,6,7,8,9,10], 3

आउटपुट

[3, 2, 1, 6, 5, 4, 9, 8, 7, 10, ]

  1. पायथन में रिवर्स लिंक्ड लिस्ट

    मान लीजिए कि हमारे पास एक लिंक की गई सूची है, हमें इसे उलटना होगा। तो अगर सूची 1 → 3 → 5 → 7 की तरह है, तो नई उलटी सूची 7 → 5 → 3 → 1 होगी इसे हल करने के लिए, हम इस दृष्टिकोण का पालन करेंगे - हल करने के लिए पुनरावर्ती तरीके से सूची उलटने के लिए एक प्रक्रिया को परिभाषित करें (सिर, पीछे) यदि सिर मौज

  1. एक वाक्य में प्रत्येक शब्द को उलटने के लिए पायथन प्रोग्राम?

    यहां हम फ़ंक्शन में निर्मित पायथन का उपयोग करते हैं। सबसे पहले हम वाक्य को शब्द की सूची में विभाजित करते हैं। फिर प्रत्येक शब्द को उलट दें और एक नई सूची बनाएं, यहां हम पायथन लिस्ट कॉम्प्रिहेंशन तकनीक का उपयोग करते हैं और आखिरी बार शब्दों की नई सूची में शामिल होकर एक नया वाक्य बनाते हैं। उदाहरण Inpu

  1. पायथन प्रोग्राम दिए गए आकार के समूहों में एक सरणी को उलटने के लिए?

    =1 तो हम सरणी के सभी तत्वों को उलट देते हैं। एल्गोरिदम Revarray(A,n,p) /* A is an integer Array, n is the size of an array and every sub-array of size p starting from the beginning of the array and reverse it.*/ Step 1: i is the loop control variable which is initialized by 0. Step 2: using while l