本题目题目链接:NEUQ OJ (acmclub.cn)http://oj.acmclub.cn/problems/2359

----------------------------------------------------------------------------------------------------------------------------

看到这个题目首先读题就废了大会功夫,但好歹是读懂了题目要求

两个Σ符号连用X(L,R),组成的是不同L与R的组合代表的范围,求每个范围内的第二大数,最后相加。以下是我自己写的代码:

!!!!!!!!!很傻很笨,警告(4重循环)空间及时间复杂度都太高

//第二大数
/*1.输入N(个数)第二行输入数字的排列(1-N)  数组a【】2.L,R的范围。俩个值比较后3.循环比较在(L,R)之中 第二大的数,将他用dec统计起来*/
//第二大数,在给定的所有(L,R)范围之中,每个范围的第二大的数之和
import java.util.Scanner;public class Dierdashu {public static  void main(String []args){Scanner  scanner=new Scanner(System.in);int N=scanner.nextInt();//记录数字排序int a[]=new int[N+1];for(int i=1;i<=N;i++){a[i]=scanner.nextInt();}//记录第二大数int dec=0;//求得每个(L,R)中的第二大数,L<Rfor(int L=1;L<=N-1;L++){for(int R=L+1;R<=N;R++){if(L<R){//复制相同的数字排序int b[]=new int[N+1];for(int i=1;i<=N;i++){b[i]=a[i];}//在(L,R)排序,找到第二大数for(int n=L;n<=R;n++){for(int m=L;m<R;m++){int max=b[m];if(b[m]>b[m+1]){b[m]=b[m+1];b[m+1]=max;}}}//排序之后第二大数为数组的第R-1个dec=dec+b[R-1]; }}}System.out.println(dec);}
}

当然啦,编译不通过哈哈哈,之后询问老师(不过思路是对的),还是乖乖的看答案,拿C转java运行吧!

要学习,蛮干不如先学习别人的思想~

以下是参考答案后的Java代码:

package acm_424;import java.util.Scanner;//第二大数,根据老师发的C答案理解编写
/*X(L,R)1.输入N,用a【】记录1-N2.设置三个量maxn,minn,ans,(在每次L+1,也就是R=L+1的时候初始化maxn,minn)(每次循环结束,R=N时根据不同情况,得出ans并累加)3.最后输出ans*/
public class Main {public static void main(String []args){Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();//输入int a[]=new int[n+1];for (int i = 1; i <= n; i++) {a[i]=scanner.nextInt();}//用于记录,最大数和第二大数int maxn=0,minn = 0;long ans=0;//for(int L=1;L<=n;L++){for(int R=L+1;R<=n;R++){//开始都是相同的L,所以当L=R+1的时候就初始化了第一个和第二个元素if(R==L+1){//开始范围内两个数,比较大小,并返回第二大的那个maxn=Math.max(a[L],a[R]);minn=Math.min(a[L],a[R]);ans+=minn;               }else{/*范围内3个及以上数,也就是范围扩大,R向后移动,加入新数判断可能存在两种情况1.新数比第二大数大,比最大数小,第二大数变为a[R]2.新数比最大数大,最大数变为第二大数,新数变为最大数只需记录(L,R扩大)范围内的最大和第二大,其他不用比较*/if(a[R]>minn&&a[R]<maxn){minn=a[R];}else if(a[R]>maxn){minn=maxn;maxn=a[R];}ans+=minn;}}}System.out.println(ans);}}

--------------------------------------------------------------------------------------------------------------------------------与我自己写的相比,答案少了两层循环,利用了两个变量,在范围取值的移动上,进行记录。

理解第二大数,就只需要找到范围内第二大的数即可,无需把每个范围的数都排列一遍。

此外Math的方法,真的很方便!!!

acmclub2359(第二大数)相关推荐

  1. c语言经典算法——查找一个整数数组中第二大数

    https://www.cnblogs.com/dootoo/p/4473958.html 题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大 ...

  2. 如何快速找出一个数组中最大数和第二大数

    看到一道题是:快速找出一个数组中最大数和第二大数. 我之前学了一些数组排序,例如冒泡排序,简单选择排序等等,然后我就想可不可以利用冒泡排序来实现呢?之前写过冒泡排序实现从小到大的排列,那么可以改成从大 ...

  3. 快速找出一个数组中的最大数、第二大数

    http://blog.csdn.net/hackbuteer1/article/details/8035261#comments 快速找出一个数组中的最大数.第二大数 思路:如果当前元素大于最大数 ...

  4. [基础题]1.快速找出一个数组中的最大数、第二大数。

    [基础题]1.快速找出一个数组中的最大数.第二大数. package HomeWork_10;public class Test_01 {public static void main(String[ ...

  5. 面试题目(1)如何从一组数据中怎样最快找到第二大数?

    首先定义max变量以存储最大值,secmax存储第二大的值.先取出数组中前两个值,将最大的存储在max中,小的存储在secmax中. 接下来 在循环中 取出数组的元素a[i].起初先判断a[i]是否是 ...

  6. 第二大数 滑动窗口 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛

    链接:https://ac.nowcoder.com/acm/contest/27302/F 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52 ...

  7. 寻找数组中的第二大数

    方法一: #include "stdio.h" #include "stdlib.h" //初始化最大值为a[0],次大值为a[1],遍历一次,每次比较并更新最 ...

  8. 同时寻找最大数和最小数的最优算法 第二大数

    我们知道,在一个容量为n的数据集合中寻找一个最大数,不管用什么样的比较算法,至少要比较n-1次,就算是用竞标赛排序也得比较n-1次,否则你找到的就不能保证是最大的数.那么,在一个容量为n的数据集合中同 ...

  9. html5数组查找第二大数,2021-06-29:在两个都有序的数组中找整体第K小的数。

    2021-06-29:在两个都有序的数组中找整体第K小的数. 福大大 答案2021-06-29: 1.A和B长度不等的时候,需要把A和B的长度变成相等. A是短数组,B是长数组. 第k小的数,k从1开 ...

  10. 如何找出数组中第二大的数

    1.最容易想到的办法 我们可以用最简单的办法来找到一个数组中任意大小的数字,那就是按照某一个排序方式将数组的所有元素进行排序,然后按需取出来就可以,知识这种方式的时间复杂度和空间复杂度比较大,所以,有 ...

最新文章

  1. MATLAB_8-边缘检测_大长腿干扰下识别人脸
  2. 机器视觉行业的现状和未来
  3. k8s查看pod的yaml文件_【大强哥-k8s从入门到放弃04】Yaml语法解析
  4. Android中实现照片滑动时左右进出的动画的xml代码
  5. WPF usercontrol 自定义依赖属性
  6. 数据结构——模式匹配kmp算法
  7. 从市场角度看服务器虚拟化
  8. “WPF” VS “Silverlight”
  9. excel两个指标相关性分析_我用Excel发现了数据分析的本质:回归分析
  10. Xen Documentation - Hypercall Interfaces
  11. 单调栈与单调队列简单例题
  12. Android_JarZip压缩和解压文件
  13. 校园二手交易平台-简要需求分析
  14. 中间表是什么?和报表有什么关系?会带来怎样的问题?又如何解决?
  15. 国内使用谷歌健身的方法
  16. HTML5视频自动循环播放
  17. 开课吧 python与人工智能 下载_开课吧app|开课吧手机版下载v2.3.6安卓版 - 欧普软件下载...
  18. 身份证OCR识别发展史
  19. free_rtos系统基本配置
  20. 倩女手游经验计算机,倩女幽魂手游卡级屯经验指南 短期反超成吨经验

热门文章

  1. 我的第二个Android应用软件——《新月集》
  2. 【遥感图像】目标检测系列.1
  3. highcharts图形界面(Java从数据库获取值)
  4. Mac 下自带的中文输入法不显示汉字提示问题
  5. 王歌心灵成长书院喜获“全国AAA级信用单位”荣誉称号
  6. 职业教育改革实施方案之双师型教师队伍建设
  7. 软件设计师笔记:多媒体基础
  8. 自定义Unity组件——AudioManager(音频管理器)
  9. python不允许标点符号_Python处理中文标点符号大集合
  10. 如何使用Prestashop三步轻松搭建自己的电商网站