美文网首页
找出一个数组中全部符合条件的数,这个数大于它前面的全部数,小于后

找出一个数组中全部符合条件的数,这个数大于它前面的全部数,小于后

作者: 编程小王子AAA | 来源:发表于2020-08-23 15:21 被阅读0次

找出一个数组中全部符合条件的数,这个数大于它前面的全部数,小于后面的全部数。要求时间空间不能超过O(N)。


package com.coolinkiot.utils;

import java.util.ArrayList;
import java.util.List;

/**
 * @data Administrator
 * @data 2020/8/23 0023
 */
public class ArraysSort {

    public static List<Integer> findNums(int[] nums) {
        List<Integer> res = new ArrayList<>();

        int n = nums.length;
        int[] rightMin = new int[n];
        int[] leftMax = new int[n];

        leftMax[0] = nums[0];
        for (int i = 1; i < n; i++) {
            if (nums[i] > leftMax[i - 1]) {
                leftMax[i] = nums[i];
            } else {
                leftMax[i] = leftMax[i - 1];
            }
        }

        rightMin[n - 1] = nums[n - 1];
        for (int i = n - 2; i >= 0; i--) {
            if (nums[i] < rightMin[i + 1]) {
                rightMin[i] = nums[i];
            } else {
                rightMin[i] = rightMin[i + 1];
            }
        }

        for (int i = 0; i < n; i++) {
            if (leftMax[i] == rightMin[i]) {
                res.add(leftMax[i]);
            }
        }
        return res;
    }

    public static void main(String[] args) {
        int[] exam = {7, 10, 2, 6, 19, 22, 32};
        System.out.println(findNums(exam));
    }

}

相关文章

  • 找出一个数组中全部符合条件的数,这个数大于它前面的全部数,小于后

    找出一个数组中全部符合条件的数,这个数大于它前面的全部数,小于后面的全部数。要求时间空间不能超过O(N)。

  • 快排递归实现

    基本思想:(分治) 先从数列中取出一个数作为key值;将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它...

  • 算法

    快排 先从数列中取出一个数作为基准数 区分过程,将比这个数大的数全部放到它的右边,小于或等于它的数全放到左边 再对...

  • 02

    问题一: 给定一个数组arr,和一个数num,请把小于等于num的数放在数组的左边,大于num的数放在数组的右边。...

  • 算法之荷兰国旗问题

    题目一:给定一个数组arr,和一个数num,请把小于等于num的数放在数组的左边,大于num的数放在数组的右边。要...

  • 快速排序java实现

    //快速排序://基本思想:(分治)//先从数组中取出一个数作为key值;//将比这个数小的数全部放在它的左边,/...

  • 快速排序

    介绍 核心是跳位比较和交换随机的在数组中选一个数,小于等于它的数,统一放在这个数的左边,大于等于它的数,统一放在这...

  • 插入排序示范-从小到大 关键操作“从左至右后数插入前面数组”

    插入排序分析:1.后数插入前面的数组中,前面的数组是已经排好序的 2.后数下标为i,前数组最后一个数下标为i-1,...

  • 581. 最短无序连续子数组

    一 题目: 二 思路: 分析:这个子数组有个特征 子数组前面的数都是升序的,且最后一个数小于子数组里的任意一个数 ...

  • 算法系列之-冒泡排序(三)

    冒泡排序:在一组数中,取一个数与相邻的数比较,如果前一个数大于后一个数交换位置,交换位置后,又和前一个数比较,知道...

网友评论

      本文标题:找出一个数组中全部符合条件的数,这个数大于它前面的全部数,小于后

      本文链接:https://www.haomeiwen.com/subject/zyoijktx.html