সর্বনিম্ন এবং সর্বোচ্চ বেতন লেটকোড সমাধান ব্যতীত গড় বেতন


কাঠিন্য মাত্রা সহজ
প্রায়শই জিজ্ঞাসা করা হয় NetSuite
লেটকোড

সমস্যা বিবৃতি

সমস্যা " গড় সর্বনিম্ন এবং সর্বাধিক বেতন ব্যতীত বেতন ”আমাদের বেতনের অ্যারে দেওয়া হয়। যেখানে অ্যারের প্রতিটি উপাদান বিভিন্ন কর্মচারীর বেতনের প্রতিনিধিত্ব করে। অ্যারের প্রতিটি মানই অনন্য।

আমাদের কাজটি সর্বনিম্ন এবং সর্বাধিক বেতন বাদ দিয়ে কর্মচারীর গড় বেতন গণনা করা।

উদাহরণ

Salary= [8000,9000,2000,3000,6000,1000]
4750.0

ব্যাখ্যা:

সর্বনিম্ন এবং সর্বোচ্চ বেতন লেটকোড সমাধান ব্যতীত গড় বেতন

প্রদত্ত বেতনের অ্যারেতে 9000 সর্বাধিক বেতন এবং 1000 সর্বনিম্ন বেতন হয়। যেহেতু আমাদের বাদ দিয়ে গড় বেতন খুঁজে বের করতে হবে সর্বনিম্ন এবং সর্বাধিক বেতন তাই আমরা মোট যোগফল এই মান যুক্ত করব না। মোট সমষ্টি 19000 সুতরাং গড় 19000/4 যা 4750।

অভিগমন

এটি গণিতের একটি প্রাথমিক সমস্যা। আমাদের কাজটি সর্বনিম্ন এবং সর্বাধিক বেতনের সন্ধান করা এবং তারপরে বাকী বেতনের গড় খুঁজে পাওয়া। আমরা এই পদক্ষেপগুলি অনুসরণ করব:

  1. সর্বনিম্ন বেতন INT_MAX দিয়ে শুরু করুন, সর্বাধিক বেতন INT_MIN এর সাথে। বেতনের পরিমাণ সঞ্চয় করতে আমরা একটি পরিবর্তনশীল ব্যবহার করব তাই 0 দিয়ে এটি আরম্ভ করুন।
  2. অ্যারেটি অতিক্রম করুন এবং প্রতিটি বেতন যোগে যোগ করুন। এদিকে, সর্বনিম্ন বেতন এবং সর্বাধিক বেতনের মানও আপডেট করুন।
  3. এন এর মান যদি তিনটির চেয়ে কম হয় তবে গড় বেতন শূন্য হবে অন্যথায় গড় বেতন হবে (মোট বেতন-সর্বনিম্ন বেতন-সর্বাধিক বেতন) / (এন -২)।
  4. আমরা ০.০ দিয়ে গুণ করব (এন -২) কারণ গড় বেতন দ্বিগুণ হতে পারে।

সর্বনিম্ন এবং সর্বাধিক বেতন বেতনের কোডটি বাদ দিয়ে গড় বেতনের কোড

সি ++ কোড

#include <bits/stdc++.h> 
using namespace std; 
       double average(vector<int>& salary) {
        int n=salary.size();
        int mn=INT_MAX,mx=INT_MIN,sum=0;
        for(int i=0;i<n;i++)
        {
            sum=sum+salary[i];
            mn=min(mn,salary[i]);
            mx=max(mx,salary[i]);
        }
        double ans=(sum-mn-mx)/((n-2)*1.0);
        if(n>2)
            return ans;
        else 
            return 0;
    }
int main() 
{ 
 vector<int> arr = {8000,9000,2000,3000,6000,1000}; 
 cout<<average(arr)<<endl; 
 return 0;
}
4750.0

জাভা কোড

import java.util.Arrays; 
public class Tutorialcup {
        public static double average(int[] salary) {
        int n=salary.length;
        int mn=Integer.MAX_VALUE,mx=Integer.MIN_VALUE,sum=0;
        for(int i=0;i<n;i++)
        {
            sum=sum+salary[i];
            mn=Math.min(mn,salary[i]);
            mx=Math.max(mx,salary[i]);
        }
        double ans=(sum-mn-mx)/((n-2)*1.0);
        if(n>2)
            return ans;
        else 
            return 0;
    }
  public static void main(String[] args) {
    int [] arr = {8000,9000,2000,3000,6000,1000}; 
    double ans=  average(arr);
    System.out.println(ans);
  }
}
4750.0

ন্যূনতম এবং সর্বাধিক বেতন বেতনের কোডটি বাদ দিয়ে গড় বেতনের জটিলতা বিশ্লেষণ

সময়ের জটিলতা

উপরের কোডটির সময় জটিলতা উপর) কারণ আমরা একবারে বেতন অ্যারে অতিক্রম করছি। এখানে n বেতন অ্যারের দৈর্ঘ্য।

স্থান জটিলতা

উপরের কোডটির স্পেস জটিলতা ও (1) কারণ আমরা উত্তর সংরক্ষণের জন্য কেবল একটি পরিবর্তনশীল ব্যবহার করছি।

তথ্যসূত্র