小编tem*_*def的帖子

在C++中定义类中的结构

能有人给我如何定义一个新的类型的示例结构在C++.

谢谢.

c++ struct class

52
推荐指数
4
解决办法
11万
查看次数

使用find-min/find-max进行堆栈比O(n)更有效?

我感兴趣的是创建一个类似于堆栈的Java数据结构,它尽可能高效地支持以下操作:

  • 推送,在堆栈顶部添加一个新元素,
  • Pop,删除堆栈的顶部元素,
  • Find-Max,返回(但不删除)堆栈的最大元素,和
  • Find-Min,返回(但不删除)堆栈的最小元素,和

这个数据结构最快的实现是什么?我怎么能用Java编写它?

java algorithm big-o stack data-structures

51
推荐指数
2
解决办法
3万
查看次数

为什么QuickSort是n log n的直观解释?

是否有人能够提供一个"简单的英语"直观,但正式的解释是什么让QuickSort n登录?根据我的理解,它必须通过n个项目,并且它会记录n次...我不知道如何将其记入单词为什么它会执行此日志n次.

algorithm complexity-theory quicksort

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

检测字符串是否具有唯一字符:将我的解决方案与"破解编码面试"进行比较?

我正在阅读"破解编码面试"一书,我在这里遇到了一些问题,但是我需要帮助比较我对解决方案的回答.我的算法有效,但我很难理解书中的解决方案.主要是因为我不明白一些运营商在做什么.

任务是:"实现一个算法来确定一个字符串是否具有所有唯一字符.如果你不能使用其他数据结构怎么办?"

这是我的解决方案:

public static boolean checkForUnique(String str){
    boolean containsUnique = false;

    for(char c : str.toCharArray()){
        if(str.indexOf(c) == str.lastIndexOf(c)){
            containsUnique = true;
        } else {
            containsUnique = false;
        }
    }

    return containsUnique;
}
Run Code Online (Sandbox Code Playgroud)

它有效,但效率如何?我看到Java中String的索引函数的复杂性是O(n*m)

以下是本书的解决方案:

public static boolean isUniqueChars(String str) {
    if (str.length() > 256) {
        return false;
    }
    int checker = 0;
    for (int i = 0; i < str.length(); i++) {
        int val = str.charAt(i) - 'a';
        if ((checker & (1 << val)) > 0) return false;
        checker …
Run Code Online (Sandbox Code Playgroud)

java string algorithm big-o time-complexity

47
推荐指数
2
解决办法
6万
查看次数

Java线程示例?

有没有人能给出一个简单解释Java Threads的示例程序?例如,假设我有三个线程t1,t2并且t3.我想要一个代码来演示线程同时执行,而不是顺序执行.

java multithreading

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

使用后缀树的字符串中最长的回文

我试图在字符串中找到最长的回文.蛮力解决方案需要O(n ^ 3)时间.我读到有一个使用后缀树的线性时间算法.我熟悉后缀树,很舒服地建造它们.如何使用构建的后缀树找到最长的回文.

algorithm suffix-tree palindrome

46
推荐指数
3
解决办法
2万
查看次数

为什么在C++ 11或C++ 14中没有进驻迭代器?

C++ 98有front_inserter,back_inserterinserter,但在C++ 11或草案C++ 14中似乎没有任何这些版本.有没有我们不能有任何技术原因front_emplacer,back_emplaceremplacer

c++ iterator stl c++11 c++14

46
推荐指数
2
解决办法
4321
查看次数

家谱算法

我正在努力为一个介绍级别的CS课程设置一个问题集,并提出一个问题,从表面上看,似乎很简单:

您将获得一份包含父母姓名,出生日期和死亡日期的人员名单.你有兴趣找出谁在他们一生中的某个时刻是父母,祖父母,曾祖父母等等.设计一个算法,用这个信息作为一个整数来标记每个人(0表示这个人从来没有过孩子,1表示该人是父母,2表示该人是祖父母,等等.)

为简单起见,您可以假设族图是DAG,其无向版本是树.

这里有趣的挑战是你不能只看树的形状来确定这些信息.例如,我有8位曾祖父母,但由于我们出生时没有一个人活着,在他们的一生中,他们中没有一个是伟大的曾祖父母.

我能解决这个问题的最佳算法是在时间O(n 2)中运行,其中n是人数.这个想法很简单 - 从每个人开始一个DFS,找到在该人死亡日期之前出生的家谱中最远的后代.但是,我很确定这不是问题的最佳解决方案.例如,如果图形只是两个父母及其n个孩子,那么问题可以在O(n)中平凡地解决.我希望的是一些算法要么胜过O(n 2),要么运行时参数化在图形的形状上,这使得它对于宽图形来说很快,在最坏的情况下优雅地降低到O(n 2)案件.

algorithm tree graph family-tree

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

基于数组和基于列表的堆栈和队列

我试图比较堆栈和队列操作的增长率(运行时和空间),当实现为数组和链接列表时.到目前为止,我只能找到队列pop()的平均案例运行时间,但没有全面探索这两个数据结构并比较它们的运行时/空间行为.

具体地讲,我想找比较push()pop()用于两个队列和堆栈,作为实现两个阵列和链表(因此2次操作×2种结构×2个实施方式中,或8个值).

另外,我会欣赏这两者的最佳,平均和最差情况值,以及与它们消耗的空间量有关的任何事情.

我能找到的最接近的是"所有cs作弊表的母亲"pdf,这显然是高级算法和离散函数的主人或博士级备忘单.

我只是在寻找一种方法来确定何时何地应该使用基于数组的实现与基于列表的堆栈和队列实现.

arrays queue stack linked-list data-structures

45
推荐指数
1
解决办法
5万
查看次数

数组中的两个元素,其xor是最大的

给定一个整数数组,您必须找到两个XOR最大的元素.

有天真的方法 - 只需挑选每个元素和xoring与其他元素,然后比较结果找到对.

除此之外,有没有有效的算法?

arrays algorithm bit-manipulation xor

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