标签: data-structures

使用LINQ将集合拆分为`n`部分?

有没有一种很好的方法可以n使用LINQ 将集合拆分为多个部分?当然不一定均匀.

也就是说,我想将集合划分为子集合,每个子集合包含元素的子集,其中最后一个集合可以是不规则的.

.net c# linq data-structures

121
推荐指数
6
解决办法
7万
查看次数

在C语言中实现字典的快速方法

在C语言中编写程序时我想念的一件事是字典数据结构.在C中实现一个最方便的方法是什么?我不是在寻找性能,而是从头开始编写代码.我也不希望它是通用的 - 像string-> int这样的东西.但我确实希望它能够存储任意数量的项目.

这更像是一项练习.我知道有第三方库可供使用.但考虑一下,他们不存在.在这种情况下,您可以以最快的方式实现满足上述要求的字典.

c dictionary data-structures

119
推荐指数
4
解决办法
14万
查看次数

HashMap得到/放置复杂性

我们习惯说HashMap get/put操作是O(1).但是它取决于哈希实现.默认对象哈希实际上是JVM堆中的内部地址.我们是否确定声称get/putO(1)是否足够好?

可用内存是另一个问题.据我所知,从javadocs,HashMap load factor应该是0.75.如果我们在JVM中没有足够的内存且load factor超出限制怎么办?

所以,看起来O(1)似乎不能保证.它有意义还是我错过了什么?

java complexity-theory hashmap data-structures

117
推荐指数
5
解决办法
13万
查看次数

设计一个堆栈,使得getMinimum()应为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.

制约性:

  1. getMinimum应返回O(1)中的最小值
  2. 在设计时也必须考虑空间约束,如果使用额外的空间,它应该是恒定的空间.

language-agnostic algorithm stack data-structures

116
推荐指数
5
解决办法
10万
查看次数

如何在内存中表示六边形/十六进制网格?

假设我正在制作一个带有六角网格的棋盘游戏,比如Settlers of Catan:

主持者imgur.com

请注意,每个顶点和边可能有一个属性(上面的道路和沉降).

我如何制作代表该板的数据结构?访问每个tile的邻居,边和顶点的模式是什么?

data-structures

115
推荐指数
3
解决办法
4万
查看次数

查找前10个搜索词的算法

我正在准备接受采访,这让我想起曾经在之前的一次采访中被问过的一个问题:

"您被要求设计一些软件,以便在Google上连续显示前10个搜索字词.您可以访问提供无限实时搜索字词流的Feed,目前正在Google上搜索.请说明算法和数据结构你会用来实现这个.你要设计两个变种:

(i)显示所有时间的前10个搜索词(即自您开始阅读提要以来).

(ii)仅显示过去一个月的前10个搜索字词,每小时更新一次.

您可以使用近似值来获得前十名,但您必须证明自己的选择是合理的."
我在这次采访中遭到轰炸,但仍然不知道如何实现这一点.

第一部分要求在无限列表的不断增长的子序列中的10个最频繁的项目.我查看了选择算法,但找不到任何在线版本来解决这个问题.

第二部分使用有限列表,但由于处理的数据量很大,您无法将整个月的搜索项存储在内存中并每小时计算一次直方图.

前十名列表不断更新,这个问题变得更加困难,所以不管怎样你需要在滑动窗口上计算前十名.

有任何想法吗?

algorithm data-structures

114
推荐指数
3
解决办法
6万
查看次数

如何确定二叉树是否平衡?

这些学年已经有一段时间了.在医院找到了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)

这是一个很好的实现吗?还是我错过了什么?

java algorithm binary-tree data-structures

111
推荐指数
9
解决办法
12万
查看次数

以Optimum方式在二叉搜索树中查找第k个最小元素

我需要在二进制搜索树中找到第k个最小元素,而不使用任何静态/全局变量.如何有效地实现它?我在脑海中的解决方案是在O(n)中进行操作,这是最糟糕的情况,因为我计划对整个树进行顺序遍历.但在内心深处,我觉得我没有在这里使用BST属性.我的假设解决方案是正确的还是有更好的解决方案?

algorithm binary-tree binary-search data-structures

110
推荐指数
6
解决办法
12万
查看次数

如何仅使用两个指针反转单链表?

我想知道是否存在一些逻辑来仅使用两个指针来反转链表.

以下用于使用三个指针(即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)

还有其他替代方法来反转链表吗?在时间复杂度方面,逆转单链表的最佳逻辑是什么?

c algorithm linked-list data-structures singly-linked-list

109
推荐指数
4
解决办法
26万
查看次数

什么是写时复制?

我想知道什么是copy-on-write是什么以及它用于什么?Sun JDK教程中多次提到术语"写时复制数组",但我不明白它的含义.

copy-on-write data-structures

108
推荐指数
5
解决办法
8万
查看次数