በድርድር ውስጥ በአንድ ተመሳሳይ ንጥረ ነገሮች መካከል የሚከሰቱ ከፍተኛ ርቀቶች  


የችግር ደረጃ መካከለኛ
ውስጥ በተደጋጋሚ ተጠየቀ አቅርቦት ፋርስት አፍቃሪዎች አራት ኪይትስ
ሰልፍ ሃሽ

አንድ ተሰጠህ እንበል ደርድር ከአንዳንድ ተደጋጋሚ ቁጥሮች ጋር ፡፡ በአንድ ድርድር ውስጥ ከሚገኙ የተለያዩ መረጃ ጠቋሚ ጋር ባሉት ሁለት ተመሳሳይ ክስተቶች መካከል ከፍተኛውን ርቀት መፈለግ አለብን።

ለምሳሌ  

ግቤት

ድርድር = [1, 2, 3, 6, 2, 7]

ውጤት

3

ማብራሪያ:

ምክንያቱም በድርድር [1] እና በድርድር [4] ላይ ያሉ ንጥረ ነገሮች ‘2’ ተመሳሳይ ንጥረ ነገሮች አሏቸው እና ከፍተኛው 3 ርቀት አላቸው።

ግቤት

ድርድር = [3, 4, 6, 7, 4, 8, 9, 3]

ውጤት

7

ማብራሪያ:

ምክንያቱም የንጥል ድርድር [0] እና ድርድር [7] '3' የሆኑ ተመሳሳይ ንጥረ ነገሮች ከከፍተኛው ርቀት 3 ጋር አላቸው።

ተመሳሳይ ንጥረ ነገር ባሉ ሁለት ክስተቶች መካከል ለከፍተኛው ርቀት ስልተ ቀመር  

  1. ያውጅ ሀ ካርታ.
  2. አዘጋጅ “ከፍተኛ ርቀት” 0 ነው.
  3. እኔ ከድርድሩ ርዝመት (n) ያነሰ ቢሆንም።
    1. እያንዳንዱ የድርድር አካል የመጀመሪያ ክስተት ካለው ወይም በካርታው ውስጥ ከሌለው ያረጋግጡ ፣ በመጀመሪያ ፣
      1. ከዚያ ንጥረ ነገሩን እና መረጃ ጠቋሚውን በካርታ ውስጥ ያስገቡ።
    2. ሌላ (ቀድሞውኑ ካለ)
      1. በቀዳሚው እና በዚህ መካከል (በመረጃ ጠቋሚ መካከል ያለው ርቀት) መካከል ከፍተኛውን ርቀት ይወቁ።
      2. ከፍተኛውን ርቀት ወደ ያከማቹ “ከፍተኛ ርቀት”.
  4. ተመለስ “ከፍተኛ ርቀት”.

ማስረጃ  

በውስጡ የተወሰኑ ተደጋጋሚ አባላትን የያዘ ድርድር ሰጥተናል ፡፡ የእኛ ተግባር በቁጥር ተመሳሳይ ክስተቶች አቀማመጥ መካከል ያለውን ከፍተኛ ልዩነት ማወቅ ነው ፡፡ ለዚህ ካርታ ልንጠቀም ነው ፡፡ በዚያ ካርታ ውስጥ የድርጅት አባላትን እንደ ቁልፍ እና ኢንዴክሳቸውን እንደ እሴት እናደርጋቸዋለን ፡፡ ከዚያ በተመሳሳይ ቁጥሮች በሁለቱ ማውጫዎች መካከል ያለውን ከፍተኛ ልዩነት ወይም ርቀት እናገኛለን ፣ ምንም እንኳን በተመሳሳይ አካላት መካከል ያለውን ርቀት መፈለግ አለብን ፡፡

ተመልከት
የክልል ትልቁ ያልተለመደ አካፋይ በ XOR ላይ ጥያቄዎች

በካርታ ውስጥ እያንዳንዱ ቁልፍ በውስጡ እንደ ድርድር ንጥረ ነገር እና ማውጫዎቻቸው የተወሰነ ዋጋ አለው ፣ ለእያንዳንዱ ንጥረ ነገር ሁለት ኢንዴክሶች የተገኙ ከሆኑ በእነዚያ ኢንዴክሶች መካከል ያለውን ልዩነት እናገኛለን እና ከቀዳሚው መካከል ትልቁን ልዩነት እናገኛለን ፡፡ “ከፍተኛ ርቀት” እና የአሁኑ. እና ከዚያ በመላው ድርድር ላይ ከሠራን በኋላ ትልቁ ከፍተኛ ርቀት አለን ፡፡

እስቲ አንድ ምሳሌ እንመልከት-

ለምሳሌ

arr [] = {8, 1, 3, 2, 4, 1, 3, 6, 7, 3, 1};

i = 0, arr [i] = 8 => myMap = {8: 0}

i = 1, arr [i] = 1 => myMap = {8: 0, 1: 1}

i = 2, arr [i] = 3 => myMap = {8: 0, 1: 1, 3: 2}

i = 3 ፣ arr [i] = 2 => myMap = {8: 0, 1: 1, 3: 2, 2: 3}

i = 4 ፣ arr [i] = 4 => myMap = {8: 0, 1: 1, 3: 2, 2: 3, 4: 4}

i = 5, arr [i] = 1 => myMap = {8: 0, 1: 1, 3: 2, 2: 3, 4: 4}, እዚህ አሁን ባለው መረጃ ጠቋሚ እና በቀዳሚው ኢንዴክስ መካከል ያለውን ልዩነት ያገኛል '1' ፣ (5-1 = 4) ፣ 4 በ maxDistance ውስጥ ይከማቻል

i = 6, arr [i] = 3 => myMap = {8: 0, 1: 1, 3: 2, 2: 3, 4: 4} እዚህ አሁን ባለው መረጃ ጠቋሚ እና በቀደመው የ ‹ኢንዴክስ› መካከል ያለውን ልዩነት ያገኛል ፡፡ 3 ', (6-2 = 4) ፣ ግን 4 ቀድሞውኑ በ maxDistance ውስጥ ነው ፣ ስለሆነም ምንም ችግር የለውም።

i = 7 ፣ arr [i] = 6 => myMap = {8: 0, 1: 1, 3: 2, 2: 3, 4: 4, 6: 7}

i = 8 ፣ arr [i] = 7 => myMap = {8: 0, 1: 1, 3: 2, 2: 3, 4: 4, 6: 7, 7: 8}

i = 9 ፣ arr [i] = 3 => myMap = {8: 0, 1: 1, 3: 2, 2: 3, 4: 4, 6: 7, 7: 8} እዚህ ላይ በመካከላቸው ያለውን ልዩነት ያገኛል የአሁኑ መረጃ ጠቋሚ እና የቀደመው የ ‹3› ፣ (9-3 = 6) ፣ 6 በከፍተኛው ርቀት ውስጥ ይከማቻል ፡፡

i = 10 ፣ arr [i] = 3 => myMap = {8: 0, 1: 1, 3: 2, 2: 3, 4: 4, 6: 7, 7: 8} እዚህ ላይ በመካከላቸው ያለውን ልዩነት ያገኛል የአሁኑ መረጃ ጠቋሚ እና የቀደመው የ ‹1› ፣ (10-1 = 9) ፣ 9 በከፍተኛው ርቀት ውስጥ ይከማቻል ፡፡

ተመልከት
ማትሪክስ ሰያፍ ድምር Leetcode መፍትሔ

እና maxDistance ን እንደ 9 እንመልሳለን።

አፈጻጸም  

በሰልፍ ውስጥ በተመሳሳይ ተመሳሳይ ንጥረ ነገሮች መካከል ለሚከሰቱ ከፍተኛ ርቀት የ C ++ ፕሮግራም

#include<bits/stdc++.h>
using namespace std;

int getDistance(int arr[], int n)
{
    unordered_map<int, int> my_map;
    int maxDistance = 0;
    for (int i=0; i<n; i++)
    {
        if (my_map.find(arr[i]) == my_map.end())
            my_map[arr[i]] = i;
        else
            maxDistance = max(maxDistance, i - my_map[arr[i]]);
    }

    return maxDistance;
}
int main()
{
    int arr[] = {8, 1, 3, 2, 4, 1, 3, 6, 7, 3, 1};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << getDistance(arr, n);
    return 0;
}
9

በድርድር ውስጥ በአንድ ተመሳሳይ ንጥረ ነገሮች መካከል ለሚከሰቱ ከፍተኛ ርቀቶች የጃቫ ፕሮግራም

import java.io.*;
import java.util.*;

class distanceBSameNumbers
{
    static int getDistance(int[] arr, int n)
    {
        HashMap<Integer,Integer> my_map = new HashMap<>();

        int maxDistance = 0;

        for (int i = 0; i < n; i++)
        {
            if (!my_map.containsKey(arr[i]))
                my_map.put(arr[i], i);

            else
                maxDistance = Math.max(maxDistance, i - my_map.get(arr[i]));
        }

        return maxDistance;
    }
    public static void main(String args[])
    {
        int arr[] = {8,1,3,2,4,1,3,6,7,3,1};
        int n = arr.length;
        System.out.println(getDistance(arr, n));
    }
}
9

በሰልፍ ውስጥ በአንድ ተመሳሳይ ንጥረ ነገሮች መካከል ለሚከሰቱት ከፍተኛ ርቀቶች ውስብስብነት ትንተና  

የጊዜ ውስብስብነት

ሆይ (n) የት “N” በድርድሩ ውስጥ ያሉት ንጥረ ነገሮች ብዛት ነው።

የቦታ ውስብስብነት

ሆይ (n) የት “N” በድርድሩ ውስጥ ያሉት ንጥረ ነገሮች ብዛት ነው።