小编h4c*_*k3d的帖子

在未排序的数组中找到等于给定总和的2个数字

我们需要在数组中找到一对数,其总和等于给定值.

A = {6,4,5,7,9,1,2}
Run Code Online (Sandbox Code Playgroud)

Sum = 10然后对是 - {6,4},{9,1}

我有两个解决方案.

  • O(nlogn)解决方案 - 使用2个迭代器(开始和结束)排序+校验和.
  • 一个O(n)解决方案 - 散列数组.然后检查sum-hash[i]哈希表中是否存在.

但是,问题在于虽然第二种解决方案是O(n)时间,但也使用O(n)空间.

所以,我想知道我们是否可以在O(n)时间和O(1)空间中完成它.这不是功课!

language-agnostic algorithm

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

当我们在C中取消引用NULL指针时,操作系统会发生什么?

假设有一个指针,我们用NULL初始化它.

int* ptr = NULL;
*ptr = 10;
Run Code Online (Sandbox Code Playgroud)

现在,程序将崩溃,因为ptr没有指向任何地址,我们正在为其分配一个值,这是一个无效的访问.那么,问题是,操作系统内部会发生什么?是否发生页面错误/分段错误?内核甚至会在页面表中搜索吗?或者崩溃发生在那之前?

我知道我不会在任何程序中做这样的事情,但这只是为了知道在这种情况下OS或编译器内部发生了什么.这不是一个重复的问题.

c null operating-system pointers

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

查找给定单词的字谜

如果其中一个字符与另一个字的字符完全相同,则两个字是字谜.

示例:Anagram&Nagaram是anagrams(不区分大小写).

现在有很多类似的问题.找出两个字符串是否为字谜的几种方法是:

1) Sort字符串并比较它们.

2)frequency map为这些字符串创建一个并检查它们是否相同.

但是在这种情况下,我们会给出一个词(为了简单起见,我们只假设一个单词,它只有单个单词anagrams),我们需要找到它的字谜.

我想到的解决方案是,我们可以为单词生成所有排列并检查字典中存在哪些单词 .但显然,这是非常低效的.是的,字典也可用.

那么我们有什么替代方案呢?

我也在一个类似的线程中读到可以使用的东西,Tries但是这个人没有解释算法是什么,为什么我们首先使用Trie,只是在Python或Ruby中提供了一个实现.所以这并不是真的有用,这就是我创建这个新线程的原因.如果有人想要分享他们的实现(除了C,C++或Java),那么也要解释它.

language-agnostic algorithm anagram data-structures

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

启动包含管道命令的子进程时发现文件未找到错误

我需要date | grep -o -w '"+tz+"'' | wc -w在我的localhost上使用Python 运行命令 .我正在使用subprocess相同的模块,并使用check_output我需要捕获输出相同的方法.

但是它给我一个错误:

Traceback (most recent call last):
  File "test.py", line 47, in <module>
    check_timezone()
  File "test.py", line 40, in check_timezone
    count = subprocess.check_output(command)
  File "/usr/lib/python2.7/subprocess.py", line 537, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
    raise child_exception-
OSError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)

请帮助我哪里出错了.我是python的新手

python shell subprocess pipe

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

在数组中查找长度为k的所有子集

给定一组{1,2,3,4,5...n}n个元素,我们需要找到长度为k的所有子集.

例如,如果n = 4且k = 2,output将是{1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, 4}.

我甚至无法弄清楚如何开始.我们不必使用内置的库函数,如next_permutation等.

需要C/C++或Java中的算法和实现.

arrays algorithm permutation set

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

无法在类中实例化通用数据类型

我有一个不可变的类,具有以下布局,

public final class A <T> {
    private ArrayList<T> myList;
    private A(){
        myList = new ArrayList<T>();
    }
    public A<T> addData(T t){
        A newOb = // make a new list and instantiate using overloaded constructor
        T newT = new T(); ***********ERROR HERE*************
        newOb.myList.add(newT);
        return newOb;
    }
    .........
}
Run Code Online (Sandbox Code Playgroud)

我在这里得到的错误是cannot instantiate type T.现在,我认为这可能type erasure与Java有关.

我怎么能克服这个?我想添加一个新的参数副本,该副本将传递给我的列表中的addData.

java generics

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

串联字符串和数字Java

为什么在这些情况下输出会有所不同?

int x=20,y=10;

System.out.println("printing: " + x + y); ==> 打印:2010

System.out.println("printing: " + x * y); ==> 打印:200

为什么不是第一个输出30?它与运算符优先级有关吗?像第一次"打印"和x连接,然后这个结果字符串和y连接?我对么?

java

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

宏和预处理器之间的区别

据我所知,#define blah 8是一个宏.而,#是预处理器指令.

我们可以说#include,#if,#ifdef等.也是宏,还是被称为其他东西?或者,宏只是用于#define语句的术语?

如果我错了,请纠正我.

c c-preprocessor

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

联合和结构初始化

我偶然发现了基于C中的工会的代码.这是代码:

    union    {  
        struct  {  
            char ax[2];  
            char ab[2];  
        } s;  
        struct  {  
            int a;  
            int b;  
        } st;  
    } u ={12, 1}; 

    printf("%d %d", u.st.a, u.st.b);  
Run Code Online (Sandbox Code Playgroud)

我只是不明白输出是怎么来的268 0.这些值是如何初始化的?工会如何运作?输出不应该是12 1.如果有人能够详细解释这里到底发生了什么,那就太好了.

我在Windows 7上使用32位处理器.

c unions

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

给出一个数字,找出它是否辉煌

这是一个编程难题,如下所示:"如果其子串的所有数字的乘积都具有唯一值,那么这个数字就会很棒."

例:263(2,6,3,2*6 = 12,6*3 = 18)很棒.

但236(2,3,6,2*3 = 6,3×6 = 18)不辉煌.

我们只采用子串,而不是子序列.

我想也许我们可以在这里应用动态编程,因为重复的产品计算?我们还能有什么其他解决方案吗?(这不是一个家庭作业问题.)

language-agnostic algorithm

13
推荐指数
1
解决办法
1110
查看次数