小编kor*_*vin的帖子

如何实现滑动窗口或减少这些嵌套循环?

我试图减少这些循环以优化一些代码。有人建议我使用滑动窗口技术,但似乎无法使其适合我的示例。

我添加括号中的所有内容只是为了表明它们是什么类型。file.get(..)方法从文件中的给定索引返回一个字节。由于这些文件很大,因此外循环可以(通常)在很大的范围内进行迭代。asciiCombo的范围是2-8个元素。

这是一个嵌套循环,我不确定如何减少它:

for (long i = offsetInBytes; i < (long) file.length; ++i) {
        int match = 0;
        for (int j = 0; j < (int[]) asciiCombo.length; ++j) {
            if (file.get(i + j) == asciiCombo[j]) {
                match++;
            } else {
                break;
            }
         }
}
Run Code Online (Sandbox Code Playgroud)

用if语句或某个要查找的集合替换内部循环与嵌套循环本质上是相同的,因此不会执行。我一直无法实现滑动窗口(不确定是否可以实现)。

我一直在这里陷入困境,不胜感激。谢谢!

java algorithm optimization loops

6
推荐指数
1
解决办法
65
查看次数

标签 统计

algorithm ×1

java ×1

loops ×1

optimization ×1