小编Ali*_*Ali的帖子

在O(1)时间内检索堆栈中的Min元素

我问这个问题的原因是因为我无法理解为什么我认为不能应用于这个特定问题的方式

"你如何设计一个堆栈,除了push和pop之外,还有一个返回最小元素的函数min?push,pop和min都应该在O(1)时间运行 "

我的基本解决方案:如果我们在堆栈类中有一个变量,那么每当我们将一个项目推送到堆栈时,我们会检查它是否小于我们的min变量.如果它将值赋给min,如果不是忽略.

你仍然可以获得最小函数的O(1);

int getMinimum(){
  return min;
}
Run Code Online (Sandbox Code Playgroud)

为什么永远不会提到这个解决方案,或者我认为的方式有什么问题?

algorithm performance stack data-structures

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

g ++不适用于Lion

我已经搜索过,但我收到了相同的答案,但我相信我的不同,我在我的Mac上安装了Xcode(4.3.2),当我尝试编译我的.cpp文件时,它说"找不到命令"有什么建议吗?

我是如何编写的;
g++ -o program code.cpp

macos compilation g++ osx-lion

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

算法:计算单词列表频率的更好方法

这个问题实际上非常简单但我希望在进入编码之前听到一些想法.给定每行中包含单词的文件,计算最多n个频繁的数字.

第一个也是唯一一个在我脑海中突然出现的东西用来使用a std::map.我知道C++的同事们会说这unordered_map将是非常合理的.

我想知道是否有任何东西可以添加到算法方面,或者这基本上是"谁选择了最好的数据结构获胜"类型的问题.我通过互联网搜索了它并读取了哈希表和优先级队列可能会提供一个运行时间为O(n)的算法,但我认为这将是复杂的实现

有任何想法吗?

c++ algorithm performance data-structures

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

Node.js和Redis; 等待循环完成

我想问这个问题,因为我不确定我是否正确使用Node.js逻辑

我有一组我需要使用redis'get方法查询的id.并且在检查了某个值之后(假设我正在检查给定"key"的对象是否具有空名称),我将它们添加到列表中.这是我的示例代码;

var finalList = [];
var list = [];
redisClient.smembers("student_list", function(err,result){
            list = result; //id's of students
            console.log(result);

            var possibleStudents = [];


            for(var i = 0; i < list.length; i++){


                redisClient.get(list[i], function(err, result){
                    if(err)
                        console.log("Error: "+err);
                    else{
                        tempObject = JSON.parse(result);
                        if(tempObject.name != null){
                            finalList.push(tempObject);
                        }
                    }
                });     
            }

    });
   console.log("Goes here after checking every single object");
Run Code Online (Sandbox Code Playgroud)

但正如预期的那样,由于Node的异步特性,如果不检查列表中的每个id,它就会执行"Goes here ...".我需要在检查每个id后应用其余的过程(在redis db中映射并检查名称).但我不知道该怎么做.也许如果我可以将回调附加到for循环并确保我的其余函数在循环结束后开始运行(我知道这是不可能的但只是给出一个想法)?

asynchronous redis node.js

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

C++中的大图表示

可能有类似的问题,但我仍然有一些我无法弄清楚的部分.我正在尝试表示没有权重的无向图,但只有1表示连接,0表示未连接.我试图表示一个图表(从文件中读取),它有80500个节点和超过550万个边缘.我在想;

  1. 如果我将邻接矩阵(我正在使用的那个)更改为邻接列表,是否会产生巨大的影响.我对实现没有任何问题,只是问它是否值得将它转换为列表?
  2. 因为我只存储10是一个特殊的数据类型没有存储这个.我正在使用,我猜一个字节数据类型将节省大量时间.
  3. 除了邻接矩阵或列表之外的任何其他结构可能更适合这个典型问题吗?

c++ graph data-structures

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

在数组中查找平衡点

这个问题来自一个很棒的youtube频道,提出了可以在访谈中提出的问题.

它基本上与在阵列中找到平衡点有关.这是一个最好地解释它的例子; {1,2,9,4,-1}.在这里,因为sum(1 + 2)= sum(4 +( - 1)),使得9为平衡点.在没有检查答案的情况下,我决定在想要询问是否可以采用更有效的方法之前实施算法;

  1. 求和数组O(n)中的所有元素
  2. 得到一半的总和O(1)
  3. 从左开始扫描阵列,并在sumleft大于一般总和的一半时停止.上)
  4. 做同样的权利,获得总和权利. O(n).
  5. 如果sumleft等于sumright return arr [size/2],则返回-1

我问,因为这个解决方案毫不费力地突然出现,提供了O(n)运行时间.这个解决方案,如果是真的,可以开发,或者如果不是真的任何替代方法?

c++ algorithm performance data-structures

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

Javascript:不会更改div innerHTML

我真的不明白为什么这不起作用.我尝试了几个技巧,但我只是不明白.

<html>
<head>
<script type="text/javascript">
alert('Hey');
    var vText = document.getElementById("results");
        vText.innerHTML = 'Changed';
        alert(vText.innerHTML);
</script>
</head>
<body>
<div id="results">
hey there
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

html javascript

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

Rails:attr_accessor在尝试呈现为JSON时不会显示

在我的应用程序中,我有一个模型在下面;

class Init < ActiveRecord::Base
  attr_accessor :clientAvailability
  attr_accessible :returnCode, :returnMessage, :tokenCode, :updateURL
end
Run Code Online (Sandbox Code Playgroud)

在这里,当我稍后添加**attr_accessor**并且当我尝试应用**render json:init**时,即使我将其设置为;它也没有显示**clientAvailability**属性;

init=Init.new
init.clientAvailability="3"
Run Code Online (Sandbox Code Playgroud)

当我调试它时,我可以看到它已设置,但是当我尝试将其渲染为json时,它不会简单地显示出来.可能是我错过的东西?

ruby oop json model ruby-on-rails

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

算法:修改二进制搜索

我正试图解决一个经典的面试问题,这个问题基本上是在列表上进行二元搜索,然后逐渐增加然后减少.即使很明显我们可以实现O(log n),但我无法弄清楚我写的下面的代码有什么问题:

#include <iostream>

using namespace std;


int binarySearch(int *A, int low, int high, int key)
{
    while(low < high)
    {
        int mid = (low + high) / 2;
        if(key < A[mid])
        {
            if(A[mid - 1] < A[mid] && A[mid] < A[mid + 1])
                high = mid - 1;
            else
                low = mid + 1;
        }
        else if(key > A[mid])
        {
            if(A[mid - 1] < A[mid] && A[mid] < A[mid + 1])
                low = mid + 1;
            else …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm binary-search

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

递归:按顺序遍历返回列表

我有一个基本的函数,用于在C++中进行遍历遍历:

void inorder(Node *root)
{
    if(root != NULL)
    {
       inorder(root->left);
       cout<<root->data<<endl;
       inorder(root->right);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我希望在遍历顺序中返回一个列表.但关键是我们如何确定这个递归函数何时实际结束并且我可以返回列表.这是我到目前为止所做的代码;

vector<int> inorder(Node *root, vector<int> listToAdd)
{
    if(root != NULL)
    {
       inorder(root->left, listToAdd);
       listToAdd.push_back(root->data);
       inorder(root->right, listToAdd);

       //return here?
    }
    // return here?
}
Run Code Online (Sandbox Code Playgroud)

我认为这个问题的答案也有助于我提出递归的核心概念

c++ algorithm recursion binary-search-tree

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