java - 在列表 java 中查找 Max Item
问题描述
我的作业需要帮助
我的问题是:如何完成下面的findMaxItem方法,返回一个指向参数ptr给出的链表最大元素的指针,如果链表为空则返回null。解决方案必须是递归的。
这是我的回答,但不正确:
public static Node findMaxItem (Node ptr) {
if (ptr == null) {
return null;
} else {
if (ptr.next.data > ptr.data) {
Node n = ptr.next;
if (ptr.next.data >= n.data) {
n = ptr.next;
//ptr = n.next;
findMaxItem(n);
} else {
ptr = ptr.next;
findMaxItem(ptr);
}
ptr = n.next;
findMaxItem(ptr);
ptr = n;
}
// ptr = ptr.next;
// findMaxItem(ptr);
}
return ptr;
}
谢谢大家的帮助:)
解决方案
你至少第一部分是正确的:如果列表为空,则返回null
。这是递归的基本情况。
if (ptr == null) return null;
您打算在其余情况下使用递归。但是怎么做?
如果列表不为空,您可以将其分为两部分:第一项和列表的其余部分。它会帮助您在列表的其余部分中“找到最大项目”吗?
Node restOfTheList = ptr.next;
Node maxOfRestOfTheList = findMax(restOfTheList);
现在您有了第一个项目,由 引用ptr
,以及列表其余部分中具有最大价值的项目。如果您比较其中的数据,您可以找出哪个具有最大价值。无论它是什么,那都是具有最大项目的节点。那有意义吗?
if data of "ptr" is greater than data of "maxOfRestOfTheList": return ptr
else: return maxOfRestOfTheList;
您还必须处理列表中只有一项的情况。在那种情况下restOfTheList
是空的。
推荐阅读
- excel - 如何将类别列旋转到每个类别的各个列
- javascript - Highcharts 流图 Y 轴标签
- javascript - Errno 11001 getaddrinfo 失败 - Puppeteer 和 Robotframework
- go - 连接删除服务器 grpc - 恐慌:收到的消息大于最大值
- maven - 通过 Jenkins 为不同环境构建 maven Artifacts
- java - 如何在使用 ContextMenuItemSelected 长按时从 ExpandableListView 中删除项目?
- c++ - 在简单的 C++ 程序中,地址清理程序未检测到内存泄漏
- php - AH01328:行太长 + AH01102:从远程服务器读取状态行错误 + AH00898:从远程服务器读取错误
- android - 在 OBOE 中打开音频流时字段被覆盖
- java - Java HttpURLConnection Digest Authentication 得到 401