我是靠谱客的博主 淡淡抽屉,最近开发中收集的这篇文章主要介绍Leetcode面试高频题汇总,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 栈篇
        • 01 用队列实现栈
        • 02 栈实现队列
        • 03 包含min函数的栈
        • 04 合法的出栈序列
    • 链表篇
        • 01 链表逆序a
        • 02 链表逆序b
        • 03 两个链表的交点
        • 04 链表求环
        • 05 链表划分
        • 06 两个链表合并
        • 07 两个链表的交点
        • 08 两个链表的交点
        • 09 两个链表的交点
        • 10 两个链表的交点
    • 动态规划篇
        • 01 什么是动态规划
        • 02 两个链表的交点
        • 03 两个链表的交点
        • 04 两个链表的交点
        • 05 两个链表的交点
        • 06 两个链表的交点
        • 07 两个链表的交点
        • 08 两个链表的交点
        • 09 两个链表的交点
        • 10 两个链表的交点

栈篇

01 用队列实现栈

描述

用队列实现栈的下列操作:
push(x) —— 元素x入栈;pop() —— 删除栈顶元素;top()—— 获取栈顶元素;empty()—— 返回栈是否为空。
注意
只能使用push_back(x)pop_front()

思路

每次插入新元素的时候,建立一个临时队列。先把该元素放到该临时队列中;然后把原结果队列中的元素依次加入到临时队列末尾。

解法
mystack.h

02 栈实现队列

描述

用栈实现队列的下列操作:
push(x) —— 将元素x放入队列尾部;pop() —— 删除队首元素;top()—— 获取队首元素;empty()—— 返回队列是否为空。

思路
在插入元素的时候建立一个临时栈,先把原栈中的元素都push到这个临时栈中,然后把要新来的元素放到原栈中,再把临时栈中的元素push到原栈中
在这里插入图片描述
解法
myqueue.h

03 包含min函数的栈

描述

设计一个栈,包含以下操作:
1、push(x) —— 元素x入栈;pop() —— 删除栈顶元素;top()—— 获取栈顶元素;getMin()—— 返回栈内最小元素。
2、这些操作的算法复杂度需要是常数级,O(1)

思路
在这里插入图片描述
解法
minStack.h

04 合法的出栈序列

描述+思路
在这里插入图片描述
解法
checkOrder.cpp

链表篇

01 链表逆序a

描述

反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

思路
需要2个辅助指针。
在这里插入图片描述
解法
reverseList.h

02 链表逆序b

描述
在这里插入图片描述
思路
需要四个辅助指针

找到指定位置的结点m和结点n ,以及结点m-1 和结点n+1。
然后利用这四个结点,可以进行逆转

解法
reverseBetween.h

03 两个链表的交点

描述
在这里插入图片描述
思路
在这里插入图片描述
解法
getIntersectionNode.h

04 链表求环

描述
在这里插入图片描述
思路
在这里插入图片描述
解法
hasCycle.cpp

05 链表划分

描述

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入: head = 1->4->3->2->5->2, x = 3
输出: 1->2->2->4->3->5

思路

建立两个临时结点
然后遍历该链表
大的元素放在第一个临时结点建立的链表里面
小的元素放在第二个临时结点建立的链表里面

解法
partition.cpp

06 两个链表合并

描述
在这里插入图片描述
思路
在这里插入图片描述
解法
partition.cpp

07 两个链表的交点

描述
思路
解法
reverseBetween.h

08 两个链表的交点

描述
思路
解法
reverseBetween.h

09 两个链表的交点

描述
思路
解法
reverseBetween.h

10 两个链表的交点

描述
思路
解法
reverseBetween.h

动态规划篇

01 什么是动态规划

在这里插入图片描述

说人话 动态规划就是
1、把原来的问题分解成了几个相似的子问题。(强调“相似子问题”)
2、所有的子问题都只需要解决一次。(强调“只解决一次”)
3、储存子问题的解。(强调“储存”)

02 两个链表的交点

描述
思路
解法
reverseBetween.h

03 两个链表的交点

描述
思路
解法
reverseBetween.h

04 两个链表的交点

描述
思路
解法
reverseBetween.h

05 两个链表的交点

描述
思路
解法
reverseBetween.h

06 两个链表的交点

描述
思路
解法
reverseBetween.h

07 两个链表的交点

描述
思路
解法
reverseBetween.h

08 两个链表的交点

描述
思路
解法
reverseBetween.h

09 两个链表的交点

描述
思路
解法
reverseBetween.h

10 两个链表的交点

描述
思路
解法
reverseBetween.h

最后

以上就是淡淡抽屉为你收集整理的Leetcode面试高频题汇总的全部内容,希望文章能够帮你解决Leetcode面试高频题汇总所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部