关于leetcode 80的问题

来源:3-4 即使简单的问题,也有很多优化的思路

黑白琴键3675322

2024-12-24

老师你好,对于leetcode-80这个问题,如果我秉持着维护一个[0,k]的区域,这个区域表示已经处理过的数据,后续的元素和索引为k的元素进行对比,符合条件加到这个区域中并且k++。

基于以上思路我写出的代码在leetcode上可以获得通过,但是我看leetcode官方提到了一种快慢指针的思路,我阅读了它的代码 好像也没法像我前面描述的思路一样去完全依靠自己来写出正确的代码,是我对快慢指针思路理解的不够吗?

因此我的问题是

  1. 如何通过阅读别人的代码来学习算法设计思路,进而写出正确的代码?就像如果我如果没有学习过三路快速排序,单看代码我肯定是无法理解并自己独立写出正确的代码,但是我学习了之后就可以用把数据分成三个区域的思路,维护三个区域的性质,进而写出正确的代码。
  2. 如何理解快慢指针法进而解决这个问题?
写回答

1回答

liuyubobobo

2025-01-06

1.

你说:“如果我如果没有学习过三路快速排序,单看代码我肯定是无法理解并自己独立写出正确的代码,但是我学习了之后就可以用把数据分成三个区域的思路,维护三个区域的性质,进而写出正确的代码。


这就是学习的目的呀。也是我们学习经典算的目的。我们学习大量经典算法,不是因为我们以后要在工作中重新实现这些经典算法。事实上,这些经典算法已经被前人实现好,并且很好地封装好了。我们直接调用就好了。我们之所以要学习他们,就是因为这些经典算法背后蕴含着这类“算法思想”,这类算法思想可以在今后帮助我们运用在解决其他问题上。


2

请具体描述你不理解的地方。


继续加油!:)

0
0

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7433 学习 · 1159 问题

查看课程