小编Lus*_* Li的帖子

二分查找中如何确定边界?

我知道二分搜索是如何工作的,但当我需要实现二分搜索时,我总是会犯一些小错误。

以下代码是leetcode 287查找重复数字的解决方案

class Solution {
public:
    int findDuplicate(vector<int>& nums) {
        int low = 1, high = nums.size() - 1;
        while (low < high) {
            int mid = low + (high - low) * 0.5;
            int cnt = 0;
            for (auto a : nums) {
                if (a <= mid) ++cnt;
            }
            if (cnt <= mid) low = mid + 1;
            else high = mid;
        }
        return low;
    }
};
Run Code Online (Sandbox Code Playgroud)

有几个地方让我很困惑:

1. while循环的条件low<high or low<=high

2. a<=mid or a<mid …

binary-search

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

使用C++编译器进行外部初始化时出错

我写了以下代码

#include<iostream>
using namespace std;
extern int var = 0;
int main(void)
{
 var = 10;
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

我用了

g++ -std=c++11 test.cpp -o test
Run Code Online (Sandbox Code Playgroud)

 g++ test.cpp -o test
Run Code Online (Sandbox Code Playgroud)

编译代码.我收到了以下警告

test.cpp:44:12: warning: 'extern' variable has an initializer [-Wextern-initializer]
extern int var = 0;
           ^
1 warning generated.
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我需要担心吗?我怎么能避免呢?非常感谢〜

c++ extern

0
推荐指数
1
解决办法
211
查看次数

vector <int>()vs vector <int> {} vs NULL vs size = 0之间有什么区别?

我想在函数结束时返回一个空向量.以下是否完全相同?如何理解他们每个人?

return vector<int>();
return vector<int>{};
return NULL;
Run Code Online (Sandbox Code Playgroud)

以下是我的理解:

1. vector<int>()表示创建一个空的矢量对象,它是未初始化的,因此它是NULL.

2. vector<int>{}表示创建一个大小为0的空向量.

大小0和NULL之间有区别吗?非常感谢〜

c++ vector

0
推荐指数
1
解决办法
99
查看次数

标签 统计

c++ ×2

binary-search ×1

extern ×1

vector ×1