Dado un arreglo arr[] que consta de N enteros y un entero K , la tarea es encontrar el elemento del arreglo más cercano a K . Si existen varios valores más cercanos, imprima el más pequeño.
Ejemplos:
Entrada: arr[]={4, 2, 8, 11, 7}, K = 6
Salida: 7
Explicación:
La diferencia absoluta entre 4 y 6 es |4 – 6| = 2
La diferencia absoluta entre 2 y 6 es |2 – 6| = 4
La diferencia absoluta entre 8 y 6 es |8– 6| = 2
La diferencia absoluta entre 11 y 6 es |11 – 6| = 5
La diferencia absoluta entre 7 y 6 es |7 – 6| = 1
Aquí, la diferencia absoluta entre K(=6) y 7 es mínima. Por lo tanto, el valor más cercano de K(=6) es 7Entrada: arr[]={100, 200, 400}, K = 300
Salida: 200
Enfoque: la idea es atravesar la array dada e imprimir un elemento de la array que proporcione la diferencia absoluta mínima con el entero K dado . Siga los pasos a continuación para resolver el problema:
- Inicialice una variable, digamos res , para almacenar el elemento de la array con el valor más cercano a K .
- Recorra la array y compare el valor absoluto de abs(K – res) y el valor absoluto de abs(K – arr[i]) .
- Si el valor de abs(K – res) excede abs(K – arr[i]) , actualice res a arr[i] .
- Finalmente, imprima res .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to implement // the above approach #include <bits/stdc++.h> using namespace std; // Function to get // the closest value int clostVal(int arr[], int N, int K) { // Stores the closest // value to K int res = arr[0]; // Traverse the array for (int i = 1; i < N; i++) { // If absolute difference // of K and res exceeds // absolute difference of K // and current element if (abs(K - res) > abs(K - arr[i])) { res = arr[i]; } } // Return the closest // array element return res; } // Driver Code int main() { int arr[] = { 100, 200, 400 }; int K = 300; int N = sizeof(arr) / sizeof(arr[0]); cout << clostVal(arr, N, K); }
Java
// Java program to implement // the above approach import java.io.*; class GFG{ // Function to get // the closest value static int clostVal(int arr[], int N, int K) { // Stores the closest // value to K int res = arr[0]; // Traverse the array for(int i = 1; i < N; i++) { // If absolute difference // of K and res exceeds // absolute difference of K // and current element if (Math.abs(K - res) > Math.abs(K - arr[i])) { res = arr[i]; } } // Return the closest // array element return res; } // Driver Code public static void main (String[] args) { int arr[] = { 100, 200, 400 }; int K = 300; int N = arr.length; System.out.print(clostVal(arr, N, K)); } } // This code is contributed by code_hunt
Python3
# Python3 program to implement # the above approach # Function to get # the closest value def clostVal(arr, N, K): # Stores the closest # value to K res = arr[0] # Traverse the array for i in range(1, N, 1): # If absolute difference # of K and res exceeds # absolute difference of K # and current element if (abs(K - res) > abs(K - arr[i])): res = arr[i] # Return the closest # array element return res # Driver Code arr = [ 100, 200, 400 ] K = 300 N = len(arr) print(clostVal(arr, N, K)) # This code is contributed by susmitakundugoaldanga
C#
// C# program to implement // the above approach using System; class GFG{ // Function to get // the closest value static int clostVal(int[] arr, int N, int K) { // Stores the closest // value to K int res = arr[0]; // Traverse the array for(int i = 1; i < N; i++) { // If absolute difference // of K and res exceeds // absolute difference of K // and current element if (Math.Abs(K - res) > Math.Abs(K - arr[i])) { res = arr[i]; } } // Return the closest // array element return res; } // Driver Code public static void Main () { int[] arr = { 100, 200, 400 }; int K = 300; int N = arr.Length; Console.WriteLine(clostVal(arr, N, K)); } } // This code is contributed by sanjoy_62
Javascript
<script> // Javascript program to implement // the above approach // Function to get // the closest value function clostVal(arr, N, K) { // Stores the closest // value to K let res = arr[0]; // Traverse the array for(let i = 1; i < N; i++) { // If absolute difference // of K and res exceeds // absolute difference of K // and current element if (Math.abs(K - res) > Math.abs(K - arr[i])) { res = arr[i]; } } // Return the closest // array element return res; } // Driver Code let arr = [ 100, 200, 400 ]; let K = 300; let N = arr.length; document.write(clostVal(arr, N, K)); </script>
200
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por dhanajitkapali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA