牛牛有两个长度为的数组,牛牛希望统计有多少数对满足:
1,
2,
import java.util.*; public class Solution { /** * 计算有多少对符合条件的数对 * @param a int整型一维数组 数组a * @param b int整型一维数组 数组b * @return int整型 */ public int countLR (int[] a, int[] b) { int count = 0; for(int i = 0;i < a.length;i++){ int less = a[i]-2*b[i]; if(less == 0){ count++; } for(int j = i+1;j < a.length;j++){ less += a[j]+ b[j-1]-b[j]; if(less == 0){ count++; } } } return count; } }
import java.util.*; public class Solution { /** * 计算有多少对符合条件的数对 * @param a int整型一维数组 数组a * @param b int整型一维数组 数组b * @return int整型 */ public class Solution { /** * 计算有多少对符合条件的数对 * @param a int整型一维数组 数组a * @param b int整型一维数组 数组b * @return int整型 */ public int countLR (int[] a, int[] b) { // write code here if(a==null||a.length==0) return 0; int n = a.length; int count = 0; int sumA = 0; for(int l=0;l<=n-1;l++){ sumA += a[l]; int sumB = 0; for(int r=l;r<n;r++){ if(r!=l) sumB += a[r]; if(sumA+sumB==(b[l]+b[r])) count++; } sumA -= a[l]; } return count; } }暴力解法,符合两个条件就行
import java.util.*; public class Solution { /** * 计算有多少对符合条件的数对 * @param a int整型一维数组 数组a * @param b int整型一维数组 数组b * @return int整型 */ public int countLR (int[] a, int[] b) { // write code here int n = a.length; int[] sum = new int[n]; sum[0] = a[0]; for(int i=1; i<n; i++){ sum[i] = sum[i-1]+a[i]; } int count = 0; for(int l=0; l<n; l++){ for(int r=l; r<n; r++){ if(r==l){ if(a[r] == b[r]+b[l]){ count++; } }else if(l<r){ if(sum[r]-sum[l]+a[l] == b[r]+b[l]){ count++; } } } } return count; } }