Acwing---800.数组元素的目标和

数组元素的目标和

  • 1.题目
  • 2.基本思想
  • 3.代码实现

1.题目

给定 n n n 个区间 [ l i , r i ] [li,ri] [li,ri],要求合并所有有交集的区间。

注意如果在端点处相交,也算有交集。

输出合并完成后的区间个数。

例如: [ 1 , 3 ] [1,3] [1,3] [ 2 , 6 ] [2,6] [2,6]可以合并为一个区间 [ 1 , 6 ] [1,6] [1,6]

输入格式
第一行包含整数 n n n

接下来 n n n 行,每行包含两个整数 l l l r r r

输出格式
共一行,包含一个整数,表示合并区间完成后的区间个数。

数据范围
1 ≤ n ≤ 100000 , 1≤n≤100000, 1n100000,

− 109 ≤ l i ≤ r i ≤ 109 −109≤li≤ri≤109 109liri109

输入样例:

5
1 2
2 4
5 6
7 8
7 9

输出样例:

3

2.基本思想

双指针

3.代码实现

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;

public class _800数组元素的目标和 {
    static Scanner sc = new Scanner(System.in);
    static int N = 100010;
    static int[] a = new int[N];
    static int[] b = new int[N];

    public static void main(String[] args) {
        int n = sc.nextInt(), m = sc.nextInt(), x = sc.nextInt();
        for (int i = 0; i < n; i++) a[i] = sc.nextInt();
        for (int i = 0; i < m; i++) b[i] = sc.nextInt();

        for (int i = 0, j = m - 1; i < n; i++) {
            while (j >= 0 && a[i] + b[j] > x) j--;
            if (b[j] + a[i] == x) {
                System.out.println(i + " " + j);
                break;
            }
        }
    }
}

你可能感兴趣的:(#,Acwing,刷题,java,算法,开发语言)