判断单链表中元素是否递增的算法java
时间: 2024-09-28 19:03:10 浏览: 33
Java编程实现递增排序链表的合并
判断单链表中元素是否递增的算法通常涉及遍历链表并比较当前节点的值与其前一个节点的值。以下是使用Java编写的简单示例:
```java
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public boolean isMonotonic(ListNode head) {
if (head == null || head.next == null) {
return true; // 空链表或只有一个节点都是单调递增的
}
ListNode prev = head;
boolean increasing = false; // 标记初始状态为非递增
ListNode curr = head.next;
while (curr != null) {
if (increasing) {
// 如果已经是递增状态,检查下一个节点是否更大
if (curr.val <= prev.val) {
increasing = false; // 转变为非递增
}
} else { // 否则,如果递减,则检查下一个节点是否更小
if (curr.val >= prev.val) {
increasing = true; // 转变为递增
}
}
prev = curr;
curr = curr.next;
}
return !increasing; // 返回最后的状态,如果一直是递增的则返回false
}
```
这个函数首先检查链表是否为空或只有一个节点,然后遍历链表,每次比较当前节点和前一个节点的值,并更新递增标志。如果在整个过程中都没有改变递增状态,说明链表是递增的。
阅读全文