下面给出方法的描述,这是我到目前为止的代码。我正在为一个在线动物园编程,客户在那里订购了一堆动物,我需要告诉客户我是否有他要求的动物。库存中的动物和客户的请求列表都按零售价值的降序排列。因此,如果客户订购了两只猎豹,它们将同时出现在清单和他的清单中。有人能告诉我我做错了什么吗?此外,我无法使用任何排序算法,任何计数算法或任何Java功能。它是一个简单的数组操作项目,我需要完成使用循环和条件。
* Checks if a list of items is contained in the current list. If the list
* of items has duplicates then the current list must have that many of the
* item as well. (In other words, this method will return true if ALL of the
* items in the parameter are contained in the current list. If anything is
* missing, then the return value will be false.)
*
* @param listToCheck
* list of items that may or may not be a subset of the current
* list
* @return true if the parameter is a subset of the current list; false
* otherwise
public boolean checkAvailability(SortedListOfImmutables listToCheck) {
int pos = 0;
for(int i = 0; i<items.length; i++){ //items is the original array
if(listToCheck.items[0].equals(items[i])){
pos = i;
break;
}
}
int availableCounter = 0;
for(int i = 0; i<listToCheck.items.length; i++){
if(listToCheck.items[i].equals(items[pos])){
pos++;
availableCounter++;
}
else
pos++;
}
if(availableCounter == listToCheck.items.length-1){
return true;
}
return false;
}
答案 0 :(得分:1)
我会采用不同的方法。我的算法将遍历整个列表。由于整个列表和请求列表都已排序,您可以遍历整个列表,同时查看请求列表的头部以查找匹配项。如果达到匹配,您可以增加表示请求列表索引的变量,继续下一个“请求项”并与整个列表中的下一个项进行比较。冲洗并重复......
请参阅以下代码以获得进一步说明:
public boolean checkAvailability(SortedListOfImmutables listToCheck) {
int availableCounter = 0;
for(int i = 0; i<items.length; i++){ //items is the original array
if(listToCheck.items[availableCounter].equals(items[i])){
if (++availableCounter == listToCheck.items.length)
return true;
}
}
return false;
}
这会解决您的问题吗?如果您不明白,请随时提出问题,如果这不能解决您的问题,请告诉我。