二叉树的顶视图究竟是什么?
我从我找到的文章中发现了很大的歧义和缺乏清晰度。
例如,这是用于演示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)
如果我可以大胆地问,为什么这很重要?
我有三个片段 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)
然而,这个是关于在两个片段和一个活动之间共享一个视图模型,所以在我的情况下它不能正常工作。
我正在尝试使用访问ParentViewModel
for 。这是我的代码。ParentFragment
ChildFragment
viewModels
// 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
在我设置变量ParentViewModel
并ParentFragment
像这样观察它时才有效:
parentViewModel.text.observe(this) {
toast(it)
}
Run Code Online (Sandbox Code Playgroud)
ViewModel
我从内部观察是没有用的ParentFragment
。我只需要它来lifecycle
定义ChildFragments
。
如果我摆脱上面的观察,我会得到这个错误:
'java.lang.RuntimeException:无法创建类 ParentViewModel 的实例'如何让 ChildFragments 访问
ParentViewModel
而不设置虚拟实时数据对象,以便ParentFragment
可以观察它们。 我有这个数组:
Integer[] originalItems = itemsArray.stream()
.distinct()
.sorted()
.toArray(Integer[]::new);
Run Code Online (Sandbox Code Playgroud)
我想返回它 asint[]
而不是 as Integer[]
。
我试图打电话,.toArray(int[]::new)
但我收到此错误:
不存在类型变量 A 的实例,因此 int[] 符合 A[]
我有一组超过 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)