题解 | #删除链表峰值#
删除链表峰值
https://www.nowcoder.com/practice/30a06e4e4aa549198d85deef1bab6d25
考察的知识点:双指针、链表、链表节点的删除;
解答方法分析:遍历链表,若链表仅有首节点则直接返回首节点,若链表仅有收尾节点则不进循坏,同样返回首节点。若链表长度大于等于三,将每个节点的值与其前后节点的值进行比较,如果该节点的值比前后值都大,则删除该节点;
所用编程语言:C++;
完整编程代码:↓
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) : val(x), next(nullptr) {}
* };
*/
class Solution {
public:
ListNode* deleteNodes(ListNode* head) {
if (head->next == nullptr) return head;
ListNode* pre = head;
ListNode* node = head->next;
while (node->next != nullptr) {
if (node->val > pre->val && node->val > node->next->val) {
pre->next = node->next;
}
pre = node;
node = node->next;
}
return head;
}
};
腾讯成长空间 6042人发布