เราได้รับอาร์เรย์ของจำนวนเต็มขนาด N ตัวแปร L และ R กำหนดช่วงระหว่าง 1 ถึง N เป้าหมายคือการหาจำนวนองค์ประกอบที่เล็กที่สุดซึ่งอยู่ในช่วง L และ R นั้น L>=1 และ R<=N.
-
เราจะทำสิ่งนี้โดยสำรวจองค์ประกอบที่อยู่ในช่วง L และ R แล้วหาจุดที่เล็กที่สุด
-
อีกครั้ง สำรวจองค์ประกอบของช่วง L และ R และนับจำนวนที่เพิ่มขึ้นหากองค์ประกอบใดมีค่าเท่ากับค่าที่น้อยที่สุดที่คำนวณในขั้นตอนที่ 1
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล − arr[]={ 1,2,3,0,3,2,0,1 }, N=8, L=2, R=5
ผลผลิต − จำนวนที่น้อยที่สุดในช่วง − 1
คำอธิบาย −
องค์ประกอบในช่วง L(1) ถึง R(5) คือ arr[1] ถึง arr[4] { 2,3,0,3 } ค่าที่น้อยที่สุดคือ 0 ค่าของ 0 คือ 1
ป้อนข้อมูล − arr[]={ 1,2,3,0,3,2,0,1 }, N=8, L=3, R=8
ผลผลิต − จำนวนที่น้อยที่สุดในช่วง − 2
คำอธิบาย −
องค์ประกอบในช่วง L(3) ถึง R(8) คือ arr[2] ถึง arr[7] { 3,0,3,2,0,1 } ค่าที่น้อยที่สุดคือ 0 ค่าของ 0 คือ 2
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้อาร์เรย์จำนวนเต็ม arr[] ที่เริ่มต้นด้วยตัวเลขสุ่ม
-
จำนวนเต็ม L และ R แทนช่วงภายใน arr[] Count เก็บจำนวนที่น้อยที่สุดในช่วง L และ R
-
ฟังก์ชัน countSmallest(int arr[],int n,int l, int r) รับอาร์เรย์, ความยาว, L และ R เป็นอินพุตและคืนค่าจำนวนที่น้อยที่สุดในช่วง
-
เริ่มต้นที่เล็กที่สุด=arr[l] องค์ประกอบซ้ายสุดและนับเริ่มต้นที่น้อยที่สุดเป็น 0
-
ตอนนี้ถ้า l<0 และ r>=n ให้คืนค่า 0, ระบุช่วงที่ไม่ถูกต้อง
-
เริ่มสำรวจอาร์เรย์จากดัชนี l-1 ถึง r-1 อัปเดตที่เล็กที่สุด if arr[i]
-
อีกครั้ง สำรวจอาร์เรย์จาก l-1 ถึง r-1 ถ้า arr[i]==เล็กที่สุด ให้นับการเพิ่มขึ้น
-
ผลตอบแทนนับตามผลลัพธ์ที่ต้องการ
-
ภายใน main แสดงผลเป็น Count
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; // Function to find if number is prime int countSmallest(int arr[],int n,int l, int r){ int smallest=arr[l]; int count=0; if(l<0 && r>=n) return 0; for(int i=l-1;i<r;i++){ if(arr[i]<=smallest){ smallest=arr[i]; } } for(int i=l-1;i<r;i++){ if(arr[i]==smallest){ ++count; } } return count; } int main(){ int arr[] = { 3,2,1,1,2,3 }; int n = 6; int L,R; int count=0; L=1,R=5; count=countSmallest(arr,n,L,R); cout<<endl<<"Count of number of smallest in given range:"<<count; L=3,R=4; count=countSmallest(arr,n,L,R); cout<<endl<<"Count of number of smallest in given range:"<<count; return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of number of smallest in given range:2 Count of number of smallest in given range:2