我正在做一个项目,所以我把我的问题简化为:
int l1ptr = 0;
int l2ptr = 0;
while(searchList.size() < 5 || (listOne.get(l1ptr) == null && listTwo.get(l2ptr) == null)){
if(listOne.get(l1ptr) == null){
searchList.add(listTwo.get(l2ptr).document);
l2ptr++;
}else{
if(listTwo.get(l2ptr) == null){
searchList.add(listOne.get(l1ptr).document);
l1ptr++;
}else{
if(listOne.get(l1ptr).frequency < listTwo.get(l2ptr).frequency){
searchList.add(listTwo.get(l2ptr).document);
l2ptr++;
}else{
if(listTwo.get(l2ptr).frequency < listOne.get(l1ptr).frequency){
searchList.add(listOne.get(l1ptr).document);
l1ptr++;
}else{
searchList.add(listOne.get(l1ptr).document);
l1ptr++;
}
}
}
}
任何帮助都将不胜感激。
如果我理解正确,您想合并两个排序列表,最多5个元素。考虑一下这个广义逻辑:
>
重复,而searchlist.size()<5
和L1PTR
不在第一个列表的末尾,而L2PTR
不在第二个列表的末尾
当searchlist.size()<5
和l1ptr
不在第一个列表的末尾时重复
当searchlist.size()<5
和l2ptr
不在第二个列表的末尾时重复
最后,您将拥有searchlist
,最多包含5个正确排序的元素
像这样:
while (searchList.size() < 5 && l1ptr < listOne.size() && l2ptr < listTwo.size()) {
if (listOne.get(l1ptr).frequency < listTwo.get(l2ptr).frequency) {
searchList.add(listTwo.get(l2ptr).document);
l2ptr++;
} else {
searchList.add(listOne.get(l1ptr).document);
l1ptr++;
}
}
while (searchList.size() < 5 && l1ptr < listOne.size()) {
searchList.add(listOne.get(l1ptr).document);
l1ptr++;
}
while (searchList.size() < 5 && l2ptr < listTwo.size()) {
searchList.add(listTwo.get(l2ptr).document);
l2ptr++;
}
注意:我不想使用任何库。试图解决https://icpc.kattis.com/problems/stacking 在以下条件下,合并排序数组所需的最小操作数是多少: 拆分:可以将单个堆栈拆分为两个堆栈,方法是将堆栈的任何顶部提起并放在一边,形成一个新堆栈。 连接:两个堆栈可以通过将一个放在另一个上面来连接。仅当顶部堆叠的底板不大于底部堆叠的顶板时,才允许这样做,也就是说,必须正确订购连接的堆叠。
问题内容: 已关闭 。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。 7年前关闭。 改善这个问题 我想将排序的列表合并到一个列表中。这个解决方案如何?我相信它运行时间为O(n)。有任何明显的缺陷,效率低下或样式问题吗? 我真的不喜欢为“这是第一次迭代”设置标志并使用它来确保“最低”具有默认值的习惯用法。有没有更好的办法解决呢? 注
问题内容: 我确信这个问题以前可能已经被问过,但我似乎找不到正确的答案。如果我有两个清单 我正在尝试使用_list1重新排列_list2中的元素,以便它们完全匹配顺序。什么是最干净的方法?所需的输出: 很抱歉,如果这是重复的,但到目前为止,我只能使用压缩的sorted()方法找到数字列表的答案。 如果_list2是列表列表怎么办? 所需输出: 还有一个假设:如果我想使用_list1作为键对其他任何
问题内容: 我正在寻找Java的良好排序列表。到处搜寻可以给我一些有关使用TreeSet / TreeMap的提示。但是这些组件缺少一件事:随机访问集合中的元素。例如,我想访问排序集中的第n个元素,但是使用TreeSet时,我必须遍历其他n-1个元素,然后才能到达那里。因为我的集合中最多有数千个元素,所以这很浪费。 基本上,我正在寻找与.NET中的排序列表类似的东西,能够快速添加元素,快速删除元素