2454. 下一个更大元素 IV --力扣 --JAVA

简介: 给你一个下标从 0 开始的非负整数数组 nums 。对于 nums 中每一个整数,你必须找到对应元素的 第二大 整数。如果 nums[j] 满足以下条件,那么我们称它为 nums[i] 的 第二大 整数:j > inums[j] > nums[i]恰好存在 一个 k 满足 i < k < j 且 nums[k] > nums[i] 。如果不存在 nums[j] ,那么第二大整数为 -1 。比方说,数组 [1, 2, 4, 3] 中,1 的第二大整数是 4 ,2 的第二大整数是 3 ,3 和 4 的第二大整数是 -1 。请你返回一个整数数组 answer ,其中 answer

 题目

给你一个下标从 0 开始的非负整数数组 nums 。对于 nums 中每一个整数,你必须找到对应元素的 第二大 整数。

如果 nums[j] 满足以下条件,那么我们称它为 nums[i]第二大 整数:

    • j > i
    • nums[j] > nums[i]
    • 恰好存在 一个k 满足 i < k < jnums[k] > nums[i]

    如果不存在 nums[j] ,那么第二大整数为 -1

      • 比方说,数组 [1, 2, 4, 3] 中,1 的第二大整数是 42 的第二大整数是 334 的第二大整数是 -1

      请你返回一个整数数组 answer ,其中 answer[i] nums[i] 的第二大整数。

      解题思路

        1. 最后两个一定为-1,因为右侧不足两个,不存在第二大整数;
        2. 倒序遍历,可以利用重复数据;
        3. 分情况讨乱,利用重复数据进行赋值。

        代码展示

        class Solution {
            public int[] secondGreaterElement(int[] nums) {
                int n = nums.length;
                int[] ans = new int[n];
                Arrays.fill(ans,-1);
                for (int i = n - 3; i >= 0; i--){
                    int flag = 0;
                    for (int j = i + 1; j < n; j++){
                        if(nums[j] > nums[i]){
                            if(++flag == 2){
                                ans[i] = nums[j];
                                break;
                            }
                        } else if (nums[j] == nums[i]){
                            if(flag == 0){
                                ans[i] = ans[j];
                                break;
                            }
                        } else {
                            if(ans[j] == -1 && flag == 0){
                                break;
                            }
                        }
                    }
                }
                return ans;
            }
        }

        image.gif


        目录
        相关文章
        |
        1月前
        |
        存储 缓存 安全
        除了变量,final还能修饰哪些Java元素
        在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
        26 2
        |
        2月前
        |
        存储 Java
        深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
        【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
        48 3
        |
        2月前
        |
        Java
        在Java的世界里,Set只接纳独一无二的元素。
        【10月更文挑战第16天】在Java的世界里,Set只接纳独一无二的元素。本文通过拟人化的手法,讲述了重复元素从初次尝试加入Set被拒绝,到经历挣扎、反思,最终通过改变自己,成为独特个体并被Set接纳的全过程。示例代码展示了这一过程的技术实现。
        26 1
        |
        1月前
        |
        Java
        那些与Java Set擦肩而过的重复元素,都经历了什么?
        在Java的世界里,Set如同一位浪漫而坚定的恋人,只对独一无二的元素情有独钟。重复元素虽屡遭拒绝,但通过反思和成长,最终变得独特,赢得了Set的认可。示例代码展示了这一过程,揭示了成长与独特性的浪漫故事。
        21 4
        |
        1月前
        |
        存储 Java
        判断一个元素是否在 Java 中的 Set 集合中
        【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
        |
        1月前
        |
        存储 算法 Java
        为什么Java Set如此“挑剔”,连重复元素都容不下?
        在Java的集合框架中,Set是一个独特的接口,它严格要求元素不重复,适用于需要唯一性约束的场景。Set通过内部数据结构(如哈希表或红黑树)和算法(如哈希值和equals()方法)实现这一特性,自动过滤重复元素,简化处理逻辑。示例代码展示了Set如何自动忽略重复元素。
        30 1
        |
        2月前
        |
        Java 开发者
        在Java集合世界中,Set以其独特的特性脱颖而出,专门应对重复元素
        在Java集合世界中,Set以其独特的特性脱颖而出,专门应对重复元素。通过哈希表和红黑树两种模式,Set能够高效地识别并拒绝重复元素的入侵,确保集合的纯净。无论是HashSet还是TreeSet,都能在不同的场景下发挥出色的表现,成为开发者手中的利器。
        29 2
        |
        3月前
        |
        Unix Shell Linux
        LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
        本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
        LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
        |
        4月前
        |
        Python
        【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
        本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
        63 6
        |
        4月前
        |
        搜索推荐 索引 Python
        【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
        本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
        125 2