အနည်းဆုံး Absolute ခြားနားချက် Leetcode ဖြေရှင်းချက်


ခက်ခဲအဆင့် လွယ်ကူသော
မကြာခဏမေးတယ် ကွားနိုငျ ဘလွန်းဘာ့ဂ် သည် SAP Uber
အခင်းအကျင်း

ပြproblemနာနိမ့်ဆုံး Absolute Difference Leetcode Solution သည်ကျွန်ုပ်တို့အားထောက်ပံ့ပေးသည် မလုံလောက်ဘူး အခင်းအကျင်း သို့မဟုတ်အချို့သောကိန်းများပါဝင်သည်အားနည်းချက်ကို။ ကျွန်ုပ်တို့သည်အနိမ့်ဆုံးအကြွင်းမဲ့ခြားနားချက်နှင့်တန်းတူခြားနားချက်ရှိသည့်အားလုံးအတွက်အတွဲများကိုရှာဖွေရန်လိုအပ်သည်။ အနိမ့်ဆုံးအကြွင်းမဲ့ခြားနားချက်ဆိုသည်မှာပေးထားသော vector သို့မဟုတ်ခင်းကျင်းမှုမှဖြစ်နိုင်သမျှကိန်းများအကြားမတူညီသောဒြပ်စင်နှစ်မျိုးကိုကောက်ယူခြင်းအားဖြင့်ရရှိနိုင်သောအကြွင်းမဲ့ခြားနားချက်၏အနည်းဆုံးတန်ဖိုးဖြစ်သည်။ ဒီတော့ဖြေရှင်းချက်ထဲကိုနက်ရှိုင်းစွာမဝင်ဘဲဥပမာအနည်းငယ်ကိုအရင်ကြည့်ရအောင်။

arr = [4,2,1,3]
[[1,2],[2,3],[3,4]]

အနည်းဆုံး Absolute ခြားနားချက် Leetcode ဖြေရှင်းချက်

ရှင်းလင်းချက် - အနိမ့်ဆုံးအကြွင်းမဲ့ကွာခြားချက်နှင့်အတူထိုကဲ့သို့သောအတွဲ ၃ ခုသာရှိသောကြောင့်ဖြစ်သည်။ ကျနော်တို့ပြtheနာရဲ့အဖြေအဖြစ်သူတို့ကိုပြန်လာ။ သူတို့သုံးခုစလုံးမှာ 1 နဲ့တူညီတဲ့ခြားနားချက်ရှိတယ် 1 ရဲ့ခြားနားချက်ကအနည်းဆုံးခြားနားချက်ဖြစ်တယ်။

arr = [1,3,6,10,15]
[[1,3]]

ရှင်းလင်းချက် - အနိမ့်ဆုံးအကြွင်းမဲ့ခြားနားချက်သည် 2 နှင့်ညီပြီးကိန်းတစ်ခုတည်းဖြင့်သာရရှိနိုင်သည်။ ဒီကိန်းပြည့်စုံကိုအဖြေအဖြစ်ပြန်ပေးတယ်။

အနည်းဆုံး Absolute ကွာခြားချက် Leetcode ဖြေရှင်းနည်းအတွက်ချဉ်းကပ်

ပြproblemနာ Minimum Absolute Difference Leetcode Solution သည်၎င်းတို့အကြားခြားနားချက်ကိုအနည်းဆုံးအကြွင်းမဲ့ခြားနားချက်နှင့်ညီသောကိန်းအားလုံးအားရှာဖွေရန်ကျွန်ုပ်တို့အားတောင်းဆိုသည်။ ကျနော်တို့နိမ့်ဆုံးအကြွင်းမဲ့အာဏာခြားနားချက်ကဘာလဲဆိုတာဖော်ပြထားခဲ့သည်။ ဒီတော့ဒါကိုကြည့်မယ့်အစားပြtheနာကိုဘယ်လိုဖြေရှင်းရမလဲဆိုတာအာရုံစိုက်ကြပါစို့။ ပထမ ဦး ဆုံးအနိမ့်ဆုံးအကြွင်းမဲ့ခြားနားချက်ကိုရှာဖွေဖို့လိုတယ်။ အနိမ့်ဆုံးအကြွင်းမဲ့ကွာခြားချက်ကိုစီထားသည့်ပုံစံဖြင့်စီစဉ်ထားသည့်အခါကပ်လျက်ဒြပ်စင်များအကြားသာတွေ့ရှိနိုင်သည်။ ပြproblemနာကကျွန်တော်တို့ကို unsorted array သို့မဟုတ် vector ကိုပေးတယ်။ ပထမ ဦး စွာ array ကို sort လုပ်သည်။ ထို့နောက်အနီးအနားရှိကွဲပြားခြားနားမှုများကိုခြေရာခံ။ ပိုမိုသေးငယ်သောကွာခြားချက်ကိုတွေ့သည့်အခါအဖြေကိုအသစ်ပြောင်းပါ။

ကိန်းဂဏန်းများမှကိန်းဂဏန်းများကိုသိမ်းထားသော unordered set သို့မဟုတ် hash set ကိုလည်းကျွန်ုပ်တို့ဖန်တီးသည်။ ငါတို့ခင်းကျင်းသော array ကိုဖြတ်သန်းသွားပြီးရရှိသောအနိမ့်ဆုံးအကြွင်းခြားနားချက်နှင့်ညီမျှသည့်ကွာခြားချက်ရှိသောနံပါတ်ကိုရှာရန်ကြိုးစားသည်။ ၎င်းသည်လက်ရှိဒြပ်စင်သည်နှစ်ခုထက်ကြီးသည်။ ကျွန်ုပ်တို့၏ hash set တွင်ထိုကဲ့သို့သော element တစ်ခုကိုတွေ့ရှိပါကအဖြေကို pair ထည့်သည်။ ဒါပေမယ့်ကျွန်ုပ်တို့မလုပ်ဘူးဆိုရင်တော့ရှေ့ကိုဆက်လျှောက်သွားမှာပါ။

ကုဒ်

Minimum Absolute Difference Leetcode Solution အတွက် C ++ code

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

vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
    sort(arr.begin(), arr.end());
    int mnDiff = INT_MAX, n = arr.size();
    unordered_set<int> h;
    for(int i=0;i<n-1;i++){
        mnDiff = min(mnDiff, arr[i+1] - arr[i]);
        h.insert(arr[i]);
    }
    h.insert(arr[n-1]);

    vector<vector<int>> l;
    for(int i=0;i<n;i++){
        if(h.count(arr[i]-mnDiff)){
            l.push_back({arr[i]-mnDiff, arr[i]});
        }
    }
    return l;
}

int main(){
    vector<int> sequence = {4, 3, 1, 2};
    vector<vector<int>> output = minimumAbsDifference(sequence);
    for(auto x: output){
        cout<<x[0]<<" "<<x[1]<<endl;
    }
}
1 2
2 3
3 4

Minimum Absolute Difference Leetcode Solution အတွက် Java ကုဒ်

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

class Main
{
  public static List<List<Integer>> minimumAbsDifference(int[] arr) {
        Arrays.sort(arr);
        int mnDiff = Integer.MAX_VALUE, n = arr.length;
        HashSet<Integer> h = new HashSet<Integer>();
        for(int i=0;i<n-1;i++){
            mnDiff = Math.min(mnDiff, arr[i+1] - arr[i]);
            h.add(arr[i]);
        }
        h.add(arr[n-1]);
        
        List<List<Integer>> l = new ArrayList<List<Integer>>();
        for(int i=0;i<n;i++){
            if(h.contains(arr[i]-mnDiff)){
                l.add(new ArrayList<Integer>(Arrays.asList(arr[i]-mnDiff, arr[i])));
            }
        }
        return l;
    }
    
  public static void main (String[] args) throws java.lang.Exception{
    int[] arr = {4, 3, 1, 2};
    List<List<Integer>> output = minimumAbsDifference(arr);
    for(List<Integer> x: output){
      System.out.println(x);
    }
  }
}
[1, 2]
[2, 3]
[3, 4]

ရှုပ်ထွေးဆန်းစစ်ခြင်း

အချိန်ရှုပ်ထွေး

အို (N)၊ ကျနော်တို့ပေးထားသောခင်းကျင်းဖြတ်သန်းနှင့်အချိန်ရှုပ်ထွေးမှုကိုလျှော့ချသော hash အစုံကိုသုံးပြီးကတည်းက။

အာကာသရှုပ်ထွေးမှု

အို (N)၊ ဘာလို့လဲဆိုတော့ကျွန်တော်တို့က array ရဲ့ element တွေကို hash set ထဲမှာသိမ်းထားလို့ပဲ။ အဆိုပါအာကာသရှုပ်ထွေး linear ဖြစ်ပါတယ်။