小编Cod*_*ogi的帖子

作为N的函数的最坏情况运行时间的增长顺序

给出以下代码片段:

int sum = 0;
for (int i = 1; i <= N; i++)
    for (int j = 1; j <= i*i; j++)
        for (int k = 1; k <= j*j; k++)
            sum++;
Run Code Online (Sandbox Code Playgroud)

我的假设:

  • 外环:O(N)
  • 中环:O(N*N)
  • 最内圈:O(N*N)

因此,总运行时间应为O(N ^ 5),对吧?

algorithm performance

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

在链表的末尾插入节点

对于这类问题,有一个简单的迭代解决方案.

Node Insert(Node head,int data) {
    Node newNode = new Node();
    newNode.data = data;
    if (head == null) {
        return newNode;
    }
    Node current = head; 
    while (current.next != null) {
        current = current.next;
    }
    current.next = newNode;
    return head;
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好.但我想学习递归并用这种观点看待事物.因此我想出了下面的解决方案,看起来很优雅,但我不得不承认这只是直觉和给定的代码有效.我想开发一个用于递归的心理模型,或者至少某种方式来验证我的代码是否正常工作.如何从理论上验证以下解决方案是否有效.

递归版

Node Insert(Node head,int data) {
    // Base case.
    if (head == null) {
        Node newNode = new Node();
        newNode.data = data;
        return newNode;
    }
    // Smaller problem instance.
    head.next = Insert(head.next, data);
    return head;
}
Run Code Online (Sandbox Code Playgroud)

java recursion recursive-datastructures data-structures

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

图的邻接表表示的空间复杂度

在这里读到,对于无向图,空间复杂度是O(V + E)用邻接表表示的,其中VE分别是顶点和边的数量。

我的分析是,对于完全连接的图,列表的每个条目都将包含|V|-1节点,那么我们总共有|V|顶点,因此,空间复杂性O(|V|*|V-1|)似乎O(|V|^2)是我在这里缺少的东西?

algorithm graph

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

返回默认值还是引发异常?

我对这被认为是一种好习惯感到困惑 - 这种决策语言是否依赖?假设我有以下Java代码:

public class Stack {
    public Integer pop() {
      if (isEmpty()) return null; // or some exception maybe?
          // else get and return the top item in the stack.
      };
    }
}
Run Code Online (Sandbox Code Playgroud)

pop方法的客户端需要一些Integer值,那么让客户端知道堆栈为空的最佳方法是什么?

java refactoring

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

前端领域模型

我最近一直在阅读域驱动设计,但我很少在 web 应用程序中看到它(或者我可能没有 google 它),我认为我们现在也有足够的复杂性来处理 web 应用程序。

我需要一种方法来保持我的模型和业务逻辑干净、耦合最少、与框架/库无关。例如,今天我使用的是 AngularJS,明天我可能会将 UI 切换到 ReactJS。

话虽如此,我正试图通过一个简单的例子来学习这一点。假设我正在尝试创建具有以下功能的 Quote 应用程序:

给出报价

  1. 可以投赞成票/反对票。
  2. 可以加星。
  3. 可由用户创建(进入审查队列)。
  4. 用户可以通过(Twitter、Facebook 等)分享它。

给定一个用户

未登录时:

  1. 可以看到随机报价。
  2. 可以对报价投赞成票/反对票。
  3. 可以按标题或作者搜索引文。

登录时:

  1. 可以创建报价。
  2. 可以为报价加注星标。

我对如何在保持 UI 和业务逻辑清洁和分离方面实现上述要求感兴趣。

我不是专家,但目前我可以满足这些要求,这些要求将来可能会发生变化。

javascript architecture domain-driven-design web

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

对象如何在V8内部表示?

我一直以为那个对象的JavaScript是简单的键值对,即哈希表,但看完后,这个文章我很困惑.

作者特别说:

当你使用一个对象就好像它是一个哈希表时,它将变成一个哈希表.

那么,以前到底是怎么回事?特别是整个段落让我困惑.有人能说清楚吗?

javascript v8 language-design data-structures

4
推荐指数
1
解决办法
474
查看次数