Pregunta de la entrevista: encuentre ese número en una matriz de enteros, que sea mayor o igual que el número de la izquierda y menor o igual que el número de la derecha

Por ejemplo: {3, 1, 2, 4, 7, 10, 9, 8}dicho número es 4, 7;
{1, 6, 9, 2, 1, 5, 15, 20}el número que cumple la condición es 1, 15, 20.

Mira el código:

public class FindingValue {
    
    
    public static void main(String[] args) {
    
    
        /**
         * 思路:1. 这样的数只要小于或等于其右侧的最小数就满足右侧条件
         *      2. 大于或等于左侧最大的数就满足左侧条件
         */
        int[] arr = {
    
    3, 1, 2, 4, 7, 10, 9, 8};
        int[] arr1 = {
    
    1, 6, 9, 2, 1, 5, 15, 20};
        findValue(arr);
        System.out.println();
        findValue(arr1);


    }

    public static void findValue(int[] arr) {
    
    
        // 使用一个临时数组来保存 arr 中的每一个数右侧的最小值
        int[] temp = new int[arr.length];
        int min = arr[arr.length - 1];
        for (int j = arr.length - 1; j >= 0; j--) {
    
    
            if (arr[j] < min) {
    
    
                min = arr[j];
            }
            temp[j] = min;
        }
        int max = arr[0];
        for (int i = 0; i < arr.length; i++) {
    
    
            if (arr[i] > max) {
    
    
                max = arr[i];
            }
            if (arr[i] >= max && arr[i] <= temp[i]) {
    
    
                System.out.print(arr[i] + " ");
            }
        }
    }
}

Referencia: encuentre ese número en una matriz int, que sea mayor o igual que todos los números de la izquierda y menor o igual que todos los números de la derecha

Supongo que te gusta

Origin blog.csdn.net/jiaobuchong/article/details/86634845
Recomendado
Clasificación