给定一个数组,寻找次大的数 (1)
给定一个数组,寻找次大的数,你会如何实现?
{
if (input == null || input.Length < 2)
{
throw new InvalidOperationException("the input paramter is invalid, please check your input");
}
int max1 = input[0], max2 = input[1];
Swap(ref max1, ref max2);
for (int i = 2; i < input.Length; i++)
{
if (input[i] > max2)
{
max2 = input[i];
Swap(ref max1, ref max2);
}
}
//if (max1 == max2)
//{
// throw new InvalidOperationException("All the given values are same");
//}
return max2;
}
private static void Swap(ref int max1, ref int max2)
{
if (max1 < max2)
{
int temp = max1;
max1 = max2;
max2 = temp;
}
}
由这里我们可以类推,如果让你实现寻找第十个大的数,你会如何做呢?
转载于:https://www.cnblogs.com/DivineEagle/archive/2011/01/27/Nisten.html
给定一个数组,寻找次大的数 (1)相关推荐
- 数组中前k大的数系列
1. 概述 给定一个数组array,大小为n,找到其中第k大的数或者前k大的数.这是一个电面高频题,有快排,堆排等多种思路来解题,本文章将从时间复杂度和空间复杂度,来介绍这些算法以及它们所适用的场景 ...
- C语言(CED)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。
)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出. [输入] 第一行包含一个整数n,表示数组的大小. 第二行包含n个整数,表示数组的元素,整数之间以一个 ...
- 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。
给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序. import java.util.Arrays;public class MaximumDif ...
- 121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的
买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该 ...
- java 算法之找出数组中第二大的数
1.如果仅考虑实现功能而不考虑效率,可以先通过排序算法将数组排序,然后根据数组下标来访问数组中第二大的数,,最快的排序算法一般为快速排序算法,但是其时间复杂度为(nlogn),根据下标访问需要便利一遍 ...
- 给定一个数组,输出这个数组中的最大值和最小值
/*** @author LLJ* @time 2020-5-6 17点06分* @Description 给定一个数组,输出这个数组中的最大值和最小值*/ public class BigAndSm ...
- leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置
给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置 leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置 示例: 输入: [0 ...
- C++实现求数组中前K大的数
参考:http://blog.csdn.net/xiaoding133/article/details/8037086 C++实现求数组中前K大的数,即求数组的最大的k个数 //数组中求最大的k个数 ...
- 算法---找到数组中第二大的数
题目 找到无序数组中第二大的数 思路 我们可以用两个容器记录所有遍历过的元素中,第一大和第二大的数,在后续的遍历过程中,我们不断更新这两个值即可.时间复杂度O(n) 实现方法: public stat ...
- 剑指offer:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,..,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]. 不能使用除 ...
最新文章
- 基于jquery的插件turn.js学习笔记
- iOS 编译后的Archiveing 界面在 Windows-organizer 下
- 3.Shell 编程从入门到精通 --- 编程基础的基本元素
- Git-第五篇廖雪峰Git教程学习笔记(4)分支
- 国际国内cms系统开源网址大综合
- Mac安装JDK1.8及环境变量配置
- graphpad细胞增殖曲线_Graphpad 作图教程 | 这份超详细的生存曲线绘制指南,科研新手一看就会!...
- norm函数-matlab
- 学英语尽量不要从背词汇表开始
- HTTP 出现304情况及详解
- VB是对API的封装 qq 快速登录 各种webservice接口搜集 ReReg.bat 注册登录组件
- 问题解决:error CS0234: 命名空间“System”中不存在类型或命名空间名“CodeDom”/“ComponentModel”(是否缺少程序集引用?)
- 初级系列11.个人所得税问题
- ORB-SLAM3中的词袋模型BoW
- win10实现debug
- 杭州地区IT公司招聘分析与求职建议
- JSP事件——键盘、鼠标、表单
- MIPS指令集 指令的格式
- 选择法排序的两种方法
- Html页面生成excel,html页面导出为excel表格