小编rul*_*ing的帖子

Go中的大字符串?

有没有办法将字符串(实质上是一个庞大的数字)从字符串转换为Go中的Big int?

我试着先把它转换成字节数组

array := []byte(string)

然后将数组转换为BigInt.

我认为这很有效,但输出与原始输入不同.所以我猜测转换由于某种原因没有做正确的事情.

我正在处理的数字超过300位数,所以我认为我不能使用常规int.

有什么最佳方法的建议吗?

type-conversion go

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

如何确定平衡或完美平衡的二进制搜索树(仅从图片中)

我不确定如何确定树是平衡的,完美平衡的,或者如果我将它作为图片而不是代码则不然

例如,如果我有这棵树我怎样才能检查它是否平衡,完美平衡或不平衡?并且有人能给我一个完美平衡树的例子吗?

    [o]
   /   \
 [b]   [p]
   \    / \
  [d]  [m] [r]
Run Code Online (Sandbox Code Playgroud)

很明显,如果它是这样的话,我可以说这棵树是不平衡的:

      [b]
        \
        [d]
         \
          [r]
           \
           [c]
Run Code Online (Sandbox Code Playgroud)

但是,如果它与上面的那个非常类似,我不知道如何得到它

这是一个完美平衡和平衡的树:

        [k]
       /   \
      [A]   [p]
            /  \
           [N]  [R]
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下吗?

c java tree binary-tree binary-search-tree

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

在 Go 中异或一个切片

所以我试图对每四个字节的内容进行异或随机,即 4 个字节。问题是,我想将 random 更改为 ans (这是异或的结果),然后继续。所以基本上随机变量第一次是一个固定的数字,但之后会改变,直到循环结束。我的代码似乎有正确的逻辑,但是,我不断收到(运算符^未在切片上定义)

random := 4 bytes
for j:=0;j<len(something);j+=4{
ans:=something[j:j+4] ^ random
random=ans
}
Run Code Online (Sandbox Code Playgroud)

我的猜测是,切片不允许异或,并且某些内容必须是切片,因为我将数组切片为多个字节。知道如何解决这个问题吗?

algorithm go

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

找到嵌套循环的计算复杂性

我很难获得这个for循环的复杂性

for (i = 4; i < n; i++)
{
    for (j = i - 3, sum = a[i - 4]; j <= i; j++)
    {
        sum += a[j];
    }
    System.out.println("sum thru" + i + ": " + sum);
}
Run Code Online (Sandbox Code Playgroud)

我认为这个嵌套循环的复杂性是n ^ 2,因为它是一个嵌套循环,但有人告诉我这是不正确的,嵌套循环并不总是二次复杂!

我真的不知道如何以一种好的方式获得复杂性.我已经看过很多关于Big-O和复杂性的文章,但它们没有用,因为他们希望我知道一切,他们的例子和我的任何例子都不一样.

我不是要求答案,我要求的方法.是否有任何公式或方法适用于本主题中的所有内容?我想知道如何获得作业的数量,但不幸的是我不知道如何做到这一点.

有人可以一步一步向我解释吗?

java algorithm complexity-theory big-o for-loop

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

big int 在平等中给了我错误的结果

出于某种原因,即使 mod 结果实际上是正确的,当我测试相等性时,我还是从 big int 得到了错误的结果!例如,我想计算 2015%2 结果为 1。

当我使用 big int 时,当我这样做时我会得到错误:

fmt.Println((test.Mod(big.NewInt(2015),big.NewInt(2)))==big.NewInt(1))
Run Code Online (Sandbox Code Playgroud)

但是,当我使用常规 int 时,我得到了正确的结果(无论如何这是正确的):

fmt.Println(2015%2==1)
Run Code Online (Sandbox Code Playgroud)

使用 big int 时,我是否应该以不同的方式进行相等?

go bigint

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

使用类在c ++中添加year实现

我正在尝试在一个类中创建一个程序并添加到每个日期中的一个.因此,如果日期是:2014年1月1日,我希望它是2015年2月2日.

我能够找出当天和月份的部分,但是,出于某种原因,我得到了一年中的奇怪数字.

当我试图调试程序时,我发现它正在打印以下内容

1/1/2014
1/1/2014
1/0/2014 // I am not sure why did it change the day to 0 but I don't care about this as I'm getting the correct result at the end
2/2/4028 // I am more concern about the 4028 ! I don't know from where did this come from
2/2/4028
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的:

      #include "stdafx.h"
      #include <iostream>
      #include <iomanip>
      #include <string>
      using namespace std;

       class Date
     {

public:
    int day, year, monthnum;
    Date(int d=1, int m2 =1, int …
Run Code Online (Sandbox Code Playgroud)

c++ class

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