某校大門外長度為 ll 的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是 11 米。我們可以把馬路看成一個數軸,馬路的一端在數軸 00 的位置,另一端在 ll 的位置;數軸上的每個整數點,即 0,1,2,\dots,l0,1,2,…,l,都種有一棵樹。
由于馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止點的坐標都是整數,區域之間可能有重合的部分。現在要把這些區域中的樹(包括區域端點處的兩棵樹)移走。你的任務是計算將這些樹都移走后,馬路上還有多少棵樹。
代碼
import java.util.*;
public class Main {public static void main(String args[]){int l,n;Scanner sc = new Scanner(System.in);l = sc.nextInt();//馬路長度n = sc.nextInt();//區域數目int[] ar = new int[l+1];//這里數組長度要加1因為樹木有(l+1)棵for(int i = 0;i<n;i++){int x = sc.nextInt();//第i個區域起始坐標int y = sc.nextInt();//第i個區域終止位置for(int j = x;j<=y;j++){ar[j] = 1;//將區域內的坐標置1,定義數組時默認為0}}int count = 0;for(int k = 0;k<=l;k++){if(ar[k]==0)count++;//統計沒有被移除的樹木}System.out.println(count);}}
這里有兩重循環,還好時間沒有超時,一定還有更好的方法