私信TA

用户名:Praguetramp

访问量:30953

签 名:

等  级
排  名 20
经  验 20190
参赛次数 0
文章发表 130
年  龄 0
在职情况 待业
学  校
专  业

  自我简介:

aura

解题思路:   建立两个对象数组,查找arr1中是否含arr2中的id,若有则删除。

注意事项:   判断循环位置时,需要注意删除元素后,arr1的结构发生变化,需要从下标0重新开始查找

参考代码:

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

public class Main {
	int id ,score;
	Main(int id,int score) {
		this.id=id;this.score=score;
	}
	public String toString() {
		return ""+id+" "+score;
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n=in.nextInt(),m=in.nextInt();
		ArrayList<Main> arr1= new ArrayList<Main>();
		ArrayList<Main> arr2= new ArrayList<Main>();
		for(int i=0;i<n;i++) {
			arr1.add(new Main(in.nextInt(), in.nextInt()));
		}
		for(int i=0;i<m;i++) {
			arr2.add(new Main(in.nextInt(), in.nextInt()));
		}
		int k=0;               //用来记录删除节点后的循环起点
		while(k<arr1.size()) {
			int i=k,flag=0;       //flag用来标记当前循环是否删除了符合条件的节点
			for(int j=0;j<arr2.size();j++) {
				if(arr1.get(i).id==arr2.get(j).id)
				{
					arr1.remove(i);   //删除节点
					flag=0;           //置为0表示arr1数组结构已经改变,需要移动起点k
					break;           
				}else {
					flag++;
				}
			}
			if(flag!=0)          //如果没删除节点,则起点为k的下一位置k+1
				k++;
			else
				k=0;             //如果删除过节点,则起点重新为0,即从arr1[0]开始查找
		}
		System.out.println(arr1.size());
		for(Main o:arr1)
			System.out.println(o);
		in.close();
	}
}


 

0.0分

0 人评分

  评论区

  • «
  • »