අවම සාමාන්‍යය සමඟ දී ඇති දිගෙහි උප රේඛාව සොයා ගන්න  


දුෂ්කරතා මට්ටම පහසු
නිතර අසනු ලැබේ ඇක්සෙන්චර් ඇසොලයිට් ඇමේසන් ෆැක්ට්සෙට් ෆෝකයිට් Paytm Zoho
අරා

ගැටළු ප්රකාශය  

“ලබා දී ඇති දිග ප්‍රමාණය අවම සාමාන්‍යය සමඟ සොයා ගන්න” ගැටලුවේදී අපි ලබා දී ඇත්තේ a අරාව සහ ආදාන නිඛිල X. අවම වශයෙන් / අවම සාමාන්‍යයක් සහිත දිග X හි අනුකාරකය සොයා ගැනීමට වැඩසටහනක් ලියන්න. අවම සාමාන්‍යයක් ඇති සබ්ආරියේ ආරම්භක සහ අවසන් දර්ශක මුද්‍රණය කරයි.

ආදාන ආකෘතිය  

නිඛිල අගයක් අඩංගු පළමු පේළිය n.

අවකාශය වෙන් කළ පූර්ණ සංඛ්‍යා n අඩංගු දෙවන පේළිය.

X හි පූර්ණ අගය සහිත තෙවන පේළිය.

නිමැවුම් ආකෘතිය  

අවකාශය වෙන් කර ඇති පූර්ණ සංඛ්‍යා අගයන් දෙකක් අඩංගු පළමු හා එකම පේළිය. පළමු නිඛිලය ආරම්භය නියෝජනය කරන අතර දෙවන නිඛිලය අවම සාමාන්‍යයක් ඇති උප අරා හි අවසන් දර්ශක නියෝජනය කරයි.

අවහිරතා  

  • 1 <= එන් <= 10 ^ 5
  • 1 <= a [i] <= 10 ^ 9
  • 1 <= X <= එන්

උදාහරණයක්  

5
3 5 1 7 6
2
1 2

පැහැදිලි කිරීම: උපසිරැසිය දර්ශකය 1 සහ 2 අතර වේ. 5 සහ 1 එකතුව අවම බව අපට පැහැදිලිව දැකගත හැකිය.

අවම සාමාන්‍යය සමඟ දී ඇති දිගෙහි අනුකාරකය සොයා ගැනීමට ඇල්ගොරිතම  

මෙම ක්‍රමයේදී අපි X ප්‍රමාණයේ ස්ලයිඩින් කවුළුව පිළිබඳ අදහස භාවිතා කරමු.

1. අවම සාමාන්‍යය සහිත උපසිරැසි ආරම්භක දර්ශකය වන දර්ශකය = 0 ආරම්භ කරන්න

මෙයද බලන්න
අංක දෙකක් අතර අවම දුර සොයා ගන්න

2. පළමු X මූලද්‍රව්‍යවල එකතුව සොයාගෙන එය විචල්‍ය ලෙස ගබඩා කරන්න

3. ඉහත එකතුව විචල්‍යයට අවම_සම් ආරම්භ කරන්න

4. (X + 1) වන දර්ශකයේ සිට අරාව අවසානය දක්වා ගමන් කරන්න

  • Ar [i] සෑම මූලද්‍රව්‍යයක් සඳහාම sum = sum + arr [i] -arr [iX] ගණනය කරන්න
  • <අවම_සම එකතුව නම්, දර්ශකය = (i-X + 1) සහ අවම_සම් = එකතුව කරන්න.

5. අවම සාමාන්‍යයක් සහිතව උපසිරැසි ආරම්භය හා අවසානය ලෙස දර්ශකය සහ + X -1 දර්ශකය මුද්‍රණය කරන්න.

ක්රියාත්මක කිරීම  

අවම සාමාන්‍යය සමඟ දී ඇති දිගෙහි අනුකාරකය සොයා ගැනීමේ C ++ වැඩසටහන

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

int main() 
{ 
    int n;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
  int k;
  cin>>k;
  if(n>=k)
  {
      int ans = 0; 
    	int sum = 0; 
    	for(int i=0;i<k;i++) 
    	{
    		sum+=a[i];
    	}
    	int min_sum=sum; 
    	for (int i=k;i<n;i++) 
    	{ 
    		sum+=a[i]-a[i-k]; 
    		if(sum<min_sum) 
    		{ 
    			min_sum = sum; 
    			ans = (i-k+1); 
    		} 
    	} 
    	cout<<ans<<" "<<ans+k-1<<endl;
  }
  else
  {
     cout<<-1<<endl;
  }
  return 0; 
} 

අවම සාමාන්‍යය සමඟ දී ඇති දිගෙහි උපසිරැසිය සොයා ගැනීමට ජාවා වැඩසටහන

import java.util.Scanner;
class sum
{
    public static void main(String[] args)
    {
        Scanner sr = new Scanner(System.in);
        int n=sr.nextInt();
        int a[]= new int[n];
        for(int i=0;i<n;i++)
        {
            a[i]=sr.nextInt();
        }
        int k = sr.nextInt();
        if(n>=k)
        {
            int ans = 0; 
            int sum = 0; 
            for(int i=0;i<k;i++) 
            {
                    sum+=a[i];
            }
            int min_sum=sum; 
            for (int i=k;i<n;i++) 
            { 
                    sum+=a[i]-a[i-k]; 
                    if(sum<min_sum) 
                    { 
                            min_sum = sum; 
                            ans = (i-k+1); 
                    } 
            } 
            System.out.println(ans +" "+(ans+k-1));
        }
        else
        {
            System.out.println(-1);
        } 
    }
}
10
1 4 3 6 23 76 43 1 2 89
4
0 3

අවම සාමාන්‍යය සමඟ දී ඇති දිගෙහි උපසිරැසිය සොයා ගැනීම සඳහා සංකීර්ණ විශ්ලේෂණය  

කාල සංකීර්ණත්වය

සාමාන්ය (n) එහිදී n යනු ලබා දී ඇති අරාවේ ප්‍රමාණයයි ඒ[]. මෙහිදී අපි භාවිතා කරන්නේ රේඛීය කාලයක් ගතවන ස්ලයිඩින් කවුළුවේ සංකල්පයයි.

අභ්‍යවකාශ සංකීර්ණතාව

ඕ (1) මොකද අපි මෙතන කිසිම සහායක ඉඩක් පාවිච්චි කරන්නේ නැහැ.