有个算法题目没明白啥意思,帮忙分析下

有个算法题目没明白啥意思,帮忙分析下

        int[][] deges = {{0,0,3,2},{1,2,0,1}};
		int nodeCount = 4;
		
		//Map<Integer,List<Integer>>为一个node
		ArrayList<Map<Integer,List<Integer>>> order = new ArrayList<Map<Integer,List<Integer>>>();
		//做为循环结束的判断标志
		Map<Integer,Integer> nodes = new HashMap<Integer, Integer>();
		for(int i = 0; i < nodeCount; i ++) {
			nodes.put(0, deges[0][i]);
		}
		while(nodes.size() > 0) {
			for(int i = 0; i < nodeCount; i ++) {
				int pre = deges[0][i];
				int suf = deges[1][i];
				for(Map<Integer,List<Integer>> node : order) {
					//node的前驱 等于 后继,建立newNode插入node之前,并从nodes中删除此点
					if(node.containsKey(suf)) {
						Map<Integer,List<Integer>> newNode = new HashMap<Integer,List<Integer>>();
						List<Integer> newSuf = new ArrayList<Integer>();
						newSuf.add(suf);
						newNode.put(pre, newSuf);
						int index = order.indexOf(node);
						order.add(index, newNode);
					}
					//node的后继 等于 前驱,建立newNode插入node之后,并从nodes中删除此点
					
					//node的前驱 等于 前驱,将suf加入node的后继列表中,并从nodes中删除此点
					
				}
			}
		}

大概是这么个逻辑吧,没细写

二维数组就标志了线段连接的前一个节点和后一个节点,目的就是为了把一个混乱的数组有序化。

 

题目的意思就,用节点和边表示流程图,节点就是节点,边是方向,比如从3节点到0节点3->0就是[3,0]

节点数量应该是输出结果的节点数量,按示例来说有两个流程,一个3021一个301

4个节点是3021,3个节点是301

所以意思就是,用所给的边的方向,输出要求的节点数的结果