文档章节

给定一个数字序列list和一个数字x,找出序列中第3个比x大的数

关西大汉弹琵琶
 关西大汉弹琵琶
发布于 2015/11/02 10:30
字数 319
阅读 192
收藏 0

问题描述:

给定一个数字序列,找出第3个比x大的数。比如:

给定序列: 9,7,5,2,18,8,10

x: 5

则输出9

x=9

则输出不存在

问题分析:

保存一个包含3个元素的有序列,在找到更合适的数的时候,把最后一个删除.需要考虑以下特殊情况:

1, 读入的数比x小

2,3个元素的序列尚未存满

3,3个元素的序列存满了,但是读入的数比任何一个都大

4,返回的时候如果尚未填满3个元素则返回没有结果

代码实现:

package oschina.onsite;
/**
 * @project: oschina
 * @filename: find3larger.java
 * @version: 0.10
 * @author: JM Han
 * @date: 9:26 2015/10/31
 * @comment: 在序列中找出第三个比一个数大的数
 * @result:
 */

import java.util.*;

import static tool.util.printGenericIterator;

public class find3larger {
   public static final int NUM = 3;

   public static void find3larger(int n, List<Integer> lst) {
      TreeSet<Integer> innerlst = new TreeSet<Integer>();

      for (int i = 0; i < lst.size(); i++) {
         int x = lst.get(i);

         if(x <= n)
            continue;

         if (innerlst.size() < NUM) {
            innerlst.add(x);
         } else {
            int max = innerlst.last();
            if (x > max)
               continue;
            else{
               innerlst.add(x);
               innerlst.remove(max);
            }
         }
      }

      if(innerlst.size() == NUM)
         System.out.println("3rd larger item: " + innerlst.last());
      else
         System.out.println("no 3rd larger item exist");
   }

   public static void main(String[] args) {
      Integer[] testArray = new Integer[]{9,7,5,2,18,8,10};
      List<Integer> lst = Arrays.asList(testArray);
      find3larger(2, lst);
   }
}



© 著作权归作者所有

关西大汉弹琵琶
粉丝 8
博文 41
码字总数 14221
作品 0
浦东
程序员
私信 提问
一些面试题,整理自网络

腾讯面试题:tcp三次握手的过程,accept发生在三次握手哪个阶段? 答accept发生在三次握手之后。 第一次握手:客户端发送syn包(syn=j)到服务器。 第二次握手:服务器收到syn包,必须确认客户...

waveer
2016/12/08
45
0
Leetcode 排序类题目 排序算法总结

1. Merge Sorted Array Description: Easy Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: You may assume that nums1 has enough......

BookThief
2018/07/27
0
0
python学习系列--python内置函数(一)

先列出所有的python内置函数,可以看到还是挺多的。 abs() 求给定数的绝对值。 all() 传入一个列表,只有当列表中所有元素都是真时,该函数返回真。 any() 传入一个列表,只要列表中有一个元...

拾瓦兴阁
2017/07/09
0
0
python学习笔记二:序列及序列的操作

python中共有6种内建序列:列表、元祖(元素不可变)、字符串、unicode、buffer对象、xrange对象 列表用逗号分隔,写在方括号中。字符串就是一个由字符组成的序列 序列都可以进行的操作:索引...

笑看天空
2017/04/18
0
0
python2-1

python条件语句 通过一条或多条语句的执行结果来执行代码块 Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。 Python 编程中 if 语句用于控制程序的执行,基本形式为...

wy125629
2017/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据安全管理:RSA算法,签名验签流程详解

本文源码:GitHub·点这里 || GitEE·点这里 一、RSA算法简介 1、加密解密 RSA加密是一种非对称加密,在公开密钥加密和电子商业中RSA被广泛使用。可以在不直接传递密钥的情况下,完成加解密操...

知了一笑
41分钟前
5
0
Podman 使用指南

> 原文链接:Podman 使用指南 Podman 原来是 CRI-O 项目的一部分,后来被分离成一个单独的项目叫 libpod。Podman 的使用体验和 Docker 类似,不同的是 Podman 没有 daemon。以前使用 Docker...

米开朗基杨
今天
6
0
拯救 项目经理个人时间的5个技巧

优秀的项目经理都有一个共同点,那就是良好的时间管理能力。专业的项目经理会确保他们的时间投入富有成效,尽可能避免时间浪费。 时间管理叫做GTD,即Getting Things Done——“把事情做完”...

Airship
今天
7
0
LNMP环境介绍,Mariadb安装,服务管理,mariadb安装3

LNMP环境介绍 Nginx 处理的请求有两种,分为 静态与动态 图片,js,css,视频,音频,flash 等都是静态请求,这些数据都不是保存在数据库里面的 动态请求一般来说,需要的数据是在数据库里面...

doomcat
今天
3
0
前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部