Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 位反转的空间复杂度_C++_Bit Manipulation_Space Complexity - Fatal编程技术网

C++ 位反转的空间复杂度

C++ 位反转的空间复杂度,c++,bit-manipulation,space-complexity,C++,Bit Manipulation,Space Complexity,此解决方案的空间复杂度是多少?此代码反转32位无符号整数的位。我不确定空格是否为O(N),因为在返回答案之前复制所有位,或者这是否被视为O(1),因为答案的大小不取决于输入a的大小 unsigned int Solution::reverse(unsigned int A) { unsigned int ans = 0; for (unsigned int i = 0; i < 32 ; ++i) { if (A & (1 << i)) {

此解决方案的空间复杂度是多少?此代码反转32位无符号整数的位。我不确定空格是否为O(N),因为在返回答案之前复制所有位,或者这是否被视为O(1),因为答案的大小不取决于输入a的大小

unsigned int Solution::reverse(unsigned int A) {
  unsigned int ans = 0;
  for (unsigned int i = 0; i < 32 ; ++i) {
      if (A & (1 << i)) {
          ans += (1 << (31-i));
      }
  }
  return ans;
}
unsigned int解决方案::反向(unsigned int A){
无符号整数ans=0;
for(无符号整数i=0;i<32;++i){

如果(A&(1你的函数只取无符号整数,那么算法是以sizeof(unsigned int)为界的,所以它总是一样的,所以O(1)。

你的函数只取无符号整数,算法是以sizeof(unsigned int)为界的,所以它总是一样的,所以O(1)。

如果我们试图逐行分析你的代码:

unsigned int Solution::reverse(unsigned int A) {
    unsigned int ans = 0;                        // O(1)
    for (unsigned int i = 0; i < 32 ; ++i) {     // O(1)
        if (A & (1 << i)) {                      // O(1)
            ans += (1 << (31-i));                // O(1)
        }
    }
    return ans;
}
unsigned int解决方案::反向(unsigned int A){
无符号整型ans=0;//O(1)
对于(无符号整数i=0;i<32;++i){//O(1)

如果(A&(1如果我们试图逐行分析您的代码:

unsigned int Solution::reverse(unsigned int A) {
    unsigned int ans = 0;                        // O(1)
    for (unsigned int i = 0; i < 32 ; ++i) {     // O(1)
        if (A & (1 << i)) {                      // O(1)
            ans += (1 << (31-i));                // O(1)
        }
    }
    return ans;
}
unsigned int解决方案::反向(unsigned int A){
无符号整型ans=0;//O(1)
对于(无符号整数i=0;i<32;++i){//O(1)

如果(A&(1)如果
A
是64位,那么使用的空间会如何变化?在我看来,它会加倍,因此
O(n)
似乎是合适的。如果您从未更改输入大小,那么
O(1)
用于32位输入。这是没有意义的,没有更多信息。对于单个值来说,它的复杂度是常数。如果对
N
值调用它,这显然是线性复杂度。如果
a
是64位,使用的空间会如何变化?在我看来,它会加倍,所以
O(N)
似乎是合适的。如果您从未更改输入大小,则对于32位输入而言,
O(1)
。这是毫无意义的,没有更多信息。对于单个值来说,这是常数复杂性。如果对
N
值调用,这显然是线性复杂性。