找出数组中所有降序尾部子数组的头元素

2023-12-27 04:48

本文主要是介绍找出数组中所有降序尾部子数组的头元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

已知有这么一个数组: {16, 17, 4, 3, 5, 2},那么它的降序尾部子数组有:{17, 4, 3, 5, 2},{5, 2},{2},所以这几个数组的头元素分别是17,5,2。

这个问题比较容易理解,首先可以想到的方法就是双重循环遍历:

class LeadersInArray {void printLeaders(int arr[], int size) {for (int i = 0; i < size; i++) {int j;for (j = i + 1; j < size; j++) {if (arr[i] <= arr[j])break;}if (j == size) System.out.print(arr[i] + " ");}}public static void main(String[] args) {LeadersInArray lead = new LeadersInArray();int arr[] = new int[]{16, 17, 4, 3, 5, 2};int n = arr.length;lead.printLeaders(arr, n);}
}

该实现的时间复杂度为:O(n^2)。

另外一种想法就是:既然这个数组存在于尾部,那么我们直接从后往前遍历也是可以的,只要一直维持递增的效果就行了,所以这样可以大大降低时间复杂度,其为:O(n)

class LeadersInArray {void printLeaders(int arr[], int size) {int max_from_right =  arr[size-1];System.out.print(max_from_right + " ");for (int i = size-2; i >= 0; i--) {if (max_from_right < arr[i]) {           max_from_right = arr[i];System.out.print(max_from_right + " ");}}    }public static void main(String[] args) {LeadersInArray lead = new LeadersInArray();int arr[] = new int[]{16, 17, 4, 3, 5, 2};int n = arr.length;lead.printLeaders(arr, n);}
}

这篇关于找出数组中所有降序尾部子数组的头元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541918

相关文章

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以