暴力匹配中常常会用到双重循环,而匹配的形式不同,循环的条件也会不同。以下时两种暴力匹配的形式。
1.有序匹配:即匹配(a1,a2)不等同于(a2,a1)。则使用以下循环;
for(i=0;i<n;i++) { for(j=0;j<n;j++) }
2.无序匹配:即匹配(a1,a2)等同于(a2,a1)。则使用以下循环;
for(i=0;i<n-1;i++) { for(j=i;j<n;j++) }
以上可以看出二者的两个区别:
第一,有序匹配的内循环要从0开始,而无序匹配的内循环要从i开始;
第二,有序匹配外循环要重复n次即所有元素都要参与外循环匹配,无序匹配外循环只重复 n-1次,其中第n个元素无需参加外循环;
值得注意的是当匹配需要跳过自身匹配,即(ai,ai)时,无序匹配应该从i+1开始扫描。
参考练习题:leetcode #1 两数之和