我正在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
作为理所当然的基本贪婪算法。
在两个指针中可以采用哪种贪婪算法?
能帮个例子吗?
答案 0 :(得分:1)
可以在两种方法中使用哪种贪婪算法 指针?
在LeetCode中考虑此问题3sum。
此问题要求在应用两指针方法之前对输入数组进行排序。当您按某种顺序对输入数组进行排序时,这是解决问题的一种非常贪婪的方式。
在LeetCode中考虑另一个问题Container With Most Water。
如果您尚未解决此问题,我不想为您提供扰流器解决方案。但是,要让您了解它与贪婪方法之间的关系,您需要基于数字之间的某种比较来推进左右指针,这实际上是一种“贪婪”。