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);}
}
因为两个数组要一模一样,所以从第一位开始就要一样,用双指针,不一样的话就让较小的数与后面合并,再小就再合并,直到两个指针指到的数字一样再一起前进。