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

लिंक की गई सूची वस्तुओं की जाँच करने के लिए कार्यक्रम पायथन में पैलिंड्रोम बना रहा है या नहीं

मान लीजिए हमारे पास एक लिंक्ड सूची है। हमें यह जांचना होगा कि सूची के तत्व पैलिंड्रोम बना रहे हैं या नहीं। इसलिए यदि सूची तत्व [5,4,3,4,5] जैसा है, तो यह एक पैलिंड्रोम है, लेकिन [5,4,3,2,1] जैसी सूची पैलिंड्रोम नहीं है।

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

  • तेज़:=सिर, धीमा:=सिर, रेव:=कोई नहीं और झंडा:=1
  • यदि सिर खाली है, तो सही लौटें
  • जबकि फास्ट एंड नेक्स्ट ऑफ फास्ट उपलब्ध है
    • यदि अगला उपवास उपलब्ध है, तो ध्वज सेट करें:=0 और लूप तोड़ें
    • उपवास :=अगले उपवास के बाद
    • अस्थायी:=धीमी, धीमी:=धीमी के आगे
    • अगले तापमान:=रेव, और रेव:=अस्थायी
  • तेज़:=धीमे के आगे, और धीमे के बाद:=रेव
  • यदि ध्वज सेट है, तो धीमा:=धीमे के आगे
  • जबकि तेज़ और धीमे कोई नहीं हैं,
    • यदि उपवास का मान धीमे के मान के समान नहीं है, तो असत्य लौटाएं
    • तेज़:=तेज़ के आगे, और धीमे:=धीमे के आगे
  • सही लौटें

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

उदाहरण

class ListNode:
   def __init__(self, data, next = None):
      self.data = 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
class Solution(object):
   def isPalindrome(self, head):
      fast,slow = head,head
      rev = None
      flag = 1
      if not head:
         return True
      while fast and fast.next:
         if not fast.next.next:
            flag = 0
            break
      fast = fast.next.next
      temp = slow
      slow = slow.next
      temp.next = rev
      rev = temp
      fast = slow.next
      slow.next = rev
      if flag:
         slow = slow.next
         while fast and slow:
            if fast.data != slow.data:
               return False
      fast = fast.next
      slow = slow.next
      return True
      head = make_list([5,4,3,4,5])
ob1 = Solution()
print(ob1.isPalindrome(head))

इनपुट

[5,4,3,4,5]

आउटपुट

True

  1. बिंदुओं की जाँच करने का कार्यक्रम पायथन में उत्तल पतवार बना रहा है या नहीं

    मान लीजिए कि हमारे पास बहुभुज के बाहरी बिंदु दक्षिणावर्त क्रम में हैं। हमें यह जांचना होगा कि ये बिंदु उत्तल पतवार बना रहे हैं या नहीं। इस आरेख से यह स्पष्ट है कि प्रत्येक तीन क्रमागत बिंदुओं के लिए आंतरिक कोण 180° से अधिक नहीं होता है। इसलिए यदि सभी कोण 180° से अधिक नहीं हैं तो बहुभुज उत्तल पतवा

  1. पायथन में लिंक की गई सूची से m नोड्स के बाद n नोड्स को हटाने का कार्यक्रम

    मान लीजिए कि हमें एक लिंक्ड सूची दी गई है जिसमें हेड के रूप में प्रारंभ नोड है, और दो पूर्णांक संख्याएं एम और एन हैं। हमें सूची को पार करना होगा और कुछ नोड्स को हटाना होगा जैसे कि पहले m नोड्स को सूची में रखा जाता है और अगले n नोड्स को पहले m नोड्स को हटा दिए जाने के बाद। हम इसे तब तक करते हैं जब तक

  1. यह जांचने के लिए प्रोग्राम कि ब्लॉक की दी गई सूची x =y लाइन पर सममित है या नहीं, पायथन में

    मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है। और यह वर्गाकार ब्लॉकों की ऊंचाई का प्रतिनिधित्व कर रहा है, हमें यह जांचना होगा कि आकृति y =x रेखा पर सममित है या नहीं। इसलिए, यदि इनपुट nums =[7, 5, 3, 2, 2, 1, 1] जैसा है, तो आउटपुट सही होगा इसे हल करने के लिए, हम इन चरणों का पालन