![](/img/trans.png)
[英]Line 1034: Char 9: runtime error: reference binding to null pointer of type 'int' (stl_vector.h)
[英]Merge Intervals/Line 1034: Char 9: runtime error: reference binding to null pointer of type 'std::vector<int, std::allocator<int> >'
leetcode 問題-->我必須要計算 commom/重疊間隔 任何人都可以幫助解釋為什么會出現此錯誤。 問題鏈接-https://leetcode.com/problems/merge-intervals/
我的代碼是
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>>ans;
int n = intervals.size();
ans[0][0] = intervals[0][0];
ans[0][1] = intervals[0][1];
int i=0,j=1;
while(j<n ){
if(ans[i][1] > intervals[j][0]){
//ans[i][0] = intervals[i][0];
ans[i][1] = intervals[j][1];
j++;
}
else{
i=i+1;
ans[i][0] = intervals[j][0];
ans[i][1] = intervals[j][1];
j++;
}
}
return ans;
}
};
首先,您需要為您的問題選擇一個更好的標題。 其次,我相信你的算法不符合全部可能的條件; 如果有一組像 {[2,3], [1,6]} 這樣的區間,你的算法會將這些區間合並到 [2,6]。 因此,最好對您的算法進行一些修改。
為了解決這個問題,我們首先要對區間進行排序(N Log N 的順序)。
這將通過:
// The following block might slightly improve the execution time;
// Can be removed;
static const auto __optimize__ = []() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
return 0;
}();
// Most of headers are already included;
// Can be removed;
#include <iostream>
#include <cstdint>
#include <vector>
#include <algorithm>
static const struct Solution {
static const std::vector<std::vector<int>> merge(
std::vector<std::vector<int>>& intervals
) {
std::sort(std::begin(intervals), std::end(intervals));
std::vector<std::vector<int>> merged;
if (std::size(intervals) >= 1) {
merged.emplace_back(intervals[0]);
}
for (std::size_t index = 0; index < std::size(intervals); ++index) {
const std::vector<int> interval = intervals[index];
const std::vector<int> tail = merged.back();
if (tail[1] >= interval[0]) {
merged.pop_back();
merged.emplace_back(std::vector<int> {
std::min(tail[0], interval[0]),
std::max(interval[1], tail[1])
});
} else {
merged.emplace_back(interval);
}
}
return merged;
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.