小编Gil*_*oot的帖子

二叉树顶视图的歧义

二叉树的顶视图究竟是什么?

我从我找到的文章中发现了很大的歧义和缺乏清晰度。

例如,这是用于演示geeksforgeeks上的顶视图的内容

       1
    /     \
   2       3
  /  \    / \
 4    5  6   7

Run Code Online (Sandbox Code Playgroud)

他们继续说顶视图是 4 2 1 3 7。这里的问题是他们对不是顶视图的东西留下了很多猜测。因此,在代码中实现变得模棱两可。

到目前为止,Stackoverflow示例也好不到哪里去Hackerrank的例子更糟。

所以我希望有人能明确地告诉我顶视图是什么,因为我一直试图找出 2 天。例如,这棵树的顶视图是什么:

      1
       \
        14
       /  \
      3    15
     / \
    2   7
       /  \
      4     13
     / \   /
    5   6 10
         /  \
        8    11
         \    \
          9    12

Run Code Online (Sandbox Code Playgroud)

如果我可以大胆地问,为什么这很重要?

binary-tree data-structures

7
推荐指数
1
解决办法
267
查看次数

在三个片段之间共享 ViewModel

我有三个片段 A、B 和 C。B 和 C 是 A 的子片段。如何让这三个片段共享相同的视图模型。从这篇中等文章中,这是我应该做的:


viewModel = activity?.run {
        ViewModelProviders.of(this)[SharedViewModel::class.java]
    } ?: throw Exception("Invalid Activity")       
}
Run Code Online (Sandbox Code Playgroud)

然而,这个是关于在两个片段和一个活动之间共享一个视图模型,所以在我的情况下它不能正常工作。

java android android-fragments kotlin android-viewmodel

2
推荐指数
1
解决办法
409
查看次数

使用 viewModel 从 ChildFragment 访问 ParentFragment 中的 ViewModel

我正在尝试使用访问ParentViewModelfor 。这是我的代码。ParentFragmentChildFragmentviewModels


// In ParentFragment

class ParentFragment : Fragment() {
    val parentViewModel: ParentViewModel by viewModels {
        ParentViewModelFactory(getRepository())
    }
    ...
}

// In ChildFragment

class ChildFragment : Fragment() {
    val parentViewModel: ParentViewModel by viewModels(
        { requireParentFragment() }
    )
    ...
}

Run Code Online (Sandbox Code Playgroud)

但是,此代码仅LiveData在我设置变量ParentViewModelParentFragment像这样观察它时才有效:

parentViewModel.text.observe(this) {
    toast(it)
}
Run Code Online (Sandbox Code Playgroud)

ViewModel我从内部观察是没有用的ParentFragment。我只需要它来lifecycle定义ChildFragments

如果我摆脱上面的观察,我会得到这个错误:

'java.lang.RuntimeException:无法创建类 ParentViewModel 的实例'
如何让 ChildFragments 访问ParentViewModel而不设置虚拟实时数据对象,以便ParentFragment可以观察它们。

java android android-lifecycle kotlin

2
推荐指数
1
解决办法
1088
查看次数

从数组返回流为 int[] 而不是 Integer[]

我有这个数组:

Integer[] originalItems = itemsArray.stream()
            .distinct()
            .sorted()
            .toArray(Integer[]::new);
Run Code Online (Sandbox Code Playgroud)

我想返回它 asint[]而不是 as Integer[]

我试图打电话,.toArray(int[]::new)但我收到此错误:

不存在类型变量 A 的实例,因此 int[] 符合 A[]

java arrays integer java-stream

0
推荐指数
1
解决办法
51
查看次数

将一个集合分解为更小的集合

我有一组超过 40,000 个项目,我想将其分解为多组,每组 5,000 个项目,因为 Room 不允许我同时使用一组 5,041 个项目作为参数。

我该怎么做?

fun breakDownSet(set: Set<String>) : List<Set<String>> {
    val sets = ArrayList<Set<String>>()
    // TODO

    return sets
}

Run Code Online (Sandbox Code Playgroud)

java android set kotlin

0
推荐指数
1
解决办法
504
查看次数