小编Gan*_*h M的帖子

设计一个堆栈,使得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万
查看次数

快速排序与合并排序

为什么快速排序比合并排序更好?

sorting algorithm

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

找到一个恰好N/2次的数字

这是我的一个面试问题.给定N个元素的数组,其中元素恰好出现N/2次,其余N/2个元素是唯一的.你如何找到运行时间更好的元素?

请记住元素没有排序,你可以假设N是偶数.例如,

input array [] = { 10, 2, 3, 10, 1, 4, 10, 5, 10, 10 }
Run Code Online (Sandbox Code Playgroud)

所以这里10次出现5次,即N/2次.

我知道O(n)运行时的解决方案.但仍期待通过O(log n)了解更好的解决方案.

arrays algorithm

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

在阵列中排列0和1

这是我最近的面试问题之一.我想知道其他人对这个问题的看法.

题:

您将获得一个结构,其中包含两个元素(int部门和string名称)的员工详细信息.

struct Employee
{ 
    string Name;
    int Dept;
}
Run Code Online (Sandbox Code Playgroud)

您将获得N员工的详细信息,其中N/2名员工Dept == 0和N/2名员工Dept == 1,按任意顺序排列.您需要根据其Dept值来对员工详细信息进行排序,并且应该是稳定的,即应保持原始记录中的1和0的顺序.

例如,给出以下示例数据:

Name         Dept

X1           0
X2           1
X3           0
X4           1
X5           0

排序后的结果应该是:

Name         Dept

X2           1
X4           1
X1           0
X3           0
X5           0

算法应该是稳定的,时间复杂度应该是O(N),其他变量具有恒定的空间(这意味着应该就地进行排序).

language-agnostic algorithm

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

桥渡难题

四个人必须在晚上过桥.任何穿过一个或两个男人的派对都必须随身携带手电筒.手电筒必须来回走动; 它不能被抛出等等.每个人都以不同的速度行走.一分钟需要1分钟,另外2分钟,另外5分钟,最后10分钟.如果两个男人交叉在一起,他们必须以较慢的男人的步伐走路.没有技巧 - 男人都是从同一侧开始,手电筒不能长距离照射,没有人可以携带,等等.

问题是他们能够最快地获得的是什么.我基本上是在寻找一些针对这类问题的通用方法.我的朋友告诉我,这可以通过Fibonacci系列解决,但解决方案并不适用于所有人.

请注意,这不是家庭作业.

puzzle algorithm

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

优化二进制搜索算法

在二分搜索中,我们有两个比较,一个用于大于,另一个用于小于,否则是中间值.您将如何优化以便我们只需要检查一次?

bool binSearch(int array[], int key, int left, int right)
{

    mid = left + (right-left)/2;
    if (key < array[mid])
        return binSearch(array, key, left, mid-1);
    else if (key > array[mid])
        return binSearch(array, key, mid+1, right);
    else if (key == array[mid])
        return TRUE; // Found

    return FALSE; // Not Found
}
Run Code Online (Sandbox Code Playgroud)

c algorithm binary micro-optimization

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

查看功能模板实例化

我有一个简单的功能模板:

#include <iostream>
using namespace std;

template <class T>
T GetMax (T a, T b) {
  T result;
  result = (a > b) ? a : b;
  return (result);
}

int main () {
  cout << GetMax<int>(5, 6) << endl;
  cout << GetMax<long>(10, 5) << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的例子将生成2个函数模板实例,一个用于int,另一个用于long.是否有任何g ++选项可以查看函数模板实例化?

c++ templates g++

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

C++设计问题

这是我的设计的问题描述.有一个类A(Singleton)可以创建和维护B类的对象.但是有这样的场景,如果某个特定条件出现在B类的对象中,它必须创建另一个B类对象.但是我需要这个创建对象由A类完成.

 

class B;
class A {

     private:
          A();
          class A *ptr;
     public:
         A & GetAInstance()
         {
           if (!ptr)
               ptr = new A;
           return ptr;
         }
         void CreateBInstances(std::string name)
         {
              map[name] = new B(name);
         }
};

Class B {
       public:
           B(std::string name) { }
       public:
           void checkCondition()
           {
                if  (condition == true)
                {
                   // So here the contidition is hit, I want to create
                   // another object of class B, but I want to intimate
                   // class A to do this …
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
293
查看次数