小编ash*_*164的帖子

懒惰的调酒师算法

我在其中一次采访中发现了以下问题.请建议我这个算法.我不需要代码.

  • N很多可能的饮料.(n1,n2 ..)
  • C多少固定客户.
  • 每个顾客都有固定喜欢的饮料.
  • 调酒师必须创造尽可能少的饮料以满足所有顾客的需求

例:

Cust1: n3,n7,n5,n2,n9  
Cust2: n5  
Cust3: n2,n3  
Cust4: n4  
Cust5: n3,n4,n3,n5,n7,n4    

Output: 3(n3,n4,n5)  
Run Code Online (Sandbox Code Playgroud)

algorithm data-structures

6
推荐指数
1
解决办法
3412
查看次数

无法将char []转换为java 8中的流

我正在编写一个程序,其中一个方法将char [] []作为输入并返回char [].方法如下 -

private static char[] getTableFromTwoChits(char[][] inputTwoChits) {
    Map<Character, Character> map = new HashMap<>();
    Arrays.stream(inputTwoChits).forEach(x -> map.put(x[0], x[1]));
    map.entrySet().forEach(System.out::println);
    char[] result = new char[inputTwoChits.length+1]; int index=0;
    char startPoint = inputTwoChits[0][0];
    do {
       result[index] = startPoint;index++;
       startPoint = map.get(startPoint);
    }while(startPoint != inputTwoChits[0][0]);
    result[index] = startPoint;
    return result;
}
Run Code Online (Sandbox Code Playgroud)


主要方法如下 -

public static void main(String[] args) {
    char[][] inputTwoChits = {{'A','B'},{'C','D'},{'B','C'},{'E','F'},{'F','A'},{'D','E'}};
    char[] outputTwoChits = getTableFromTwoChits(inputTwoChits);
    Arrays.stream(outputTwoChits).forEach(System.out::println);

}
Run Code Online (Sandbox Code Playgroud)


方法getTableFromTwoChits()中的第2行正在编译,而main方法的第3行没有编译.
请解释这种行为背后的原因是什么?

编译错误如下所述 -

/CircularTableTwoChits.java:21: error: no suitable method found for stream(char[]) …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

6
推荐指数
4
解决办法
1557
查看次数

何时在树中使用父指针?

在许多问题中,我们需要重复查找树中节点的父节点或祖先节点。因此,在这些场景中,一种不太复杂的方法似乎是使用父指针,而不是在运行时查找父节点。这样既节省时间,又增加空间。任何人都可以建议,在哪种问题或场景中,建议在树中使用父指针?

例如 - 树的两个节点之间的距离?

algorithm optimization data-structures

5
推荐指数
1
解决办法
2422
查看次数