在至少3个互异的整数中任取一个“常规元素”

问题:

从 n>=3 个互异整数中,除最大、最小者以外,任取一个“常规元素”。

解决:

ordinaryElement(s[], n)
    在 s 中任取三个元素,不失一般性就去前三个元素;    //这3个元素亦必互异
    通过比较,输出其中大小居中的元素;                //这个元素必然就是“常规元素”

问题简单,写下来的目的是为了告诫自己:

永远重视思考的过程,永远不要把简单的问题想复杂,永远追求“大道至简”。

From : 《数据结构》,邓俊辉

时间: 2024-10-05 23:56:42

在至少3个互异的整数中任取一个“常规元素”的相关文章

顺序栈的操作,整数进栈,取栈顶元素,栈内剩余元素

// main.cpp //  stack_quhao //  Created by duanqibo on 2019/6/29. //  Copyright © 2019年 duanqibo. All rights reserved. //  顺序栈的操作,整数进栈,取栈顶元素,栈内剩余元素 #include <iostream> #include <stdio.h> #include <stdlib.h> const int maxsize=6; /* typede

如何从40亿整数中找到不存在的一个

前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况下,如何解决该问题?如果有几个外部的"临时"文件可用,但是仅有几百字节的内存,又该如何解决该问题? 分析 这仍然是<编程珠玑>中的一个问题.前面我们曾经提到过<位图法>,我们使用位图法解决了这个问题.32位整型最多有4294967296个整数,而很显然40亿个数中必然会至少缺一个.我们同样也可以尝试使

从40亿个整数中找到不存在的一个

前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况下,如何解决该问题?如果有几个外部的"临时"文件可用,但是仅有几百字节的内存,又该如何解决该问题? 分析 这仍然是<编程珠玑>中的一个问题.前面我们曾经提到过<位图法>,我们使用位图法解决了这个问题.32位整型最多有4294967296个整数,而很显然40亿个数中必然会至少缺一个.我们同样也可以尝试使

只用2GB内存在20亿个整数中找到出现次数最多的数

[题目] 有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数. [要求] 内存限制为2GB. [解答] 想要在很多整数中找到出现次数最多的数,通常的做法是使用哈希表对出现的每一个数做词频统计,哈希表的key是某一个整数,value是这个数出现的次数.就本题来说,一共有20亿个数,哪怕只是一个数出现了20亿次,用32位的整数也可以表示其出现的次数而不会产生溢出,所以哈希表的key需要占用4B,value也是4B.那么哈希表的一条记录(key,value)需要占用8B,当哈希表记录

1049. Counting Ones/整数中1出现的次数(从1到n整数中1出现的次数)

The task is simple: given any positive integer N, you are supposed to count the total number of 1's in the decimal form of the integers from 1 to N. For example, given N being 12, there are five 1's in 1, 10, 11, and 12. Input Specification: Each inp

找出整数中第k大的数

一  问题描述: 找出m个整数中第k(0<k<m+1)大的整数. 二  举例: 假设有12个整数:data[1, 4, -1, -4, 9, 8, 0, 3, -8, 11, 2, -9],请找出第5大的数(容易知道是0). 三   算法思路:        一种基于快排思想的算法可以在O(n)复杂度内找到第k大的数,首先要知道partition这个函数,它可以调整一个序列 使小于key的元素都排在key左边,大于key的元素都排在key右边,key可以在这个序列中任意选择,一般选择给定序 列

1到100的所有整数中出现多少次数字9

★编写程序数一下1到100的所有整数中出现多少次数字9 #include <stdio.h> int main() { int i = 1; int count = 0;            //用于对数字个数的统计 while (i <= 99) { if (i % 10 == 9)        //获得个位为9的数字 { printf("%d\t", i); count++; } if (i % 100 - i % 10 == 90)   //获得90~99的

[经典面试题][谷歌]一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素

题目 一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间. 思路一 寻找重复元素,很容易想到建立哈希表来完成,遍历一遍数组就可以将每个元素映射到哈希表中.如果哈希表中已经存在这个元素则说明这就是个重复元素.这种方法可以很方便的在O(n)时间内完成对重复元素的查找.可是题目要求在O(1)的空间.因此采用哈希表这种解法肯定在空间复杂度上是不符合要求的.题目中数组中所以数字都在[0, n-1]区间范围内,因此哈希表的大小为n

数组-07. 求一批整数中出现最多的个位数字

数组-07. 求一批整数中出现最多的个位数字(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 徐镜春(浙江大学) 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字.例如给定3个整数1234.2345.3456,其中出现最多次数的数字是3和4,均出现了3次. 输入格式: 输入在第1行中给出正整数N(<=1000),在第2行中给出N个不超过整型范围的正整数,数字间以空格分隔. 输出格式: 在一行中按格式“M: