Davė masyvą arr [] iš n atskiri sveikieji skaičiai ir a taikinys Vertina užduotis yra patikrinti, ar masyve yra pora elementų, kurių produktas yra lygus taikiniui.
Prime programa java
Pavyzdžiai:
Įvestis: arr [] = [1 5 7 -1 5] Target = 35
Išvestis: Tiesa
Paaiškinimas: Kaip 5* 7 = 35 Atsakymas yra teisingas.Įvestis: arr [] = [-10 20 9 -40] Target = 30
Išvestis: melaginga
Paaiškinimas: Nėra poros su 30 produktu
Turinio lentelė
- [Naivus požiūris] Sukuriant visas įmanomas poras - o (n^2) laikas ir o (1) erdvė
- [Geresnis požiūris] Naudojant dviejų rodyklės techniką - O (N log (N)) Laikas ir O (1) erdvė
- [Tikimas
[Naivus požiūris] sukuriant visas įmanomas poras - o (n 2 ) Laikas ir O (1) erdvė
C++Pats pagrindinis požiūris yra sugeneruoti visas įmanomas poras ir patikrinti, ar egzistuoja kokia nors pora, kurios produktas yra lygus nurodytai tikslinei vertei, tada grąžinimas Tiesa . Jei tokios poros nėra melaginga .
jie yra dainininkai
#include using namespace std; // Function to check if any pair exists whose product // equals the target bool isProduct(vector<int> &arr long long target) { int n = arr.size(); for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (1LL * arr[i] * arr[j] == target) { return true; } } } return false; } int main() { vector<int> arr = {1 5 7 -1 5}; long long target = 35; cout << isProduct(arr target) << endl; return 0; }
C #include #include // Function to check if any pair exists whose product // equals the target bool isProduct(int arr[] int n long long target) { for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (1LL * arr[i] * arr[j] == target) { return true; } } } return false; } int main() { int arr[] = {1 5 7 -1 5}; long long target = 35; int n = sizeof(arr) / sizeof(arr[0]); printf('%dn' isProduct(arr n target)); return 0; }
Java class GfG { // Function to check if any pair exists whose product // equals the target static boolean isProduct(int[] arr long target) { int n = arr.length; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if ((long) arr[i] * arr[j] == target) { return true; } } } return false; } public static void main(String[] args) { int[] arr = {1 5 7 -1 5}; long target = 35; System.out.println(isProduct(arr target)); } }
Python # Function to check if any pair exists whose product # equals the target def is_product(arr target): n = len(arr) for i in range(n - 1): for j in range(i + 1 n): if arr[i] * arr[j] == target: return True return False arr = [1 5 7 -1 5] target = 35 print(is_product(arr target))
C# using System; class GfG { // Function to check if any pair exists whose product // equals the target static bool IsProduct(int[] arr long target) { int n = arr.Length; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if ((long)arr[i] * arr[j] == target) { return true; } } } return false; } static void Main() { int[] arr = { 1 5 7 -1 5 }; long target = 35; Console.WriteLine(IsProduct(arr target)); } }
JavaScript // Function to check if any pair exists whose product // equals the target function isProduct(arr target) { let n = arr.length; for (let i = 0; i < n - 1; i++) { for (let j = i + 1; j < n; j++) { if (arr[i] * arr[j] === target) { return true; } } } return false; } let arr = [1 5 7 -1 5]; let target = 35; console.log(isProduct(arr target));
Išvestis
1
Laiko sudėtingumas: O (n²) dviem įdėtoms kilpoms naudoti
Pagalbinė erdvė: O (1)
mašinraščio rinkinys
[Geresnis požiūris] Naudojant dviejų rodyklės techniką - O (N log (N)) Laikas ir O (1) erdvė
C++Šiai problemai taip pat galime naudoti dviejų rodiklių techniką, tačiau ji taikoma tik rūšiuotiems duomenims. Taigi pirmiausia rūšiuokite masyvą ir iš pradžių laikykite du rodykles vieną rodyklę ( kairėje ) ir dar vienas pabaigoje ( Teisingai ) iš masyvo. Tada patikrinkite elementų produktą prie šių dviejų rodyklių:
- Jei produktas prilygsta taikinys Mes radome porą.
- Jei produktas yra mažesnis už taikinys perkelti kairėje rodyklė į Teisingai Norėdami padidinti produktą.
- Jei produktas yra didesnis už taikinys perkelti Teisingai rodyklė į kairėje sumažinti produktą.
#include using namespace std; // Function to check if any pair exists whose product equals the target. bool isProduct(vector<int> &arr long long target) { // Sort the array sort(arr.begin() arr.end()); int left = 0 right = arr.size() - 1; while (left < right) { // Calculate the current product long long currProd = 1LL*arr[left]*arr[right]; // If the product matches the target return true. if (currProd == target) return true; // Move the pointers based on comparison with target. if (currProd > target) right--; else left++; } return false; } int main() { vector<int> arr = {1 5 7 -1 5}; long long target = 35; cout << isProduct(arr target) << endl; return 0; }
C #include #include #include // Function to compare two integers (used in qsort) int compare(const void *a const void *b) { return (*(int *)a - *(int *)b); } // Function to check if any pair exists whose product // equals the target. bool isProduct(int arr[] int n long long target) { // Sort the array qsort(arr n sizeof(int) compare); int left = 0 right = n - 1; while (left < right) { // Calculate the current product long long currProd = (long long)arr[left] * arr[right]; // If the product matches the target return true. if (currProd == target) return true; // Move the pointers based on comparison with target. if (currProd > target) right--; else left++; } return false; } int main() { int arr[] = {1 5 7 -1 5}; long long target = 35; int n = sizeof(arr) / sizeof(arr[0]); printf('%dn' isProduct(arr n target)); return 0; }
Java import java.util.Arrays; class GfG { // Function to check if any pair exists whose product equals the target. static boolean isProduct(int[] arr long target) { // Sort the array Arrays.sort(arr); int left = 0 right = arr.length - 1; while (left < right) { // Calculate the current product long currProd = (long) arr[left] * arr[right]; // If the product matches the target return true. if (currProd == target) return true; // Move the pointers based on comparison with target. if (currProd > target) right--; else left++; } return false; } public static void main(String[] args) { int[] arr = {1 5 7 -1 5}; long target = 35; System.out.println(isProduct(arr target)); } }
Python # Function to check if any pair exists whose product equals the target. def isProduct(arr target): # Sort the array arr.sort() left right = 0 len(arr) - 1 while left < right: # Calculate the current product currProd = arr[left] * arr[right] # If the product matches the target return True. if currProd == target: return True # Move the pointers based on comparison with target. if currProd > target: right -= 1 else: left += 1 return False if __name__ == '__main__': arr = [1 5 7 -1 5] target = 35 print(isProduct(arr target))
C# using System; using System.Linq; class GfG { // Function to check if any pair exists whose product // equals the target. static bool isProduct(int[] arr long target) { // Sort the array Array.Sort(arr); int left = 0 right = arr.Length - 1; while (left < right) { // Calculate the current product long currProd = (long) arr[left] * arr[right]; // If the product matches the target return true. if (currProd == target) return true; // Move the pointers based on comparison with target. if (currProd > target) right--; else left++; } return false; } static void Main(string[] args) { int[] arr = { 1 5 7 -1 5 }; long target = 35; Console.WriteLine(isProduct(arr target)); } }
JavaScript // Function to check if any pair exists whose product // equals the target. function isProduct(arr target) { // Sort the array arr.sort((a b) => a - b); let left = 0 right = arr.length - 1; while (left < right) { // Calculate the current product let currProd = arr[left] * arr[right]; // If the product matches the target return true. if (currProd === target) return true; // Move the pointers based on comparison with target. if (currProd > target) right--; else left++; } return false; } let arr = [1 5 7 -1 5]; let target = 35; console.log(isProduct(arr target));
Išvestis
1
Laiko sudėtingumas: O (n log (n)) masyvo rūšiavimui
Pagalbinė erdvė: O (1)
[Tikimas
C++Mes galime naudoti a maišos rinkinys Norėdami efektyviai ieškoti. Kai kartojame masyvą, patikriname, ar kiekvienas skaičius yra tikslo veiksnys. Jei taip yra, mes matome, ar jo atitinkamas veiksnys jau yra rinkinyje. Jei taip, mes grįšime Tiesa ; Priešingu atveju pridedame dabartinį numerį prie rinkinio ir tęsiame.
#include #include #include using namespace std; // Function to check if any pair exists whose product // equals the target. bool isProduct(vector<int> &arr long long target) { // Use an unordered set to store previously seen numbers. unordered_set<int> st; for (int num : arr) { // If target is 0 and current number is 0 return true. if (target == 0 && num == 0) return true; // Check if current number can be a factor of the target. if (target % num == 0) { int secondNum = target / num; // If the secondNum has been seen before return true. if (st.find(secondNum) != st.end()) { return true; } // Mark the current number as seen. st.insert(num); } } return false; } int main() { vector<int> arr = {1 5 7 -1 5}; long long target = 35; cout << isProduct(arr target) << endl; return 0; }
Java import java.util.HashSet; class GfG { // Function to check if any pair exists whose product // equals the target. static boolean isProduct(int[] arr long target) { // Use a hash set to store previously seen numbers. HashSet<Integer> set = new HashSet<>(); for (int num : arr) { // If target is 0 and current number is 0 // return true. if (target == 0 && num == 0) return true; // Check if current number can be a factor of // the target. if (target % num == 0) { int secondNum = (int)(target / num); // If the secondNum has been seen before // return true. if (set.contains(secondNum)) return true; // Mark the current number as seen. set.add(num); } } return false; } public static void main(String[] args) { int[] arr = { 1 5 7 -1 5 }; long target = 35; System.out.println(isProduct(arr target)); } }
Python # Function to check if any pair exists whose product equals the target. def isProduct(arr target): # Use a set to store previously seen numbers. st = set() for num in arr: # If target is 0 and current number is 0 return True. if target == 0 and num == 0: return True # Check if current number can be a factor of the target. if target % num == 0: secondNum = target // num # If the secondNum has been seen before return True. if secondNum in st: return True # Mark the current number as seen. st.add(num) return False if __name__ == '__main__': arr = [1 5 7 -1 5] target = 35 print(isProduct(arr target))
C# using System; using System.Collections.Generic; class GfG { // Function to check if any pair exists whose product // equals the target. static bool isProduct(int[] arr long target) { // Use a hash set to store previously seen numbers. HashSet<int> set = new HashSet<int>(); foreach(int num in arr) { // If target is 0 and current number is 0 // return true. if (target == 0 && num == 0) return true; // Check if current number can be a factor of // the target. if (target % num == 0) { int secondNum = (int)(target / num); // If the secondNum has been seen before // return true. if (set.Contains(secondNum)) return true; // Mark the current number as seen. set.Add(num); } } return false; } static void Main(string[] args) { int[] arr = { 1 5 7 -1 5 }; long target = 35; Console.WriteLine(isProduct(arr target)); } }
JavaScript // Function to check if any pair exists whose product equals // the target. function isProduct(arr target) { // Use a set to store previously seen numbers. let seen = new Set(); for (let num of arr) { // If target is 0 and current number is 0 return // true. if (target === 0 && num === 0) return true; // Check if current number can be a factor of the // target. if (target % num === 0) { let secondNum = target / num; // If the secondNum has been seen before return // true. if (seen.has(secondNum)) return true; // Mark the current number as seen. seen.add(num); } } return false; } let arr = [ 1 5 7 -1 5 ]; let target = 35; console.log(isProduct(arr target));
Išvestis
1
Laiko sudėtingumas: O (n) vienkartinei iteracijai
Pagalbinė erdvė: O (n) elementams laikyti maišos rinkinyje