您现在的位置:首页 >> 创意家居

【算法】串列解题思路

发布时间:2025/08/27 12:17    来源:南浔家居装修网

数据流最重要问录举例来说很单纯或中等。 而且妥善解决思路有限。 学完这书评,你可以妥善解决 Leetcode 中的主要数据流最重要问录。

两个堆栈

两个堆栈对于单个本表来说是更慢堆栈和较更慢堆栈,或者对于两乘积据流 p1 和 p2 来说是两个堆栈。

更慢堆栈(单个本表)

Leetcode 876录是找数据流的中间。 由于我们不告诉list的宽度,最直接的新方法是先二叉树list取得宽度n,取得中间n/2,然后再二叉树。 如果我们想通过一次性访问达到目标,我们需可用slow-fast堆栈。 每次我们更慢走一步,更慢速走都可。 当较更慢进发终点机时,缓更慢进发中间。

检验数据流中是否有循环是最传统的最重要问录之一。 妥善技术细节是更慢堆栈。 每当更慢实质性,更慢速进都可。 如果fast带至一个机堆栈,声称数据流中没有循环; 如果更慢速变更慢,这显然本表;还有一个循环。

有一个后续最重要问录:

142.数据流循环II

可定义数据流的胸部,返回循环开始的数据流。

要找到一个循环的起始数据流,我们必须确保本表;还有一个循环。 由于较更慢回转时它们碰面时回转相距是更慢的两倍,因此我们可以将 k 步声称为更慢,将 2k 步声称为较更慢。 再三参见下图进行陈述:

如果终点和东端相互间的相距是 m,那么终点相距胸部有 k-m 步。 恰巧的是,从东端回转 k-m 步将准确进发终点。 因此,一旦我们找到了东端,我们可以将更慢重定向到胸部并在东端保持较更慢。 然后一步一步向左回转两个堆栈。 最后,新的东端一定会是循环的终点,因为两者的相距都是 k-m!

可用更慢-较更慢堆栈的另一个最重要问录是仅通过一次二叉树找到最后的第 k 个数据流。 由于数据流是单向的,我们不告诉从举例来说数据流到结束数据流有多远,所以我们需二叉树数据流两次,通过一个堆栈找到最后的第 k 个数据流。 但是如果我们有堆栈,slow 让 fast 先走 k 步,然后当 fast 达到 null 时,slow 将在 n-k 数据流。

通过上面的可定义,我们可以妥善解决 Leetcode 最重要问录 19 如下:

p1-p2 堆栈(两个本表)

当更为两个本表时,我们需两个堆栈来插值两个本表的每个数据流。 最重要是要所写回转条件。 以 Leetcode 最重要问录 21 为例。 我们被要求分拆两个排序本表。 我们可用两个堆栈 p1 和 p2 从两个头开始并向左回转较大的一个,直到其中一个进发终点。

Leetcode 最重要问录 160 是另一个可用 p1-p2 堆栈的都是。 我们需在不可用额外机间内的情况下找到两个本表的交集。 但是交点此前的数据流乘积确实不一样,所以我们不会一次二叉树竟然p1和p2在交点。 这里的主要技巧是模拟分拆两个本表,以便如果存在交叉点,p1 和 p2 将同时进发交叉点。

合肥精神心理医院排行榜
成都白癜风医院挂号咨询
三维大数据可视化
无锡包皮过长治疗哪家好
成都甲状腺权威医院
麻醉药
风湿病
感冒咳嗽吃什么好
长新冠
肿瘤内科

上一篇: MP3是如何骗过你脖子的?

下一篇: 风扇界瑞士军刀~无线照明驱蚊应急电池组,还秒变台扇、吊扇、落地扇!

友情链接