17106合并数列
17106合并数列
⭐️难度:困难
2023,国赛,模拟
🌟考点:双指针
📖
📚
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] a = new int[n+1];
int[] b = new int[m+1];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
for (int i = 0; i < m; i++) {
b[i] = sc.nextInt();
}
int i = 0,j = 0;
int ans = 0;
while(i < n && j < m){
if(a[i] == b[j]){
i ++; j ++;
}else if(a[i] < b[j]){
a[i + 1] += a[i];
ans ++; i ++;
}else if(b[j] < a[i]){
b[j + 1] += b[j];
ans ++; j++;
}
}
System.out.println(ans);
}
}
因为两个数组要一模一样,所以从第一位开始就要一样,用双指针,不一样的话就让较小的数与后面合并,再小就再合并,直到两个指针指到的数字一样再一起前进。