java - foobar.withgoogle.com 任务请传递编码消息 java
问题描述
我正在处理 foobar.withgoogle 任务“请传递编码消息”,我在计算机上对每个可能的数字进行了正确计算,但 foobar 打印“测试 5 失败 [隐藏]”这个隐藏测试意味着什么?请你帮助我好吗?
我的结果:
验证解决方案...
测试1通过!
测试2通过!
测试3通过![隐]
测试4通过![隐]
测试 5 失败 [隐藏]
请传递编码消息
您需要将消息传递给兔子工人,但为了避免被发现,您同意使用的代码是……至少可以说是晦涩难懂的。兔子在标准发行的盘子上获得食物,这些盘子上印有数字 0-9,以便于分类,您需要组合成组的盘子以在代码中创建数字。数字是代码的一部分的信号是它可以被 3 整除。您可以轻松地处理 15 和 45 等较小的数字,但 144 和 414 等较大的数字有点棘手。编写一个程序来帮助自己快速创建大量用于代码的数字,给定有限数量的板可以使用。
你有 L,一个包含一些数字(0 到 9)的列表。编写一个函数solution(L),找出可以由这些数字中的部分或全部数字组成且能被3 整除的最大数。如果不可能得到这样的数字,则返回0 作为解。L 将包含 1 到 9 位数字。同一个数字可能在列表中出现多次,但列表中的每个元素只能使用一次。
语言
要提供 Java 解决方案,请编辑 Solution.java 要提供 Python 解决方案,请编辑 solution.py
测试用例
您的代码应通过以下测试用例。请注意,它也可能针对此处未显示的隐藏测试用例运行。
-- Java 案例 -- 输入:Solution.solution({3, 1, 4, 1}) 输出:4311
输入:Solution.solution({3, 1, 4, 1, 5, 9}) 输出:94311
-- Python 案例 -- 输入:solution.solution([3, 1, 4, 1]) 输出:4311
输入:solution.solution([3, 1, 4, 1, 5, 9]) 输出:94311
使用 verify [file] 来测试您的解决方案并查看它的效果。完成代码编辑后,使用 submit [file] 提交您的答案。如果您的解决方案通过了测试用例,它将从您的主文件夹中删除。
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public class Solution {
public static int solution(int[] l) {
List<Integer> initList = new ArrayList<>();
List<Integer> resList = new ArrayList<>();
Queue<Integer> rem0queue = new LinkedList<>();
Queue<Integer> rem1queue = new LinkedList<>();
Queue<Integer> rem2queue = new LinkedList<>();
StringBuilder sbResult = new StringBuilder();
int result = 0, sum = 0, rem;
for(int x: l){
if(x < 0) return result;
initList.add(x);
}
Collections.sort(initList);
//System.out.println(initList);
for(int y: initList) {
sum += y;
if((y % 3) == 0) rem0queue.add(y);
else if((y % 3) == 1) rem1queue.add(y);
else rem2queue.add(y);
}
if(sum == 0) return result;
rem = sum % 3;
switch (rem) {
case 0:
resList.addAll(rem0queue);
resList.addAll(rem1queue);
resList.addAll(rem2queue);
resList.sort(Collections.reverseOrder());
for(int x: resList) sbResult.append(x);
result = Integer.parseInt(sbResult.toString());
break;
case 1:
if(!rem1queue.isEmpty()) rem1queue.remove();
else {
if(!rem2queue.isEmpty()) rem2queue.remove();
if(!rem2queue.isEmpty()) rem2queue.remove();
}
resList.addAll(rem1queue);
resList.addAll(rem2queue);
resList.addAll(rem0queue);
resList.sort(Collections.reverseOrder());
for(int x: resList) sbResult.append(x);
//if((Integer.parseInt(sbResult.toString())) % 3 != 0) return result;
result = Integer.parseInt(sbResult.toString());
break;
case 2:
if(!rem2queue.isEmpty()) rem2queue.remove();
else {
if(!rem1queue.isEmpty()) rem1queue.remove();
if(!rem1queue.isEmpty()) rem1queue.remove();
}
resList.addAll(rem2queue);
resList.addAll(rem1queue);
resList.addAll(rem0queue);
resList.sort(Collections.reverseOrder());
for(int x: resList) sbResult.append(x);
//if((Integer.parseInt(sbResult.toString())) % 3 != 0) return result;
result = Integer.parseInt(sbResult.toString());
break;
}
//System.out.println("Sum of digits " + sum + "\n" + "Rem num " + rem + "\n"+ "Result num " + sbResult);
return result;
}
}
解决方案
例如尝试输入数组 {5} 或 {5, 5}
推荐阅读
- python - 如何发布用 Python 创建的报告
- flutter - Flutter 本地通知引发错误
- python - 有没有办法在 Windows 中引用“ipconfig”文件
- amazon-web-services - 带有 EFS 的 AWS 上的 Prometheus Docker - 无写入权限
- python - 确定键盘事件顺序的规则?(Python)
- python - 从 .py 文件导入可视化函数以在 .ipynb 文件中使用
- c# - 通过具有 ef 核心且没有用户定义的表类型的 id 列表查询许多对象
- ruby-on-rails - Rails 5,找不到没有和 ID 的用户。您可以通过表单传递对象吗?
- javascript - Javascript首先从数组中获取数据特定的键
- javascript - 如何使用javascript更改文本的方向