[英]Google coding challange work scheduling code
我有一個谷歌 foobar 挑戰:
編寫一個名為 answer(data, n) 的 function,它接受少於 100 個整數的列表和一個數字 n,並返回相同的列表,但所有出現次數超過 n 的數字都被完全刪除。 返回的列表應保留與原始列表相同的順序 - 您不想混淆那些精心計划的輪班輪換,例如,如果數據為 [5, 10, 15, 10, 7] 並且 n 為 1, answer(data, n) 將返回列表 [5, 15, 7] 因為 10 出現了兩次。 因此完全從列表中刪除。
這是我的回答:
public static int[] solution(int[] data, int n) {
// Your code here
int count,c=0;
int flag[]=new int[1000];
int b[]=new int[data.length];
for(int i=0;i<data.length;i++)
{ count=0;
if(flag[(data[i])]==0)
{
for(int j=0;j<data.length;j++)
{
if(data[i]==data[j])
count++;
}
if(count>n)
flag[(data[i])]=1;
else
{
flag[(data[i])]=2;
b[c++]=data[i];
}
}
else if(flag[(data[i])]==2)
{
b[c++]=data[i];
}
}
if(c==(data.length))
{
return b;
}
if(c==0)
{
int ne[]=new int[0];
return ne;
}
else
{
int ne[]=new int[c];
for(int k=0;k<c;k++)
{
ne[k]=b[k];
}
return ne;
}
}
它通過了 8 個測試用例,但最后一個測試用例失敗了,我無法弄清楚測試用例可能是什么,因為那個是隱藏的用例。 任何的想法?
通常,在嘗試查找問題時,您會運行測試。 我把你的代碼片段變成了我可以寫的 class。
我格式化了你的代碼,以便更清楚地看到你在做什么。 使用更具描述性的變量名稱會有所幫助。 另外,不要依賴不需要大括號的 if 或 for 循環的單個語句。 第一次嘗試添加一行代碼時,忘記了大括號,祝調試順利。
這是我創建的測試 class。 在嘗試了大約兩打不同的 N 值和輸入值后,我找不到任何東西。
import java.util.Arrays;
public class GoogleChallenge {
public static void main(String[] args) {
int[] data = { 5, 10, 15, 10, 7, 888, 999, 999, 0 };
int n = 1;
System.out.println("input: n: " + n + " " + Arrays.toString(data));
System.out.println("Output: " + Arrays.toString(solution(data, n)));
}
public static int[] solution(int[] data, int n) {
// Your code here
int count, c = 0;
int flag[] = new int[1000];
int b[] = new int[data.length];
for (int i = 0; i < data.length; i++) {
count = 0;
if (flag[(data[i])] == 0) {
for (int j = 0; j < data.length; j++) {
if (data[i] == data[j]) {
count++;
}
}
if (count > n) {
flag[(data[i])] = 1;
} else {
flag[(data[i])] = 2;
b[c++] = data[i];
}
} else if (flag[(data[i])] == 2) {
b[c++] = data[i];
}
}
if (c == (data.length)) {
return b;
}
if (c == 0) {
int ne[] = new int[0];
return ne;
} else {
int ne[] = new int[c];
for (int k = 0; k < c; k++) {
ne[k] = b[k];
}
return ne;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.