小编Row*_*awn的帖子

将列表划分为n个大小的列表的有效方法

我有一个数组,我想分成更小的n个数组,并对每个数组执行操作.我目前的做法是

用Java中的ArrayLists实现(任何伪代码都可以)

    for (int i = 1; i <= Math.floor((A.size() / n)); i++) {
            ArrayList temp = subArray(A, ((i * n) - n),
                    (i * n) - 1);
            // do stuff with temp
        }

    private ArrayList<Comparable> subArray(ArrayList A, int start,
                int end) {
            ArrayList toReturn = new ArrayList();
            for (int i = start; i <= end; i++) {
                toReturn.add(A.get(i));
            }
            return toReturn;
        }
Run Code Online (Sandbox Code Playgroud)

其中A是列表,n是所需列表的大小

我相信这种方式在处理相当大的列表(大小高达100万)时花费了太多时间,所以我试图弄清楚什么会更有效率.

java partitioning arraylist

51
推荐指数
6
解决办法
8万
查看次数

如何检查有符号整数是否为正?

使用按位运算符,我想加法和减法,我如何检查有符号整数是否为正(特别是,不是负数而不是零)?我相信这个问题的答案非常简单,但它并没有找到我.

c bit-manipulation bitwise-operators

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

扩展节点意味着什么?

我正在尝试理解维基百科上的深度限制搜索算法,我试图找出扩展节点的确切含义.我试图寻找答案,但我得到的是更多的算法,它们表明必须扩展节点.

具体来说,stack := expand (node)关于整个功能的说法是什么?

    DLS(node, goal, depth)
    {
       if (node == goal)
         return node;
      push_stack(node);
       while (stack is not empty)
       {
         if (depth > 0)
         {
           stack := expand (node)
           node = stack.pop();
           DLS(node, goal, depth-1);
         }
           else
           // no operation

      }
     }
Run Code Online (Sandbox Code Playgroud)

algorithm nodes depth-first-search

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

3操作数imul指令究竟在ia-32汇编中做了什么?

我正在读指令

imul 0xffffffd4(%ebp, %ebx, 4), %eax
Run Code Online (Sandbox Code Playgroud)

而且我对它正在做的事情感到困惑.我明白imul会增加,但我无法弄清楚语法.

x86 assembly instruction-set opcode

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

Ocaml - 检查列表中重复项时的参数类型

我有一个基本函数,它检查列表是否重复,如果找到则返回true,否则返回false.

    # let rec check_dup l = match l with
        [] -> false
      | (h::t) ->
        let x = (List.filter h t) in
        if (x == []) then
           check_dup t
        else
           true
    ;;
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试使用此代码时,我得到了错误

    Characters 92-93:
          let x = (List.filter h t) in
                                 ^
    Error: This expression has type ('a -> bool) list
           but an expression was expected of type 'a list
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么会发生这种情况,a-> bool列表类型来自哪里?

recursion ocaml types list duplicates

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

Ocaml - 将列表的最后一个元素移到前面

首先,我道歉,如果这是一个混乱或倒退的方式来实现我想要完成的事情,但我是"Ocaml风格"的新手.

我想获取列表的最后一个元素,并将其移动到列表的前面,将所有元素向上移动一个.

例如:有 [1;2;3;4;5] -> [5;1;2;3;4]

我知道Ocaml中的列表基本上是链表,所以我计划递归遍历列表,找到最后一个元素,然后让该元素的尾部/剩余列表指向列表的头部.

我主要关注的是如何打破从倒数第二个元素到最后一个元素的链接.在上面的例子中,我希望得到5指向1,但4指向不再指向5.

我如何实现这一点,是否有一种更简单的方式来看待我完全失踪?

recursion ocaml linked-list list

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

如何使用Ruby正则表达式匹配多位数范围?

我正在尝试将格式为"0000"的时间码与"2459"匹配.我怎么能在一个特定的范围内匹配的数字,这样我就可以专门匹配0和59,并没有什么大或小介于0至24的所有数值之间的所有数字?

我知道如何匹配每个数字,但这不会做我想要的,例如

/[0-2][0-4]/
Run Code Online (Sandbox Code Playgroud)

将捕获数字0-4,10-14和20-24,遗漏中间的数字.所以我想捕获所有包含多个数字.

ruby regex

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

逻辑NOT(!)运算符不适用于按位语句

我试图确定是否可以计算两个32位整数的总和而不溢出,同时仅使用某些按位运算符和其他运算符.因此,如果可以在不溢出的情况下添加整数x和y,则以下代码应返回1,否则返回0.

(((((x >> 31) + (y >> 31)) & 2) >> 1))
Run Code Online (Sandbox Code Playgroud)

但是,它应该为1时返回0,反之亦然.当我使用逻辑NOT(!)运算符,或按位XOR(^)与0x1时,它不能解决问题.

!(((((x >> 31) + (y >> 31)) & 2) >> 1))

(((((x >> 31) + (y >> 31)) & 2) >> 1) ^ 0x1)
Run Code Online (Sandbox Code Playgroud)

^这些不起作用.

提前致谢.

c bit-manipulation bitwise-operators logical-operators

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