ধরুন আমাদের কাছে একটি অ-ঋণাত্মক পূর্ণসংখ্যা রয়েছে যা অ-খালি হিসাবে উপস্থাপিত সংখ্যাগুলির এককভাবে লিঙ্কযুক্ত তালিকা, এখন আমাদের পূর্ণসংখ্যার সাথে এক যোগ করতে হবে। আমরা অনুমান করতে পারি যে পূর্ণসংখ্যাতে 0 নম্বরটি ছাড়া কোনো অগ্রণী শূন্য নেই। লিঙ্ক করা তালিকায় সবচেয়ে তাৎপর্যপূর্ণ সংখ্যাটি তালিকার শীর্ষে রয়েছে।
সুতরাং, ইনপুট যদি [1,2,3] এর মত হয়, তাহলে আউটপুট হবে [1,2,4]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি মাথা শূন্য হয়, তাহলে −
-
রিটার্ন হেড
-
-
curr =মাথা
-
req =NULL
-
যখন curr অ-শূন্য হয়, −
করুন-
যদি curr এর val 9 এর সমান না হয়, তাহলে −
-
req :=curr
-
-
curr :=curr এর পরবর্তী
-
-
যদি req অ-শূন্য হয়, তাহলে −
-
ডামি =মান 1
সহ নতুন নোড -
ডামির পরের :=মাথা
-
যখন হেড অ-শূন্য হয়, −
করুন-
মাথার মান :=0
-
মাথা :=মাথার পাশে
-
-
ফেরত ডামি
-
-
অন্যথায়
-
অনুরোধের মান 1 দ্বারা বৃদ্ধি করুন
-
req :=req এর পরবর্তী
-
যখন req অ-শূন্য, −
করুন-
অনুরোধের মান :=0
-
req :=req এর পরবর্তী
-
-
রিটার্ন হেড
-
উদাহরণ
আরও ভালোভাবে বোঝার জন্য আসুন আমরা নিম্নলিখিত বাস্তবায়ন দেখি।
#include <bits/stdc++.h> using namespace std; class ListNode{ public: int val; ListNode *next; ListNode(int data){ val = data; next = NULL; } }; ListNode *make_list(vector<int< v){ ListNode *head = new ListNode(v[0]); for(int i = 1; i<v.size(); i++){ ListNode *ptr = head; while(ptr->next != NULL){ ptr = ptr->next; } ptr->next = new ListNode(v[i]); } return head; } void print_list(ListNode *head){ ListNode *ptr = head; cout << "["; while(ptr){ cout << ptr->val << ", "; ptr = ptr->next; } cout << "]" << endl; } class Solution { public: ListNode* plusOne(ListNode* head) { if (!head) return head; ListNode* curr = head; ListNode* req = NULL; while (curr) { if (curr->val != 9) { req = curr; } curr = curr->next; } if (!req) { ListNode* dummy = new ListNode(1); dummy->next = head; while (head) { head->val = 0; head = head->next; } return dummy; } else { req->val++; req = req->next; while (req) { req->val = 0; req = req->next; } return head; } } }; main(){ Solution ob; vector<int< v = {1,4,5}; ListNode *head = make_list(v); print_list(ob.plusOne(head)); }
ইনপুট
{1,4,5}
আউটপুট
[1, 4, 6, ]