题解 | #删除链表峰值#

删除链表峰值

https://www.nowcoder.com/practice/30a06e4e4aa549198d85deef1bab6d25

知识点:

链表操作

分析:

我们维护三个指针, 他们分别指向第一二三个节点(a,b,c)当b的值大于a和c的时候就删除这个b节点 (在链表中将a->next赋值为c的地址),此时需要把原来指向b的指针指向c, 把指向c的指针指向d,当不满足上条的条件时, 需要a, b, c的指针整体后移到b, c, d

编程语言:

C++

完整代码:


struct ListNode {
  int val;
  struct ListNode *next;
  ListNode(int x) : val(x), next(nullptr) {}
};


    ListNode* deleteNodes(ListNode* head) {
        if (!head || !head->next) return head;
        auto p = head;
        auto q = head->next;
        while (q->next) {
            if (p->val < q->val && q->val > q->next->val) {
                p->next = q->next;
                q = q->next;
            } else {
                p = q;
                q = q->next;
            }
        }
        return head;
    }

全部评论

相关推荐

07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务