一个机器,每 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 奖励坐着到账
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);
😄
我来个可读性好点的,思路是使用固定长度(长度可自定义,按这里的要求设为 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.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;
}
}
OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。
Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。
Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。
这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。
DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。
正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。
用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖。
用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/
Thank God It's Friday! 感谢老天,总算到星期五啦!
OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。
Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。
Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。
Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。
Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。
SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。
微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。
GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。
资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。
Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。
Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。
SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
即用的 Vim-IDE。
CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。
程序员是从事程序开发、程序维护的专业人员。
DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于