大家好!今天,我在 leetcode 上解决了三个问题:“查找字符串中的所有字谜”、“最长连续序列”和“在旋转排序数组中搜索”。这些问题确实很有趣,我们有不同的逻辑方法来解决它们。它们是检查两个字符串是否是字谜以及在数组中搜索目标元素的经典问题的扩展。
查找字符串中的所有字谜 这个问题可以通过滑动窗口技术来解决。我们应该扫描输入数组,同时跟踪固定长度的连续元素。我们检查该段是否是目标字符串的字谜。如果是,我们将索引添加到结果数组中;如果没有,我们忽略该索引。这样我们就可以解决问题了。
最长连续序列:为了解决这个问题,我们首先使用集合消除重复元素。我们遍历数组并检查是否存在本质上连续的元素序列( 1 或 -1)。如果它存在,那么我们会记录它的长度,否则,我们会忽略它。这样我们就可以找出最长连续序列的长度。
在旋转排序数组中搜索:我们可以使用二分搜索方法来解决这个问题。我们将输入数组分为两半。然后,我们确定哪一半已排序,然后对该一半进行二分搜索以找到目标元素。如果目标不在已排序的一半中,我们将继续在未排序的一半中搜索目标元素。如果在两半中都没有找到目标元素,则返回 -1。这样就可以解决这个问题了。