首页 > 解决方案 > 运行时错误:添加无符号偏移 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

标签: c++vector

解决方案


推荐阅读