ধরুন আমাদের কাছে একটি অ-ঋণাত্মক পূর্ণসংখ্যা রয়েছে যা অ-খালি হিসাবে উপস্থাপিত সংখ্যাগুলির এককভাবে লিঙ্কযুক্ত তালিকা, এখন আমাদের পূর্ণসংখ্যার সাথে এক যোগ করতে হবে। আমরা অনুমান করতে পারি যে পূর্ণসংখ্যাতে 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, ]