有没有一种很好的方法可以n使用LINQ 将集合拆分为多个部分?当然不一定均匀.
也就是说,我想将集合划分为子集合,每个子集合包含元素的子集,其中最后一个集合可以是不规则的.
在C语言中编写程序时我想念的一件事是字典数据结构.在C中实现一个最方便的方法是什么?我不是在寻找性能,而是从头开始编写代码.我也不希望它是通用的 - 像string-> int这样的东西.但我确实希望它能够存储任意数量的项目.
这更像是一项练习.我知道有第三方库可供使用.但考虑一下,他们不存在.在这种情况下,您可以以最快的方式实现满足上述要求的字典.
我们习惯说HashMap get/put操作是O(1).但是它取决于哈希实现.默认对象哈希实际上是JVM堆中的内部地址.我们是否确定声称get/putO(1)是否足够好?
可用内存是另一个问题.据我所知,从javadocs,HashMap load factor应该是0.75.如果我们在JVM中没有足够的内存且load factor超出限制怎么办?
所以,看起来O(1)似乎不能保证.它有意义还是我错过了什么?
这是一个面试问题.您需要设计一个包含整数值的堆栈,以便getMinimum()函数返回堆栈中的最小元素.
例如:考虑下面的例子
case #1 5 --> TOP 1 4 6 2 When getMinimum() is called it should return 1, which is the minimum element in the stack. case #2 stack.pop() stack.pop() Note: Both 5 and 1 are poped out of the stack. So after this, the stack looks like, 4 --> TOP 6 2 When getMinimum() is called is should return 2 which is the minimum in the stack.
制约性:
假设我正在制作一个带有六角网格的棋盘游戏,比如Settlers of Catan:

请注意,每个顶点和边可能有一个属性(上面的道路和沉降).
我如何制作代表该板的数据结构?访问每个tile的邻居,边和顶点的模式是什么?
我正在准备接受采访,这让我想起曾经在之前的一次采访中被问过的一个问题:
"您被要求设计一些软件,以便在Google上连续显示前10个搜索字词.您可以访问提供无限实时搜索字词流的Feed,目前正在Google上搜索.请说明算法和数据结构你会用来实现这个.你要设计两个变种:
(i)显示所有时间的前10个搜索词(即自您开始阅读提要以来).
(ii)仅显示过去一个月的前10个搜索字词,每小时更新一次.
您可以使用近似值来获得前十名,但您必须证明自己的选择是合理的."
我在这次采访中遭到轰炸,但仍然不知道如何实现这一点.
第一部分要求在无限列表的不断增长的子序列中的10个最频繁的项目.我查看了选择算法,但找不到任何在线版本来解决这个问题.
第二部分使用有限列表,但由于处理的数据量很大,您无法将整个月的搜索项存储在内存中并每小时计算一次直方图.
前十名列表不断更新,这个问题变得更加困难,所以不管怎样你需要在滑动窗口上计算前十名.
有任何想法吗?
这些学年已经有一段时间了.在医院找到了IT专家的工作.现在试着去做一些实际的编程.我现在正在研究二叉树,我想知道确定树是否高度平衡的最佳方法是什么.
我在考虑这个问题:
public boolean isBalanced(Node root){
if(root==null){
return true; //tree is empty
}
else{
int lh = root.left.height();
int rh = root.right.height();
if(lh - rh > 1 || rh - lh > 1){
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的实现吗?还是我错过了什么?
我需要在二进制搜索树中找到第k个最小元素,而不使用任何静态/全局变量.如何有效地实现它?我在脑海中的解决方案是在O(n)中进行操作,这是最糟糕的情况,因为我计划对整个树进行顺序遍历.但在内心深处,我觉得我没有在这里使用BST属性.我的假设解决方案是正确的还是有更好的解决方案?
我想知道是否存在一些逻辑来仅使用两个指针来反转链表.
以下用于使用三个指针(即p,q,r)反转单个链表:
struct node {
int data;
struct node *link;
};
void reverse() {
struct node *p = first,
*q = NULL,
*r;
while (p != NULL) {
r = q;
q = p;
p = p->link;
q->link = r;
}
first = q;
}
Run Code Online (Sandbox Code Playgroud)
还有其他替代方法来反转链表吗?在时间复杂度方面,逆转单链表的最佳逻辑是什么?
我想知道什么是copy-on-write是什么以及它用于什么?Sun JDK教程中多次提到术语"写时复制数组",但我不明白它的含义.
data-structures ×10
algorithm ×5
binary-tree ×2
c ×2
java ×2
.net ×1
c# ×1
dictionary ×1
hashmap ×1
linked-list ×1
linq ×1
stack ×1