小编Moh*_*han的帖子

数组vs矢量vs列表

我正在维护一个包含10个条目的固定长度表.每个项目都是4个字段的结构.将有数字位置指定的插入,更新和删除操作.我想知道哪个是用于维护此信息表的最佳数据结构:

  1. array - insert/delete由于移位而占用线性时间; 更新需要恒定的时间; 没有空间用于指针; 使用[]访问项目的速度更快.

  2. stl vector - 插入/删除由于移位而占用线性时间; 更新需要恒定的时间; 没有空间用于指针; 访问项目比数组慢,因为它是对operator []和链接列表的调用.

  3. stl list - 插入和删除需要线性时间,因为在应用插入/删除之前需要迭代到特定位置; 指针需要额外的空间; 访问项目比数组慢,因为它是链接列表线性遍历.

现在,我的选择是使用数组.这是否合理?还是我错过了什么?

哪个更快:遍历列表,然后插入节点或在数组中移动项目以产生空位置然后将项目插入该位置?

衡量这种表现的最佳方法是什么?我可以只显示操作前后的时间戳吗?

c++ arrays stl list vector

41
推荐指数
4
解决办法
6万
查看次数

手动重建pycharm索引

有时pycharm变得非常慢.经过20-30分钟的缓慢,它重建了它的指数.有没有办法手动触发重建pycharm索引?

indexing macos pycharm

12
推荐指数
1
解决办法
5262
查看次数

静态块与静态成员初始化的私有静态方法

可以使用私有静态方法或使用静态块初始化静态变量.这两者之间有什么微妙的区别吗?有没有我不能使用静态方法初始化静态成员的情况?我发现后者更具可读性.

静态块初始化:

private static int NUM_ITER;
static {
    // Operations
    NUM_ITER = //val from above operations.
}
Run Code Online (Sandbox Code Playgroud)

私有静态方法初始化:

private static int NUM_ITER = calculateNumIter();

// Some method comment on how we are calculating.
private static int calculateNumIter()
{
    // Operations.
    return //value_from_operations.
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二个,因为它更具可读性.有没有我必须先使用的情况(静态块)?

初始化静态成员(最终成员和变量成员)的最佳编码约定/设计是什么?即使从这个线程我学习私有静态方法也比静态块有优势.

谢谢,

java methods static-methods

11
推荐指数
1
解决办法
1827
查看次数

是动态编程回溯缓存

我一直想知道这件事.没有书明确说明这一点.

回溯正在探索所有可能性,直到我们发现一种可能性无法引导我们找到可能的解决方案,在这种情况下我们放弃它.

据我所知,动态编程的特点是重叠的子问题.那么,动态编程是否可以表示为缓存回溯(对于以前探索过的路径)?

谢谢

theory algorithm dynamic-programming backtracking

11
推荐指数
2
解决办法
3181
查看次数

确定是否可以使用贪婪算法最优地给出解决方案

大多数时候,令人困惑的事实是,是否要进行详尽的搜索(动态编程或反向跟踪或蛮力)来解决问题或采用贪婪的方法.

我不是在谈论使用贪婪来确定最佳解决方案,我说的是使用贪婪算法来找到"解决方案".我试图找到一些标准的方法,我可以验证问题是否可以通过贪婪的方法解决.像Optimal子结构一样,用于动态编程的记忆.并没有任何具体问题.

有没有我可以做的归纳证明来决定贪婪方法是否总能产生最佳解决方案?

algorithm greedy

10
推荐指数
1
解决办法
5194
查看次数

生成从0到N-1的随机整数,该整数不在列表中

你得到了N和一个int K[].

手头的任务是生成一个0 to N-1在K 之间不存在的相等的概率随机数.

N严格来说是整数>= 0.并且K.length是<N-1.并且0 <= K[i] <= N-1.还假设K被排序并且K的每个元素是唯一的.

您将获得一个uniformRand(int M)在该范围内生成均匀随机数的0 to M-1函数.并假设此函数的复杂度为O(1).

例:

N = 7

K = {0,1,5}

该函数应以相同的概率返回任意随机数{2,3,4,6}.

我可以得到一个O(N)解决方案:首先生成0到N-K.length之间的随机数.并将如此生成的随机数映射到不在K中的数字.第二步将复杂度设为O(N).可以在O(log N)中做得更好吗?

algorithm

9
推荐指数
1
解决办法
2435
查看次数

8
推荐指数
2
解决办法
5988
查看次数

在O(n)时间内在阵列中交错三个大小相等的分区

给出一个大小为3n的数组

[x1, x2, x3... xn, y1, y2, y3... yn, z1, z2, z3... zn]
Run Code Online (Sandbox Code Playgroud)

将其转换为 [x1, y1, z1, x2, y2, z2, ... xn, yn, zn]

这里xn,yn,zn可以是任何整数.请参阅下面的示例输入和输出.

两个约束

  1. 做O(n)
  2. O(1)内存(inplace)

输入和输出的示例如下.

输入:
[5, 8, 11, 3, 2, 17, 21, 1, 9] 3n = 9.所以n = 3.

这里 x1=5 x2=8 x3=11 y1=3 y2=2 y3=17 z1=21 z2=1 z3=9

输出:
[5, 3, 21, 8, 2, 1, 11, 17, 9]

一个可能的O(n log n)soln: 仅考虑x和y.现在我可以将所有y换成它的位置,这将使我x2,x4,x6换出位置.然后我将交换x2,x4,这将使x3,x7离开位置.下一次迭代将是x8,x16.这将花费我O(n log n)而不是O(n).

algorithm

8
推荐指数
1
解决办法
215
查看次数

在java TCP连接中绑定接口

我在solaris主机中有两个接口.我想通过两个接口启动到单个TCP服务器的两个TCP连接,如图所示.Java中是否有任何选项将接口绑定到TCP套接字以覆盖本地路由表?

我附上网络图,

network_diagram

我想使用串行链路带宽来从服务器获取数据.因此,我想在两个接口上启动连接.

谢谢,

java networking network-programming tcp

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

get_by_natural_key和natural_key之间的区别

据我所知,模型管理器的get_by_natural_key用于反序列化,而natural_key用于序列化.这是真的 ?如果不是,有什么区别?

而且,我们是否需要始终提供 - 自然 - 外国和 - 自然 - 主键?有没有办法强制通过自然键序列化/反序列化?

django django-models natural-key python-2.7

6
推荐指数
1
解决办法
3497
查看次数

在django中定义自定义RelatedManager

我想覆盖一个类的相关管理器。

我有一个Company模型。它有state可以在ACTIVE, INACTIVE,中的列SUSPENDED。我添加了 2 个新状态,称为SALES, CLOSED

由于其遗留模型,仅仅添加状态可能是毁灭性的(代码中有很多地方没有按状态过滤)。

因此,为了避免其他地方发生无意的更改,我决定隐藏所有其他应用程序/其他地方的新状态,除非另有要求(我将仅将我们的应用程序/模型列入白名单)

我已经覆盖了公司中的对象管理器。

class CompanyManager(models.Manager):

    def get_queryset(self):
        return super(CompanyRelatedManager, self).get_queryset().exclude(state__in=['SALES', 'CLOSED'])

class Company(models.Model):
    _default_manager = models.Manager()
    objects = CompanyManager()
    allObjects = models.Manager()

    name = models.TextField()
    ...
    salesContact = models.ForeignKey(Contact)
Run Code Online (Sandbox Code Playgroud)

问题在于Company.objects.filter(blah=blah)过滤掉了新的状态。但类似的事情salesContact.companies.all()却没有。

In [9]: salesContact.companies
Out[9]: <django.db.models.fields.related.RelatedManager at 0x12157a990>
Run Code Online (Sandbox Code Playgroud)

我的问题是如何覆盖相关管理器等,salesContact = models.ForeignKey(Contact)以便我可以修改默认查询集以排除我的新状态。

而且,我无法覆盖默认管理器,因为覆盖默认管理器也意味着我正在覆盖这会导致db_manager意外的后果(数据库尝试插入而不是更新,整个其他故事)。

django foreign-keys django-models django-managers django-1.7

5
推荐指数
0
解决办法
1973
查看次数

如何将rsync绑定到特定接口?

我的服务器中配置了很多接口,每个接口都连接到一个特定的NIC卡并有一个单独的路由表.这些接口可以通过"netstat -a"命令识别.

现在,我想执行仅连接到特定接口的rsync命令.我有这个要求,因为每个接口都将通过一个单独的隧道/路径,我希望一个特定的rsync命令通过指定的隧道同步文件.

具体来说,我想要一种指定接口名称的方法.

谢谢,莫汉.

networking rsync

3
推荐指数
1
解决办法
7206
查看次数

使用Java中的字符串切换案例 - garbagy?

Java在其Java7中引入了带有Strings的switch case.我想知道是否使用这样的开关盒会产生垃圾.

例如,在我的程序中,

String s = getString();
switch(s) 
{
    case ABC: // ABC is a final static constant
    ...
    case CDE: // CDE is also final static constant.
    ...
}
Run Code Online (Sandbox Code Playgroud)

java如何执行此切换案例.假设有10个这样的开关盒.它会创建一个新的字符串每次它匹配string scase ABC等?

如果是这种情况,那就非常粗俗,所以当我给出100个案例的开关盒时,每次都会创建100个字符串.

java string switch-statement java-7

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