题解 | #牛群的喂养顺序#
牛群的喂养顺序
https://www.nowcoder.com/practice/ce8860b6a8c74dfd8ccd15998970e447
知识点
数组
解题思路
用一个parent数组来存储每个元素到达的前置条件,如果在查找a[i]中发现要到达这个地方时需要用到当前元素b
[i],代表存在闭环返回false,如果没有出现,再把到达a[i]的parent设置为b[i]。
Java题解
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numCows int整型 * @param feedOrders int整型二维数组 * @return bool布尔型 */ int[] parent; public boolean canFeedAllCows (int numCows, int[][] feedOrders) { // write code here parent = new int[numCows]; for(int i = 0; i < numCows; i++){ parent[i] = i; } for(int i = 0; i < feedOrders.length; i++){ if(findParent(feedOrders[i][1],feedOrders[i][0])){ parent[feedOrders[i][0]] = feedOrders[i][1]; } else { return false; } } return true; } //查找父元素 public boolean findParent(int i, int num){ if(parent[i] == i) return true; if(parent[i] == num) return false; return findParent(parent[i],num); } }