一个机器,每 1 秒会生成一个随机数。
机器需要提供另外一个方法,方法内容就是找出刚刚过去的 10 秒内,生成的数中的最大的数和最小的数。
请设计该机器内,用于计算最大值和最小值的数据结构。
语言要求:我只会 java、js 和 go,其他我都看不懂。
建议用 go,配合 playground 来演示。
一个机器,每 1 秒会生成一个随机数。
机器需要提供另外一个方法,方法内容就是找出刚刚过去的 10 秒内,生成的数中的最大的数和最小的数。
请设计该机器内,用于计算最大值和最小值的数据结构。
语言要求:我只会 java、js 和 go,其他我都看不懂。
建议用 go,配合 playground 来演示。
package com.dashu;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Random;
public class DaShu {
static Comparator<Integer> cmp = new Comparator<Integer>() {
public int compare(Integer e1, Integer e2) {
return e2 - e1;
}
};
static Queue<Integer> sortQueue = new PriorityQueue<Integer>(10,cmp);
public static void main(String[] args) throws Exception {
while(true){
Thread.sleep(1000);
sortQueue.add(random());
if(sortQueue.size() == 10){
List<Integer> list = new ArrayList<Integer>();
for(int i = 0;i<sortQueue.size();i++){
if(i == 0){
System.out.println("Max :"+sortQueue.poll());
}
list.add(sortQueue.poll());
}
sortQueue.addAll(list);
System.out.println("Min: "+list.get(list.size() - 1));
System.out.println("------------------------------------");
}
}
}
public static int random(){
int max=10000;
int min=1;
Random random = new Random();
return random.nextInt(max)%(max-min+1) + min;
}
}
代码已完成,没什么算法,就为了打非要算法人的脸。还有我的 500 奖励坐着到账
我来个可读性好点的,思路是使用固定长度(长度可自定义,按这里的要求设为 10 就可以)队列数据结构,先进先出。
var code = "code"
public interface Queue<T> {
public void push(T t);
public T poll();
public int size();
public T peak();
public boolean isEmpty();
public boolean isFull();
}
var code="
import java.util.ArrayList;
import java.util.List;
public class ArrayQueue implements Queue {
List data;
int capacity;
public ArrayQueue(int capacity) {
data = new ArrayList<T>();
this.capacity = capacity;
}
public void push(T t) {
if (this.capacity == data.size()) {
data.remove(0);
}
data.add(t);
}
public T poll() {
T t = data.remove(0);
return t;
}
public int size() {
return data.size();
}
public T peak() {
return data.get(data.size() - 1);
}
public boolean isEmpty() {
return 0 == data.size();
}
public boolean isFull() {
return capacity == data.size();
}
public static void main(String[] args) {
ArrayQueue<Integer> queue = new ArrayQueue<Integer>(10);
for (int i = 0; i < 10; i++) {
queue.push(i);
}
System.out.println(queue.capacity);
System.out.println(queue.peak());
System.out.println(queue.poll());
queue.push(new Integer(11));
System.out.println(queue.data);
}
}
"
调用及测试类
var code =
import java.util.List;
public class Operation {
public static void main(String[] args) {
ArrayQueue<Integer> queue = new ArrayQueue<Integer>(10);
for(int i = 0 ;i< 10;i++){
queue.push(i);
}
System.out.println(queue.capacity);
System.out.println(queue.peak());
System.out.println(queue.poll());
queue.push(new Integer(10));
queue.push(new Integer(11));
queue.push(new Integer(12));
queue.push(new Integer(13));
queue.push(new Integer(14));
queue.push(new Integer(15));
System.out.println(queue.data);
System.out.println("最大值:"+Operation.max(queue.data));
System.out.println("最小值:"+Operation.min(queue.data));
}
public static int max(List<Integer> list){
int max = list.get(0);
for(Integer cur: list){
max = max <cur? cur:max;
}
return max;
}
public static int min(List<Integer> list){
int min = list.get(0);
for(Integer cur: list){
min = min >cur? cur:min;
}
return min;
}
}
js 版本奉上
var Data = {
init: function() {
this.interval(1000);
},
pool: [],
maxCount: 10000,
generate: function() {
var num = Math.ceil(Math.random() * 10000);
this.pool.push(num);
if (this.pool.length > this.maxCount) {
this.pool.splice(0, this.pool.length - 10);
}
},
interval: function(interTime) {
var self = this;
setInterval(function() {
self.generate();
}, interTime);
}
}
function getNum(count, Data) {
var sets = Data.slice(Data.length - count, Data.length);
console.log(sets);
console.log("Max is : ", Math.max.apply(null, sets));
console.log("Min is : ", Math.min.apply(null, sets));
}
Data.init();
getNum(10, Data.pool);
😄
markdown 不支持反引号引导的代码块。。。
var Data = {
init: function() {
this.interval(1000);
},
pool: [],
maxCount: 10000,
holdCount: 100,
generate: function() {
var num = Math.ceil(Math.random() * 10000);
this.pool.push(num);
if (this.pool.length > this.maxCount) {
this.pool.splice(0, this.pool.length - holdCount);
}
},
interval: function(interTime) {
var self = this;
setInterval(function() {
self.generate();
}, interTime);
}
}
function getNum(count, Data) {
var data=Data.pool;
Data.holdCount=count;
var sets = data.slice(data.length - count, data.length);
console.log(sets);
console.log("Max is : ", Math.max.apply(null, sets));
console.log("Min is : ", Math.min.apply(null, sets));
}
Data.init();
getNum(10, Data);
😄
var foo = {
max: null,
min: null,
timer: null,
mainTimer: null,
getMax: function() {
return this.max;
},
getMin: function() {
return this.min;
},
ctor: function(data) {
this.max = data;
this.min = data;
},
generate: function() {
return parseInt(Math.random() * 100);
},
start: function() {
//console.log('start');
var tmp = foo.generate();
this.max || this.ctor(tmp);
this.max = tmp > this.max ? tmp : this.max;
this.min = tmp < this.min ? tmp : this.min;
//console.log(this.getMax());
//console.log(this.getMin());
this.timer = setTimeout(function() {
foo.start()
}, 1000);
},
run: function(vTime) {
if (!this.timer) {
foo.start();
} else {
console.log('max:' + foo.getMax());
console.log('min:' + foo.getMin());
}
foo.ctor(foo.generate());
var time = vTime || 10000;
this.mainTimer = setTimeout(function() {
foo.run(time);
}, time);
},
stop: function() {
window.clearTimeout(this.timer);
window.clearTimeout(this.mainTimer);
}
}
//foo.run(1000);
foo.run();
宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。
Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。
Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。
Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。
JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。
找到自己的位置,萌新烦恼少。
Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。
Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。
这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。
安全 · 稳定 · 快速
为跨境从业人员提供专业的跨境浏览器
提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。
GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。
微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。
网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。
Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。
Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。
ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。
我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。
你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于