两种指针技术(快速和慢速奔跑)中的贪婪算法

时间:2019-04-19 14:50:11

标签: java algorithm

我正在Two-pointer Technique - Scenario II中学习两点技术

它引入了快速游标指针和慢速游标指针来移动元素并返回新的长度

public int removeElement(int[] nums, int val) {
    int k = 0;
    for (int i = 0; i < nums.length; ++i) {
        if (nums[i] != val) {
            nums[k] = nums[i];
            k++;
        }
    }
    return k;
}

摘要如下:

这是在需要时使用两指针技术的非常常见的情况:

  

同时运行一台慢速运行器和一台快速运行器。

解决此类问题的关键是

  

确定两个指针的移动策略。

类似于先前的场景,有时您可能需要sort使用两指针技术之前的数组。并且您可能需要greedy的思想来确定您的运动策略。

参考

  

您可能需要greedy的思想来确定您的运动策略。

greedy令人困惑,因为我们将greedy作为理所当然的基本贪婪算法。

在两个指针中可以采用哪种贪婪算法?

能帮个例子吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

  

可以在两种方法中使用哪种贪婪算法   指针?

在LeetCode中考虑此问题3sum

此问题要求在应用两指针方法之前对输入数组进行排序。当您按某种顺序对输入数组进行排序时,这是解决问题的一种非常贪婪的方式。

在LeetCode中考虑另一个问题Container With Most Water

如果您尚未解决此问题,我不想为您提供扰流器解决方案。但是,要让您了解它与贪婪方法之间的关系,您需要基于数字之间的某种比较来推进左右指针,这实际上是一种“贪婪”。