ও (এন) সময় এবং ও (1) স্পেসে সদৃশ সন্ধান করা


121

ইনপুট: 0 টি থেকে এন -1 পর্যন্ত উপাদান রয়েছে এমন এন উপাদানগুলির একটি অ্যারে দেওয়া হয়েছে, এর মধ্যে যে কোনও সংখ্যক বার সংখ্যার প্রদর্শিত হয়।

লক্ষ্য: এই পুনরাবৃত্তি সংখ্যাগুলি ও (এন) এ খুঁজে পেতে এবং কেবল ধ্রুবক মেমরি স্পেস ব্যবহার করে।

উদাহরণস্বরূপ, এন 7 হতে হবে এবং অ্যারে হতে হবে, 1, 2, 3, 1, 3, 0, 6 the, উত্তর 1 এবং 3 হওয়া উচিত আমি এখানে অনুরূপ প্রশ্নগুলি পরীক্ষা করেছি তবে উত্তরগুলি কিছু ডেটা স্ট্রাকচারের মতো ব্যবহার করেছে HashSetইত্যাদি etc.

এর জন্য কোনও দক্ষ অ্যালগরিদম?

উত্তর:


164

এটিই আমি নিয়ে এসেছি, যার জন্য অতিরিক্ত সাইন বিটের প্রয়োজন নেই:

for i := 0 to n - 1
    while A[A[i]] != A[i] 
        swap(A[i], A[A[i]])
    end while
end for

for i := 0 to n - 1
    if A[i] != i then 
        print A[i]
    end if
end for

প্রথম লুপটি অ্যারেটিকে অনুমতি দেয় যাতে যদি উপাদানটি xঅন্তত একবার উপস্থিত হয় তবে those প্রবেশদ্বারগুলির মধ্যে একটিতে অবস্থান থাকবে A[x]

মনে রাখবেন এটি প্রথম ব্লাশে ও (এন) না দেখায় তবে এটি হ'ল - যদিও এটিতে নেস্টেড লুপ রয়েছে, এটি এখনও O(N)সময়ে চলমান runs যদি একজন একটি swap শুধুমাত্র ঘটে iযেমন যে A[i] != i, এবং প্রতিটি বিনিময় সেট অন্তত একটি উপাদান যেমন যে A[i] == i, যেখানে তার আগে সত্য ছিল না। এর অর্থ হ'ল মোট অদলবদলের সংখ্যা (এবং এইভাবে whileলুপের দেহের মোট মৃত্যুদন্ড কার্যকর হওয়া সংখ্যা ) সর্বাধিক N-1

দ্বিতীয় লুপের মানগুলি প্রিন্ট করে xযার জন্য এটি A[x]সমান হয় না x- যেহেতু প্রথম লুপটি গ্যারান্টি দেয় যে যদি xঅ্যারেতে অন্তত একবার উপস্থিত হয় তবে সেই উদাহরণগুলির মধ্যে একটি উপস্থিত থাকবে A[x], এর অর্থ এটি সেই মানগুলিকে মুদ্রণ করে xযা উপস্থিত নেই অ্যারে।

(আইডিয়ন লিঙ্ক যাতে আপনি এটির সাথে খেলতে পারেন)


10
@ আরসমুসেন: হ্যাঁ। যদিও আমি প্রথমে একটি ভাঙা সংস্করণ নিয়ে এসেছি। সমস্যার a[a[i]]প্রতিবন্ধকতাগুলি সমাধানটির জন্য কিছুটা ক্লু দেয় - প্রতিটি বৈধ অ্যারে মানটি এটিতে একটি বৈধ অ্যারে সূচক ইঙ্গিতও এবং swap()অপারেশন- এ ও (1) স্থান সীমাবদ্ধতার ইঙ্গিতগুলি কী হিসাবে গুরুত্বপূর্ণ।
ক্যাফে

2
@ ক্যাফ: দয়া করে অ্যারে দিয়ে আপনার কোডটি চালান {3,4,5,3,4} এটি ব্যর্থ হয়।
নির্মলজিও

6
@ নির্মলজিও: এটি কোনও বৈধ ইনপুট নয়, কারণ 5পরিসরে নেই 0..N-1( Nএই ক্ষেত্রে রয়েছে 5)।
ক্যাফে

2
@ কেএফ আউটপুটটি {1,2,3,1,3,0,0,0,0,6 for এর জন্য 3 1 0 0 0 বা যে কোনও ক্ষেত্রে পুনরাবৃত্তি ২ এর চেয়ে বেশি হয় তা কি ঠিক o / p?
টার্মিনাল

3
এটা চমৎকার! আমি এই প্রশ্নে বেশ কয়েকটি বৈকল্পিক দেখেছি, সাধারণত আরও সীমাবদ্ধ এবং এটি আমি দেখেছি এটি সমাধান করার সর্বাধিক সাধারণ উপায়। আমি কেবল উল্লেখ করব যে পরিবর্তন printকরার জন্য বিবৃতি print iএকটি সমাধান এই পালাক্রমে করার stackoverflow.com/questions/5249985/... এবং (অভিমানী "ব্যাগ" একটি সংশোধনযোগ্য অ্যারে) এর QK stackoverflow.com/questions/3492302/...
j_random_hacker

35

ক্যাফের উজ্জ্বল উত্তর প্রতিটি নম্বর মুদ্রণ করে যা অ্যারে কে -1 বারে কে বার প্রদর্শিত হয়। এটি কার্যকর আচরণ, তবে প্রশ্নটি যুক্তিযুক্তভাবে প্রতিটি ডুপ্লিকেট কেবল একবার মুদ্রিত হওয়ার জন্য আহ্বান জানিয়েছে এবং তিনি লিনিয়ার সময় / ধ্রুবক স্পেস সীমা ছাড়াই এটি করার সম্ভাবনা সম্পর্কে জোর দেন। নিম্নলিখিত সিউডোকোডের সাহায্যে তার দ্বিতীয় লুপটি প্রতিস্থাপন করে এটি করা যেতে পারে:

for (i = 0; i < N; ++i) {
    if (A[i] != i && A[A[i]] == A[i]) {
        print A[i];
        A[A[i]] = i;
    }
}

এটি সেই সম্পত্তিটি শোষণ করে যে প্রথম লুপটি চলার পরে যদি কোনও মান mএকাধিকবার প্রদর্শিত হয় , তবে সেই উপস্থিতিগুলির মধ্যে একটির অবশ্যই সঠিক অবস্থানে থাকার নিশ্চয়তা রয়েছে A[m]। আমরা যদি সাবধান হন তবে কোনও নকল ছাপানো হয়েছে কি না সে সম্পর্কে তথ্য সংরক্ষণের জন্য আমরা সেই "হোম" অবস্থানটি ব্যবহার করতে পারি।

ক্যাফের সংস্করণে, আমরা অ্যারের মধ্য দিয়ে যাচ্ছিলাম, তা A[i] != iবোঝা গেল A[i]এটি একটি সদৃশ। আমার সংস্করণে, আমি কিছুটা পৃথক আক্রমণকারী উপর নির্ভর করি: এর দ্বারা A[i] != i && A[A[i]] == A[i]বোঝা যায় এটি A[i]এমন একটি নকল যা আমরা আগে দেখিনি । (যদি আপনি "যা আমরা আগে দেখিনি" অংশটি ফেলে রাখেন তবে বাকীটিকে ক্যাফের আক্রমণকারী সত্যের দ্বারা বোঝানো যেতে পারে, এবং সমস্ত নকলের কোনও ঘরের কোনও কপি রয়েছে বলে গ্যারান্টি দেওয়া হয়)) এই সম্পত্তিটি এখানে রয়েছে শুরু (ক্যাফের 1 ম লুপ শেষ হওয়ার পরে) এবং আমি নীচে দেখাব যে এটি প্রতিটি পদক্ষেপের পরে রক্ষণাবেক্ষণ করা হচ্ছে।

যখন আমরা অ্যারের মধ্য দিয়ে যাব, A[i] != iপরীক্ষার অংশে সাফল্য বোঝায় যে A[i] এমন একটি নকল হতে পারে যা আগে দেখা যায় নি। যদি আমরা এটি আগে না দেখে থাকি, তবে আমরা A[i]নিজের বাড়ির অবস্থানটি নিজের দিকে নির্দেশ করার প্রত্যাশা করি - যা ifশর্তের দ্বিতীয়ার্ধে পরীক্ষা করা হয়েছে । যদি তা কেস হয় তবে আমরা এটি মুদ্রণ করি এবং বাড়ির অবস্থানটিকে এই প্রথম পাওয়া নকলের দিকে ফিরে নির্দেশ দিয়ে একটি 2-পদক্ষেপ "চক্র" তৈরি করি।

এই অপারেশনটি আমাদের আক্রমণকারীকে পরিবর্তন করে না তা দেখতে, ধরুন সন্তোষজনক m = A[i]কোনও নির্দিষ্ট অবস্থানের জন্য । এটা সুস্পষ্ট যে আমরা যে পরিবর্তনটি করেছি তা অন্য গৃহ-পরিস্থিতিকে নকল হিসাবে আউটপুট হিসাবে আটকানো থেকে তাদের অবস্থার ২ য় অর্ধেক ব্যর্থ হয়ে কাজ করবে, তবে বাড়ির লোকেশনে পৌঁছালে কী তা কার্যকর হবে ,? হ্যাঁ এটি হবে, কারণ এখন, যদিও এই নতুনটিতে আমরা দেখতে পেলাম যে শর্তের প্রথম অর্ধেক , সত্য, দ্বিতীয়ার্ধটি এটি পরীক্ষা করে যে অবস্থানটি কোনও বাড়ির অবস্থান কিনা এবং তা খুঁজে পাওয়া যায় কিনা তা পরীক্ষা করে। এ অবস্থায় আমরা আর কিনা জানি বা ডুপ্লিকেট মান ছিল, কিন্তু আমরা জানি যে উপায় হয়,iA[i] != i && A[A[i]] == A[i]A[A[i]] = imifimiifA[i] != imA[m]এটি ইতিমধ্যে প্রতিবেদন করা হয়েছে , কারণ এই 2-চক্রটি ক্যাফের 1 ম লুপের ফলাফলটিতে উপস্থিত না হওয়ার গ্যারান্টিযুক্ত। (দ্রষ্টব্য যে যদি m != A[m]ঠিক তখনই একটি হয় mএবং A[m]একাধিকবার ঘটে এবং অন্যটি ঘটে না))


1
হ্যাঁ, এটি যেটির সাথে আমি এসেছি তার সাথে এটি খুব মিল। এটি একটি আকর্ষণীয় প্রথম লুপটি বিভিন্ন প্রিন্টিং লুপের সাহায্যে কীভাবে বিভিন্ন সমস্যার জন্য কার্যকর for
ক্যাফে

22

এখানে সিউডোকোড

for i <- 0 to n-1:
   if (A[abs(A[i])]) >= 0 :
       (A[abs(A[i])]) = -(A[abs(A[i])])
   else
      print i
end for

সি ++ তে নমুনা কোড


3
খুব চালাক - সূচিকৃত এন্ট্রিটির সাইন বিটে উত্তরটি এনকোডিং!
হলটাভোল্ট

3
@ শ্যাশং: তা হতে পারে না। সমস্যার স্পেসিফিকেশন পরীক্ষা করে দেখুন। " 0 টি এন -1 পর্যন্ত উপাদান রয়েছে এমন এন উপাদানগুলির একটি অ্যারে দেওয়া হয়েছে "
প্রসূন সৌরভ

5
এটি সদৃশ 0 গুলি সনাক্ত করতে পারে না এবং একাধিকবার সদৃশ হওয়ার অনুরূপ সংখ্যাটি চিহ্নিত করবে।
নুল সেট

1
@Null সেট: আপনি শুধু প্রতিস্থাপন করতে পারেন -সঙ্গে ~শূন্য সমস্যার জন্য।
ব্যবহারকারী541686

26
সমস্যাটির দিকে চালানো এই উত্তর হতে পারে তবে প্রযুক্তিগতভাবে এটি O(n)লুকানো জায়গা ব্যবহার করে - nসাইন বিট। অ্যারেরটি যদি এমনভাবে সংজ্ঞায়িত করা হয় যে প্রতিটি উপাদান কেবলমাত্র 0এবং এর মধ্যে মানগুলি ধরে রাখতে পারে n-1, তবে তা অবশ্যই কাজ করে না।
ক্যাফে

2

অপেক্ষাকৃত ছোট এন এর জন্য আমরা ডিভ / মোড অপারেশন ব্যবহার করতে পারি

n.times do |i|
  e = a[i]%n
  a[e] += n
end

n.times do |i| 
  count = a[i]/n
  puts i if count > 1
end

সি / সি ++ নয় তবে যাই হোক

http://ideone.com/GRZPI


+1 চমৎকার সমাধান। যোগ বন্ধ এন দুই বার পরে একটি এন্ট্রি বৃহত্তর মিটমাট করা হবে এন
অপশির

1

সত্যই সুন্দর নয় তবে কমপক্ষে ও (এন) এবং ও (1) বৈশিষ্ট্যগুলি দেখতে সহজ। মূলত আমরা অ্যারেটি স্ক্যান করি এবং প্রতিটি সংখ্যার জন্য আমরা দেখতে পাই যে সংশ্লিষ্ট অবস্থানটি ইতিমধ্যে-একবার-দেখা (এন) বা ইতিমধ্যে দেখা-বহুবার-বার (এন + 1) পতাকাঙ্কিত হয়েছে কিনা। যদি এটি ইতিমধ্যে-একবারে পতাকাঙ্কিত হয় তবে আমরা এটিকে মুদ্রণ করব এবং একাধিকবার এটি ইতিমধ্যে দেখেছি flag যদি এটি পতাকাঙ্কিত না হয় তবে আমরা এটি ইতিমধ্যে-একবারে পতাকাঙ্কিত করেছি এবং আমরা সংশ্লিষ্ট সূচকের মূল মানটিকে বর্তমান অবস্থানে নিয়ে যাই (পতাকাঙ্কণ একটি ধ্বংসাত্মক ক্রিয়াকলাপ)।

for (i=0; i<a.length; i++) {
  value = a[i];
  if (value >= N)
    continue;
  if (a[value] == N)  {
    a[value] = N+1; 
    print value;
  } else if (a[value] < N) {
    if (value > i)
      a[i--] = a[value];
    a[value] = N;
  }
}

বা, আরও ভাল (দ্রুত, দ্বিগুণ লুপ সত্ত্বেও):

for (i=0; i<a.length; i++) {
  value = a[i];
  while (value < N) {
    if (a[value] == N)  {
      a[value] = N+1; 
      print value;
      value = N;
    } else if (a[value] < N) {
      newvalue = value > i ? a[value] : N;
      a[value] = N;
      value = newvalue;
    }
  }
}

+1, এটি দুর্দান্তভাবে কাজ করে তবে ঠিক কী কারণে if (value > i) a[i--] = a[value];কাজ করে তা নির্ধারণ করার জন্য এটি কিছুটা চিন্তাভাবনা করেছিল : যদি value <= iতা হয় তবে আমরা ইতিমধ্যে মানটির উপর প্রক্রিয়া করেছি a[value]এবং এটি নিরাপদে ওভাররাইট করতে পারি। এছাড়াও আমি বলব না ও (এন) প্রকৃতি সুস্পষ্ট! এটির বানানটি: মূল লুপটি Nবহুবার চালিত হয়, তবে a[i--] = a[value];লাইনটি বহুবার চালায়। এই লাইনটি কেবল তখনই চলতে পারে a[value] < Nএবং প্রতিটি সময় এটি চালিত হলে অবিলম্বে একটি অ্যারে মান Nসেট করা থাকে যা ইতিমধ্যে সেট করা হয়নি N, তাই এটি বেশিরভাগ Nসময়ে চলতে পারে মোট 2Nলুপের পুনরাবৃত্তির জন্য মোট for
j_random_hacker

1

সি এর একটি সমাধান হল:

#include <stdio.h>

int finddup(int *arr,int len)
{
    int i;
    printf("Duplicate Elements ::");
    for(i = 0; i < len; i++)
    {
        if(arr[abs(arr[i])] > 0)
          arr[abs(arr[i])] = -arr[abs(arr[i])];
        else if(arr[abs(arr[i])] == 0)
        {
             arr[abs(arr[i])] = - len ;
        }
        else
          printf("%d ", abs(arr[i]));
    }

}
int main()
{   
    int arr1[]={0,1,1,2,2,0,2,0,0,5};
    finddup(arr1,sizeof(arr1)/sizeof(arr1[0]));
    return 0;
}

এটি ও (এন) সময় এবং ও (1) স্থান জটিলতা।


1
এর স্পেস জটিলতা হ'ল ও (এন), কারণ এটি এন অতিরিক্ত সাইন বিট ব্যবহার করে। অ্যালগরিদম এই অনুমানের অধীনে কাজ করা উচিত যে অ্যারে উপাদান টাইপটি কেবল 0 থেকে N-1 পর্যন্ত সংখ্যা ধরে রাখতে পারে।
ক্যাফে

হ্যাঁ এটি সত্য তবে তারা 0 থেকে এন -1 সংখ্যার জন্যই অ্যালগো চেয়েছিল বলে এটিকে সঠিকভাবে জিজ্ঞাসা করেছিল এবং আমি আপনার সমাধানটি ও (এন) এর ওপরে যাচ্ছি তাও পরীক্ষা করেছি তাই আমি এই ভেবেছিলাম
আনশুল গার্গ

1

আসুন ধরে নেওয়া যাক আমরা এই অ্যারেটিকে একটি দ্বি-দিকনির্দেশক গ্রাফ ডেটা কাঠামো হিসাবে উপস্থাপন করি - প্রতিটি সংখ্যা একটি শীর্ষবিন্দু এবং এটির সূচকটি গ্রাফের একটি প্রান্ত গঠন করে অন্য একটি শীর্ষবিন্দুতে নির্দেশ করে।

আরও সরলতার জন্য আমাদের 0 থেকে এন -1 এবং 0..n-1 থেকে সংখ্যার পরিসর সূচক রয়েছে। যেমন

   0  1  2  3  4 
 a[3, 2, 4, 3, 1]

0 (3) -> 3 (3) একটি চক্র।

উত্তর: সূচকগুলিতে নির্ভর করে অ্যারেটি কেবল অতিক্রম করুন। যদি একটি [x] = a [y] হয় তবে এটি একটি চক্র এবং সুতরাং সদৃশ। পরবর্তী সূচীতে চলে যান এবং অ্যারের শেষ না হওয়া পর্যন্ত বার বার চালিয়ে যান। জটিলতা: ও (এন) সময় এবং ও (1) স্থান।


0

উপরে ক্যাফের পদ্ধতিটি দেখানোর জন্য একটি অল্প অজগর কোড:

a = [3, 1, 1, 0, 4, 4, 6] 
n = len(a)
for i in range(0,n):
    if a[ a[i] ] != a[i]: a[a[i]], a[i] = a[i], a[a[i]]
for i in range(0,n):
    if a[i] != i: print( a[i] )

নোট করুন যে একক iমানের জন্য অদলবদল একাধিকবার হতে পারে - whileআমার উত্তরে নোট করুন ।
ক্যাফে

0

অ্যালগরিদম নিম্নলিখিত সি ফাংশনে সহজেই দেখা যায়। মূল অ্যারের পুনরুদ্ধার করা হচ্ছে, যদিও প্রয়োজন নেই, প্রতিটি এন্ট্রি মডিউল গ্রহণ সম্ভব হবে এন

void print_repeats(unsigned a[], unsigned n)
{
    unsigned i, _2n = 2*n;
    for(i = 0; i < n; ++i) if(a[a[i] % n] < _2n) a[a[i] % n] += n;
    for(i = 0; i < n; ++i) if(a[i] >= _2n) printf("%u ", i);
    putchar('\n');
}

পরীক্ষার জন্য আইডিয়ন লিঙ্ক।


আমি এটি প্রযুক্তিগতভাবে "প্রতারণা" বলে ভয় পাচ্ছি, যেহেতু 2 * এন পর্যন্ত সংখ্যার সাথে কাজ করার জন্য মূল সংখ্যাগুলি সংরক্ষণ করার জন্য অ্যারে এন্ট্রিতে অতিরিক্ত 1 বিট স্টোরেজ প্রয়োজন। প্রকৃতপক্ষে আপনার প্রবেশের প্রতি লগ 2 (3) = 1.58 অতিরিক্ত বিটগুলির আরও কাছাকাছি দরকার, কারণ আপনি সংখ্যা 3 * এন -1 পর্যন্ত সংরক্ষণ করছেন।
j_random_hacker

0
static void findrepeat()
{
    int[] arr = new int[7] {0,2,1,0,0,4,4};

    for (int i = 0; i < arr.Length; i++)
    {
        if (i != arr[i])
        {
            if (arr[i] == arr[arr[i]])
            {
                Console.WriteLine(arr[i] + "!!!");
            }

            int t = arr[i];
            arr[i] = arr[arr[i]];
            arr[t] = t;
        }
    }

    for (int j = 0; j < arr.Length; j++)
    {
        Console.Write(arr[j] + " ");
    }
    Console.WriteLine();

    for (int j = 0; j < arr.Length; j++)
    {
        if (j == arr[j])
        {
            arr[j] = 1;
        }
        else
        {
            arr[arr[j]]++;
            arr[j] = 0;
        }
    }

    for (int j = 0; j < arr.Length; j++)
    {
        Console.Write(arr[j] + " ");
    }
    Console.WriteLine();
}

0

0 (এন) সময়ের জটিলতা এবং ধ্রুবক অতিরিক্ত স্থানের অনুলিপি সন্ধানের জন্য আমি দ্রুত একটি নমুনা প্লেগ্রাউন্ড অ্যাপ তৈরি করেছি। অনুগ্রহ করে ডুপ্লিকেট সন্ধান করা ইউআরএল পরীক্ষা করুন

আইএমপি উপরের সলিউশনটি কাজ করে যখন একটি অ্যারেতে 0 থেকে এন -1 পর্যন্ত উপাদান থাকে তবে এই সংখ্যার যে কোনও সময় কোনও সংখ্যক বার উপস্থিত হয়।


0
private static void printRepeating(int arr[], int size) {
        int i = 0;
        int j = 1;
        while (i < (size - 1)) {
            if (arr[i] == arr[j]) {
                System.out.println(arr[i] + " repeated at index " + j);
                j = size;
            }
            j++;
            if (j >= (size - 1)) {
                i++;
                j = i + 1;
            }
        }

    }

উপরের সমাধানটি ও (এন) এবং ধ্রুবক স্থানের সময়ের জটিলতায় একই অর্জন করবে।
ব্যবহারকারী 12704811

3
এই কোড স্নিপেটের জন্য আপনাকে ধন্যবাদ, যা কিছু সীমিত স্বল্পমেয়াদী সহায়তা সরবরাহ করতে পারে। একটি সঠিক ব্যাখ্যা কেন এটি সমস্যার একটি ভাল সমাধান, তা দেখিয়ে তার দীর্ঘমেয়াদী মানকে ব্যাপকভাবে উন্নত করবে এবং ভবিষ্যতে পাঠকদের আরও অন্যান্য অনুরূপ প্রশ্নের সাথে আরও দরকারী করে তুলবে। আপনার অনুমানগুলি সহ কিছু ব্যাখ্যা যুক্ত করতে দয়া করে আপনার উত্তরটি সম্পাদনা করুন।
টবি স্পিড

3
বিটিডাব্লু, সময় জটিলতা এখানে O (n²) বলে মনে হচ্ছে - অভ্যন্তরীণ লুপটি লুকিয়ে রাখলে তা পরিবর্তন হয় না।
টবি স্পিড

-2

অ্যারে খুব বড় না হলে এই সমাধানটি সহজ, এটি টিকিংয়ের জন্য একই আকারের আর একটি অ্যারে তৈরি করে।

1 আপনার ইনপুট অ্যারে হিসাবে একই আকারের একটি বিটম্যাপ / অ্যারে তৈরি করুন

 int check_list[SIZE_OF_INPUT];
 for(n elements in checklist)
     check_list[i]=0;    //initialize to zero

2 আপনার ইনপুট অ্যারে স্ক্যান করুন এবং উপরের অ্যারেতে এর সংখ্যা বাড়িয়ে তুলুন

for(i=0;i<n;i++) // every element in input array
{
  check_list[a[i]]++; //increment its count  
}  

3 এখন চেক_লিস্ট অ্যারেটি স্ক্যান করুন এবং নকলটি একবারে বা বহুবার নকল হয়ে গেলে মুদ্রণ করুন

for(i=0;i<n;i++)
{

    if(check_list[i]>1) // appeared as duplicate
    {
        printf(" ",i);  
    }
}

অবশ্যই এটি উপরে প্রদত্ত সমাধানের দ্বারা গ্রাস করা স্থানের দ্বিগুণ গ্রহণ করে, তবে সময়ের দক্ষতা হ'ল (2 এন) যা মূলত ও (এন)।


এটি O(1)স্থান নয় ।
ড্যানিয়েল কামিল কোজার

উফ ...! আমার খারাপ যে খেয়াল করেনি।
গভীরতার চিন্তা

@ নিখিল কেমন আছেন ও (1) ?. ইনপুটটির আকার বাড়ার সাথে সাথে আমার অ্যারে চেক_লিস্টটি রৈখিকভাবে বেড়ে যায়, সুতরাং এটি ও (1) কেমন হয় যদি আপনি ওকে (1) বলার জন্য যে হিউরিস্টিক্স ব্যবহার করছেন তা কী আছে।
গভীরতা

প্রদত্ত ইনপুটটির জন্য আপনার ধ্রুবক স্থানের দরকার হয়, না ও (1)? আমি ভাল ভুল হতে পারে :)
নিখিল

ইনপুট বাড়ার সাথে সাথে আমার দ্রবণটির আরও স্থান প্রয়োজন। নির্দিষ্ট ইনপুটটির জন্য পরিমাপ করা হয়নি এমন একটি অ্যালগরিদমের দক্ষতা (স্থান / সময়)। আমাদের সবচেয়ে ভাল কেস, সবচেয়ে খারাপ কেস এবং গড় কেসের কারণ।
গভীরতা চিন্তা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.