Las coordenadas del rectángulo con puntos dados se encuentran dentro

Dadas dos arrays X[] e Y[] con n elementos, donde (Xi, Yi) representan un punto en el sistema de coordenadas, encuentre el rectángulo más pequeño tal que todos los puntos de la entrada dada se encuentren dentro de ese rectángulo y los lados del rectángulo deben ser paralelos al eje de coordenadas. Imprime las cuatro coordenadas de un rectángulo obtenido. 
Nota: n >= 4 (tenemos al menos 4 puntos como entrada).
Ejemplos: 
 

Input : X[] = {1, 3, 0, 4},  y[] = {2, 1, 0, 2}
Output : {0, 0}, {0, 2}, {4, 2}, {4, 0}

Input : X[] = {3, 6, 1, 9, 13, 0, 4}, Y[] = {4, 2, 6, 5, 2, 3, 1}
Output : {0, 1}, {0, 6}, {13, 6}, {13, 1} 

Para encontrar el rectángulo más pequeño, puede tomar dos enfoques básicos: 
 

  1. Considere el origen del plano de coordenadas como el rectángulo más pequeño y luego, paso a paso, continúe expandiéndolo según el valor de las coordenadas de los puntos si no se encuentran dentro del rectángulo actual. Este concepto requiere un poco de lógica compleja para encontrar el rectángulo exacto más pequeño.
  2. Una lógica muy simple y eficiente detrás de esto es encontrar las coordenadas x e y más pequeñas y más grandes entre todos los puntos dados y luego las cuatro combinaciones posibles de estos valores dan como resultado los cuatro puntos del rectángulo requerido como {Xmin, Ymin}, {Xmin, Ymax}, {Xmax, Ymax}, {Xmax, Ymin}.

C++

// Program to find smallest rectangle
// to conquer all points
#include <bits/stdc++.h>
using namespace std;
 
// function to print coordinate of smallest rectangle
void printRect(int X[], int Y[], int n)
{
    // find Xmax and Xmin
    int Xmax = *max_element(X, X + n);
    int Xmin = *min_element(X, X + n);
 
    // find Ymax and Ymin
    int Ymax = *max_element(Y, Y + n);
    int Ymin = *min_element(Y, Y + n);
 
    // print all four coordinates
    cout << "{" << Xmin << ", " << Ymin << "}" << endl;
    cout << "{" << Xmin << ", " << Ymax << "}" << endl;
    cout << "{" << Xmax << ", " << Ymax << "}" << endl;
    cout << "{" << Xmax << ", " << Ymin << "}" << endl;
}
 
// driver program
int main()
{
    int X[] = { 4, 3, 6, 1, -1, 12 };
    int Y[] = { 4, 1, 10, 3, 7, -1 };
    int n = sizeof(X) / sizeof(X[0]);
     
    printRect(X, Y, n);
     
    return 0;
}

Java

// Program to find smallest rectangle
// to conquer all points
import java.util.Arrays;
import java.util.Collections;
 
class GFG {
         
    // function to print coordinate of smallest rectangle
    static void printRect(Integer X[], Integer Y[], int n)
    {
         
        // find Xmax and Xmin
        int Xmax = Collections.max(Arrays.asList(X));
        int Xmin = Collections.min(Arrays.asList(X));
     
        // find Ymax and Ymin
        int Ymax = Collections.max(Arrays.asList(Y));
        int Ymin = Collections.min(Arrays.asList(Y));
     
        // print all four coordinates
        System.out.println("{" + Xmin + ", " + Ymin + "}");
        System.out.println("{" + Xmin + ", " + Ymax + "}");
        System.out.println("{" + Xmax + ", " + Ymax + "}");
        System.out.println("{" + Xmax + ", " + Ymin + "}");
    }
     
    //Driver code
    public static void main (String[] args)
    {
         
        Integer X[] = { 4, 3, 6, 1, -1, 12 };
        Integer Y[] = { 4, 1, 10, 3, 7, -1 };
        int n = X.length;
         
        printRect(X, Y, n);
    }
}
 
// This code is contributed by Anant Agarwal.

Python 3

# Program to find smallest rectangle
# to conquer all points
 
# function to print coordinate of smallest rectangle
def printRect(X, Y, n):
 
    # find Xmax and Xmin
    Xmax = max(X)
    Xmin = min(X)
 
    # find Ymax and Ymin
    Ymax = max(Y)
    Ymin = min(Y)
 
    # print all four coordinates
    print("{",Xmin,", ",Ymin,"}",sep="" )
    print("{",Xmin,", ",Ymax,"}",sep="" )
    print("{",Xmax,", ",Ymax,"}",sep="" )
    print("{",Xmax,", ",Ymin,"}",sep="" )
 
# driver program
X = [4, 3, 6, 1, -1, 12]
Y =  [4, 1, 10, 3, 7, -1]
n = len(X)
printRect(X, Y, n)
# This code is contributed by
# Smitha Dinesh Semwal

C#

// Program to find smallest rectangle
// to conquer all points
using System.Linq;
using System;
 
public class GFG{
     
    // function to print coordinate
    // of smallest rectangle
    static void printRect(int[] X,
                        int[] Y, int n)
    {
         
        // find Xmax and Xmin
        int Xmax = X.Max();
        int Xmin = X.Min();
     
        // find Ymax and Ymin
        int Ymax = Y.Max();
        int Ymin = Y.Min();
     
        // print all four coordinates
        Console.WriteLine("{" + Xmin + ", "
                             + Ymin + "}");
                              
        Console.WriteLine("{" + Xmin + ", "
                             + Ymax + "}");
                              
        Console.WriteLine("{" + Xmax + ", "
                             + Ymax + "}");
                              
        Console.WriteLine("{" + Xmax + ", "
                             + Ymin + "}");
    }
     
    // Driver code
    static public void Main ()
    {
        int[] X = { 4, 3, 6, 1, -1, 12 };
        int[] Y = { 4, 1, 10, 3, 7, -1 };
        int n = X.Length;
         
        printRect(X, Y, n);
    }
}
 
// This code is contributed by Ajit.

PHP

<?php
// PHP Program to find smallest
// rectangle to conquer all points
 
// function to print coordinate
// of smallest rectangle
function printRect($X, $Y, $n)
{
     
    // find Xmax and Xmin
    $Xmax = max($X);
    $Xmin = min($X);
 
    // find Ymax and Ymin
    $Ymax = max($Y);
    $Ymin = min($Y);
 
    // print all four coordinates
    echo "{" , $Xmin , ", " , $Ymin , "}","\n";
    echo "{" , $Xmin , ", " , $Ymax , "}" ,"\n";
    echo "{" , $Xmax , ", " , $Ymax , "}","\n";
    echo "{" , $Xmax , ", " , $Ymin , "}" ;
}
 
    // Driver Code
    $X = array(4, 3, 6, 1, -1, 12);
    $Y = array(4, 1, 10, 3, 7, -1);
    $n =count($X);
    printRect($X, $Y, $n);
     
// This code is contributed by anuj_67.
?>

Javascript

<script>
 
 
// Program to find smallest rectangle
// to conquer all points
 
// function to print coordinate of smallest rectangle
function printRect(X, Y, n)
{
    // find Xmax and Xmin
    var Xmax = X.reduce((a,b) => Math.max(a,b));
    var Xmin = X.reduce((a,b) => Math.min(a,b));
 
    // find Ymax and Ymin
    var Ymax =  Y.reduce((a,b) => Math.max(a,b));
    var Ymin = Y.reduce((a,b) => Math.min(a,b));
 
    // print all four coordinates
    document.write( "{" + Xmin + ", " + Ymin + "}" + "<br>");
    document.write( "{" + Xmin + ", " + Ymax + "}" + "<br>");
    document.write( "{" + Xmax + ", " + Ymax + "}" + "<br>");
    document.write( "{" + Xmax + ", " + Ymin + "}" + "<br>");
}
 
// driver program
var X = [ 4, 3, 6, 1, -1, 12 ];
var Y = [ 4, 1, 10, 3, 7, -1 ];
var n = X.length;
  
printRect(X, Y, n);
  
</script>
Producción: 

{-1, -1}
{-1, 10}
{12, 10}
{12, -1}

 

Complejidad del tiempo: O(len(X)+len(Y))

complejidad del espacio: O(1)

Publicación traducida automáticamente

Artículo escrito por Shivam.Pradhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *