c++ - 运行时错误:添加无符号偏移 Leetcode
问题描述
问题:在旋转排序数组中搜索。此代码在我的系统中运行良好,但在我尝试提交时显示错误。
class Solution {
public:
int BSearch(vector <int> arr, int left, int right, int num)
{
int mid;
while(left<=right)
{
mid = left + (right - left)/2;
if(arr[mid] == num)
return mid;
else if (arr[mid] > num)
right = mid - 1;
else
left = mid + 1;
}
return -1;
}
int rotation(vector <int> arr, int lenn)
{
int left, right, mid, previous, next;
left = 0;
right = lenn - 1;
while(left<=right)
{
mid = left + (right - left)/2;
previous = (mid - 1 + lenn) % lenn;
next = (mid + 1) % lenn;
if(left == right)
return left;
if(arr[mid] < arr[next] && arr[mid] < arr[previous])
return mid;
else if (arr[mid] < arr[right])
right = mid - 1;
else if (arr[left] < arr[mid])
left = mid + 1;
}
return -1;
}
int search(vector<int>& arr, int num)
{
int peak, lenn;
lenn = arr.size()-1;
peak = rotation(arr, lenn);
int first, second;
first = BSearch(arr, peak, lenn-1, num);
second = BSearch(arr, 0, peak-1, num);
first = first>second?first:second;
return first;
}
};
错误信息:
Line 1034: Char 34: runtime error: addition of unsigned offset to 0x6020000001d0 overflowed to 0x6020000001cc (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:1043:34
解决方案
推荐阅读
- node.js - 在 Google Cloud 上访问 process.env.BASE_URL - Node.Js/Express
- python - 使用 SQLAlchemy 从 INSERT 语句中获取 MSSQL 自动生成的 ID
- android - WorkManager 的 15 分钟 PeriodicWorkRequest 没有连续运行 6 个多小时
- python - 尝试在 anaconda 中安装降级版本 python 来安装 gurobi
- neo4j - neo4j浏览器无法启动数据库(1.3.5版)
- apache-spark - 从 csv 文件加载单列
- go - 我正在尝试使用 go-stom/stomp 连接到由 network rail 托管的 darwin pushport 服务
- spring - 为什么初始化lazy-init spring bean的占位符?
- r - 根据 R 中的 n 组对连续变量进行分类
- node.js - 在 Firebase 功能中发送 gmail 时,Google 会阻止登录