- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在编码竞赛中遇到了以下问题。我尝试了很多,但一个私有(private)测试用例总是因错误的答案而失败,我无法弄清楚为什么我的以下方法会失败。我没有天真的解决方案来生成压力测试用例并进行比较。此外,不会发表任何社论。因此,如果可能的话,我正在找人指出我方法中的缺陷。
以下是对问题的详细描述以及我到目前为止所做的尝试。
问题:有多个地区,您会根据学生在各自地区的排名为每个地区的学生打分。例如:
Region1:
StudentName, Score
A, 50.0
B, 60.0
C, 40.0
Region2:
StudentName, Score
D, 30.0
E, 10.0
F, 20.0
在上面的数据中,学生A在Region1中排名为1,B在Region1中排名为2,C在Region1中排名为3。同理,D在Region2有Rank1,E有Rank2,F有Rank3。
我们的任务是合并所有地区的数据并创建一个根据分数排名的全局数据。约束是任何在该地区排名较低的学生的排名仍然不能高于其所在地区在原始地区数据中排名比它更好的其他学生。
例如:
Region1:
A, 50.0
B, 60.0
C, 40.0
Region2:
D, 30.0
E, 10.0
F, 20.0
将合并到:
A, 50.0
B, 60.0
C, 40.0
D, 30.0
E, 10.0
F, 20.0
顺序不会根据分数而改变,因为根据区域限制,B 始终低于 A,F 始终低于 E。
其他测试用例:
Region1:
A, 50.0
B, 60.0
C, 70.0
Region2:
D, 30.0
E, 20.0
F, 10.0
结果还是按照A,B,C,D,E,F的顺序
Region1:
A, 60.0
B, 80.0
C, 100.0
Region2:
D, 70.0
E, 90.0
F, 110.0
将导致:D、E、F、A、B、C
但是,
Region1:
A, 11.5
B, 8.5
C, 10.0
Region2:
D, 12.0
E, 9.0
F, 9.5
将导致:
D, 12.0
A, 11.5
E, 9.0
B, 8.5
C, 10.0
F, 9.5
Constraints:
1<=number of regions<=6
score can be upto 7 decimal places
我的方法是将所有输入数据添加到一个列表并保持稳定排序,即如果两个学生的区域相同,则比较他们在区域中的排名,否则比较分数。
static class Student implements Comparable<Student>
{
String name;
double score;
int zone;
int rank;
//constructor
public int compareTo(Student o)
{
if(this.zone == o.zone)
{
//lower i.e. better rank
return Integer.compare(this.rank, o.rank);
}
//higher i.e. better score
return Double.compare(o.score, this.score);
}
}
main()
{
//read data from console input into an ArrayList<Student> students
Collections.sort(students);
//print each student from students
}
这个问题没有提到两个学生在不同区域的分数是否相等。在那种情况下,我尝试使用他们在该区域中的各自等级来打破平局,但私有(private)测试用例一直失败。我最初认为这个问题可能缺少一些信息,但我在竞赛仪表板中看到许多关于这个问题的成功提交。这就是我认为我遗漏了一些东西并且问题并不像我想的那么简单的原因。但是,我无法想出一个测试用例来验证这个假设。
谢谢!
最佳答案
据我了解这个问题,要求是根据分数对学生进行排序,但有一个额外的限制,即保留区域内学生的相对顺序。
给定问题中所列示例之一的输入数据,
Region1:
A, 11.5
B, 8.5
C, 10.0
Region2:
D, 12.0
E, 9.0
F, 9.5
仅按分数排序会得到以下结果:DACFEB。
但是,关于在区域内保持相对顺序的约束需要以下部分顺序 A < B < C 和 D < E < F。
OP 将此特定示例的解决方案作为 DAEBCF 提供。在对这个问题的评论中,我为这个例子提出了另外两种可能的解决方案:DABCEF 和 DAEFBC。我看不到任何标准可以让我们决定这些可能的解决方案中哪一个是正确的。因此,问题是欠约束的。人们可以争论这些解决方案中哪一个比其他解决方案更可取,但这样做会引入新的限制,而这些限制在原始问题中并不明显。
鉴于有多个解决方案满足问题中的所有条件,这意味着该域中的值没有总排序。此外,鉴于正确的比较器必须对其域的值进行总排序,因此不可能为该域编写适当的比较器。
当然,可以编写一个具有某些行为的正确比较器,并且它会优先于这些可能的解决方案中的一个而不是其他解决方案。这样做将隐含地实现不属于问题陈述一部分的额外约束。事实上,看起来 Vincent van der Weele已经这样做了。声明“下一个空位必须由其中一个区域中排名最高的剩余元素填充。哪个?得分最高的”引入了附加约束。它导致订购 DAEBCF,这是 OP 建议的。虽然这是明智的,但它必然是“正确”的顺序。
替代算法可能如下所示。 1) 从一个空的结果列表开始,并按排名顺序维护来自每个地区的学生列表。 2) 找到剩下的得分最高的学生。 3) 将该学生和同一地区内排名较高的学生附加到结果中,保持相对顺序。 4) 重复直到没有学生留下。
将此算法应用于 DABCEF 中的示例输入结果。这是明智的,但以不同的方式。同样,我们不知道这是否是“正确”答案。
要么是编程竞赛中的问题一开始就没有明确说明,要么是竞赛的问题陈述与 OP 在 Stack Overflow 上的问题之间丢失了一些信息。
关于java - 合并 n 个列表并对数据进行排序,保持原始顺序/约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855025/
我喜欢 smartcase,也喜欢 * 和 # 搜索命令。但我更希望 * 和 # 搜索命令区分大小写,而/和 ?搜索命令遵循 smartcase 启发式。 是否有隐藏在某个地方我还没有找到的设置?我宁
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
从以下网站,我找到了执行java AD身份验证的代码。 http://java2db.com/jndi-ldap-programming/solution-to-sslhandshakeexcepti
似乎 melt 会使用 id 列和堆叠的测量变量 reshape 您的数据框,然后通过转换让您执行聚合。 ddply,从 plyr 包看起来非常相似..你给它一个数据框,几个用于分组的列变量和一个聚合
我的问题是关于 memcached。 Facebook 使用 memcached 作为其结构化数据的缓存,以减少用户的延迟。他们在 Linux 上使用 UDP 优化了 memcached 的性能。 h
在 Camel route ,我正在使用 exec 组件通过 grep 进行 curl ,但使用 ${HOSTNAME} 的 grep 无法正常工作,下面是我的 Camel 路线。请在这方面寻求帮助。
我正在尝试执行相当复杂的查询,在其中我可以排除与特定条件集匹配的项目。这是一个 super 简化的模型来解释我的困境: class Thing(models.Model) user = mod
我正在尝试执行相当复杂的查询,我可以在其中排除符合特定条件集的项目。这里有一个 super 简化的模型来解释我的困境: class Thing(models.Model) user = mod
我发现了很多嵌入/内容项目的旧方法,并且我遵循了在这里找到的最新方法(我假设):https://blog.angular-university.io/angular-ng-content/ 我正在尝试
我正在寻找如何使用 fastify-nextjs 启动 fastify-cli 的建议 我曾尝试将代码简单地添加到建议的位置,但它不起作用。 'use strict' const path = req
我正在尝试将振幅 js 与 React 和 Gatsby 集成。做 gatsby developer 时一切看起来都不错,因为它发生在浏览器中,但是当我尝试 gatsby build 时,我收到以下错
我试图避免过度执行空值检查,但同时我想在需要使代码健壮的时候进行空值检查。但有时我觉得它开始变得如此防御,因为我没有实现 API。然后我避免了一些空检查,但是当我开始单元测试时,它开始总是等待运行时异
尝试进行包含一些 NOT 的 Kibana 搜索,但获得包含 NOT 的结果,因此猜测我的语法不正确: "chocolate" AND "milk" AND NOT "cow" AND NOT "tr
我正在使用开源代码共享包在 iOS 中进行 facebook 集成,但收到错误“FT_Load_Glyph failed: glyph 65535: error 6”。我在另一台 mac 机器上尝试了
我正在尝试估计一个标准的 tobit 模型,该模型被审查为零。 变量是 因变量 : 幸福 自变量 : 城市(芝加哥,纽约), 性别(男,女), 就业(0=失业,1=就业), 工作类型(失业,蓝色,白色
我有一个像这样的项目布局 样本/ 一种/ 源/ 主要的/ java / java 资源/ .jpg 乙/ 源/ 主要的/ java / B.java 资源/ B.jpg 构建.gradle 设置.gr
如何循环遍历数组中的多个属性以及如何使用map函数将数组中的多个属性显示到网页 import React, { Component } from 'react'; import './App.css'
我有一个 JavaScript 函数,它进行 AJAX 调用以返回一些数据,该调用是在选择列表更改事件上触发的。 我尝试了多种方法来在等待时显示加载程序,因为它当前暂停了选择列表,从客户的 Angul
可能以前问过,但找不到。 我正在用以下形式写很多语句: if (bar.getFoo() != null) { this.foo = bar.getFoo(); } 我想到了三元运算符,但我认
我有一个表单,在将其发送到 PHP 之前我正在执行一些验证 JavaScript,验证后的 JavaScript 函数会发布用户在 中输入的文本。页面底部的标签;然而,此消息显示短暂,然后消失...
我是一名优秀的程序员,十分优秀!