小编Amo*_*rma的帖子

在大小为n*k + b的数组中找到b次发生的元素

描述

给定一个大小数组,(n*k+b)其中n个元素出现k次,一个元素出现b次,换句话说,有n+1不同的元素.鉴于0 < b < k找到b次元素.

我的尝试解决方案

  1. 显而易见的解决方案是使用散列,但如果数字非常大,则不起作用.复杂性是O(n)

  2. 使用map存储每个元素的频率,然后遍历map以找到b次出现的元素.由于Map的实现为高度平衡树,复杂性将是O(nlogn).

我的两个解决方案都被接受了,但是面试官想要一个线性解决方案,而不使用散列和暗示他给出的树的高度在你存储频率的树中保持不变,但我还没有找到正确的解决方案.

我想知道如何在没有散列的线性时间内解决这个问题?

编辑:

样品:

输入: n=2 b=2 k=3

Aarray: 2 2 2 3 3 3 1 1

输出: 1

arrays algorithm

23
推荐指数
2
解决办法
1758
查看次数

malloc对内存对齐有哪些保证?

我遇到了以下代码:

int main()
{
    char *A=(char *)malloc(20);
    char *B=(char *)malloc(10);
    char *C=(char *)malloc(10);
    printf("\n%d",A);
    printf("\t%d",B);
    printf("\t%d\n",C);
    return 0;
}  
//output--   152928264     152928288    152928304
Run Code Online (Sandbox Code Playgroud)

我想知道如何完成分配和填充malloc().查看输出我可以看到起始地址是8的倍数.还有其他规则吗?

c malloc memory-management

11
推荐指数
3
解决办法
7477
查看次数

广义双蛋拼图

这是问题描述:

假设我们想知道N层建筑中的哪些故事可以安全地从中掉落鸡蛋,哪些会导致鸡蛋在着陆时破裂.我们做了一些假设:可以再次使用在摔倒后存活的鸡蛋.

  • 必须丢弃破蛋.
  • 所有鸡蛋的跌倒效果都是一样的.
  • 如果鸡蛋在掉落时断裂,那么如果从较高的窗口掉落则会破裂.
  • 如果一个鸡蛋在摔倒后存活,那么它会在较短的摔倒后存活.
  • 不排除一楼的窗户打破鸡蛋,也不排除N楼的窗户不会导致鸡蛋破裂.

给定一个N层建筑和一个鸡蛋供应,找到最小化(在最坏的情况下)确定断裂所需的实验滴数的策略.


我已经看到并解决了2个鸡蛋的问题,其中答案是14 = N = 100.我尝试使用DP了解wiki的通用解决方案,但无法理解他们想要做什么.请告诉他们他们是如何到达DP以及它是如何工作的?

编辑:

本条中给出的最高流量可用d滴和e蛋测试的复发如下:

f[d,e] = f[d-1,e] + f[d-1,e-1] + 1
Run Code Online (Sandbox Code Playgroud)

复发很好,但我无法理解它是如何衍生出来的?

这个解释对我来说并不清楚....我只是希望有人用更清晰的话语向我解释这种情况.

puzzle algorithm dynamic-programming

10
推荐指数
2
解决办法
8999
查看次数

比较unsigned char和EOF

当编译以下代码时,它进入无限循环:

int main()
{
    unsigned char  ch;
    FILE *fp;
    fp = fopen("abc","r");
    if(fp==NULL)
    {
        printf("Unable to Open");
        exit(1);
    }
    while((ch = fgetc(fp))!=EOF)
    printf("%c",ch);
    fclose(fp);
    printf("\n",ch);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

gcc编译器也会在编译时发出警告

abc.c:13:warning: comparison is always true due to limited range of data type
Run Code Online (Sandbox Code Playgroud)

当代码unsigned char被替换为charint按预期时,代码运行正常,即它终止.
但代码也运行unsigned int良好.因为我有我读的EOF就是定义为-1stdio.h那为什么此代码为无符号的字符失败,但运行良好的unsigned int类型.

c comparison eof unsigned-char fgetc

7
推荐指数
2
解决办法
8742
查看次数

使数组排序的最小操作数

我一直在使用spoj 尝试这个问题,但却无法提出正确的方法.什么是解决问题的正确算法?

arrays sorting algorithm

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

嵌套宏:扩展顺序

可能重复:
为什么我没有在以下c程序中获得预期的输出?

我对宏的评估顺序有疑问.对于以下代码,我无法理解输出:

#include <stdio.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a) 
int main()
{
    printf("%s\n",h(f(1,2)));
    printf("%s\n",g(f(1,2)));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

产量

12
f(1,2)
Run Code Online (Sandbox Code Playgroud)

为什么f不会在第二个printf之前首先扩展?

c macros

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

最小页面框架

是什么决定了必须分配给虚拟内存环境中正在运行的进程的最小页面帧数.

我发现上述问题的答案是instruction set architecture但却无法理解其背后的原因.

请解释.

编辑: 问题在以下链接http://www.geeksforgeeks.org/archives/4036(见问题3),我无法理解答案背后的逻辑.

paging operating-system virtual-memory

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

Maven依赖冲突

由一些模块组成的maven项目.我的一个模块是使用谷歌版本的番石榴依赖11.0.2.现在我正在我的项目中集成另一个模块,该模块也使用番石榴但版本14.

所以我希望新模块使用番石榴版本,14但剩下的项目使用番石榴版本11.0.2.我已经尝试将<exclusion></exclusion>guava 添加到新模块中,但它没有用.

任何解决此问题的提示.

更新:@Guillaume Darmont的答案解决了不同模块的问题.但现在我的问题是,新模块有2依赖,其中一个是使用番石榴11.0.2,其他正在使用14.0.如何管理这个.我们可以在模块的pom中单独指定它应该使用哪种版本的番石榴.

java dependencies project-management pom.xml maven

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

指针数组的大小

我对sizeof运营商有疑问

代码1:

int main()
{
    int p[10];
    printf("%d",sizeof(p));   //output -- 40
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码2:

int main()
{
    int *p[10];
    printf("%d",sizeof(*p));   //output -- 4
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在第一个代码中,p指向一个int数组.在第二个代码中,p指向一个指针数组.我无法理解为什么第一个代码o/p是40但第二个代码o/p是4认为两者都指向相同大小的数组?

c arrays sizeof

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

为什么printf隐式浮点到int转换不起作用?

请帮助我理解以下C输出:

#include<stdio.h>
int main() {
    float x = 4.0;
    printf("%f\n",x);
    printf("%d\n",x);
    int y=x;
    printf("%d\n",y);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出gcc编译器

4.000000
0
4
Run Code Online (Sandbox Code Playgroud)

据我所知,当我们将float赋值给一个int变量时,变量的小数部分终止然后分配给int.

为什么在这种情况下没有发生?

c printf

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