- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设,我有一个学生
列表。 学生
有姓名
、出生日期
、年级
等字段。您如何找到学生
拥有 Scala 中最好的成绩
?
例如:
List(Student("Mike", "A"), Student("Pete", "B"), Student("Paul", A))"
我想要得到
List(Student("Mike", "A"), Student("Paul", A))
显然,我可以找到最高成绩
(上面列表中的“A”),然后过滤
列表
students.filter(_.grade == max_grade)
此解决方案的复杂度为O(N)
,但会遍历列表两次。您能提出更好的解决方案吗?
最佳答案
运行列表两次可能是最好的方法,但是如果您坚持只运行一次的解决方案,则可以使用折叠(此处适用于空列表):
(List[Student]() /: list){ (best,next) => best match {
case Nil => next :: Nil
case x :: rest =>
if (betterGrade(x,next)) best
else if (betterGrade(next,x)) next :: Nil
else next :: best
}}
如果您不熟悉折叠,答案 here 中对此进行了描述。 。它们是当您传递集合(例如列表)时积累某些内容的通用方法。如果您不熟悉匹配,可以使用 isEmpty
和 head
执行相同的操作。如果您希望学生的顺序与原始列表中出现的顺序相同,请在最后运行 .reverse
。
关于scala - 如何在列表中找到成绩最好的学生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8093490/
我正在尝试在 JavaScript 中创建一个正则表达式搜索,它会接受以下等级中的一个:A、B+、B、C+、C、D、F、AF 或 WF。 我有以下正则表达式:^A-?|[BCD][+-]?|[AW]?
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。它不符合 Stack Overflow guidelines 。它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题
我正在制作一个学生数据库,其中包含类(class) ID、类(class)名称、每门类(class)的学分、通过/失败声明和成绩。我的目标是让按钮显示总和(成绩)/总和(学分) 这是我编写的代码,它给
我正在努力弄清楚如何实现这个计数。模型是用户、测试、等级 用户 has_many 测试,测试 has_many 成绩。 每个等级都有一个计算分数(strong_pass、pass、fail、stron
我是一名优秀的程序员,十分优秀!