leetcode Runtime error: addition of unsigned offset - c++11

I was solving a question on Leetcode(Next Permutation)
class Solution {
public:
void nextPermutation(vector<int>& nums) {
int i=nums.size()-2;
while(i>=0 && nums[i]>nums[i+1])
{
i--;
}
int j=nums.size()-1;
if(i>=0)
{
while(j>=0 && nums[j]<=nums[i]){
j--;
}
swap(nums[i],nums[j]);
}
reverse(nums.begin()+i+1,nums.end());
}
};
This is the only part i had to edit. And upon running it i'm getting the following error
Line 1034: Char 34: runtime error: addition of unsigned offset to 0x602000000470 overflowed to 0x60200000046c (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

If nums = [1,1,1], the following code will be excute:
while(j>=0 && nums[j]<=nums[i]){
j--;
}
until j=-1, and the following code causes vector overflowed:
swap(nums[i],nums[j]);
and then this error message of yours appears.

Related

Incompatible types in assigmnet of int to char[16] error - Arduino UNO

I've created an array of structs but I'm getting the error written on the title of this question. I'm still new to this so I was wondering if I could get some help.
Code:
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
lcd.begin(16, 2);
i = 0;
}
#define LIMIT 27
struct protocol {
char create[16];
char character;
int values;
int minimum;
int maximum;
};
struct protocol channels[LIMIT];
int i;
void create_channels() {
if (Serial.available() > 0) {
Serial.print("Enter the channel description");
channels[i].create = Serial.read();
Serial.print("Enter the starting character: ");
channels[i].character = Serial.read();
if (i == LIMIT) {
for (i = 0; i < LIMIT; i++)
{
Serial.println(channels[i].create);
Serial.println(channels[i].character);
}
i = 0;
}
}
}
Error:
cw.ino:24:38: error: incompatible types in assignment of 'int' to 'char [16]'
channels[i].create = Serial.read();

Line 1034: Char 34: runtime error: applying non-zero offset 8 to null pointer (stl_vector.h) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior

class Solution {
public:
static bool nonDec(vector<int> a, vector<int> b){
return ((a[0]*a[1])>(b[0]*b[1]));
};
int maxHeight(vector<vector<int>>& cuboids) {
int n=cuboids.size();
int rotLength=3*n;
vector<vector<int>> rot(rotLength);
//rot 0->length//1->width//2->height
int index=0;
for(int i=0;i<n;i++){
rot[index][2]=cuboids[i][2];
rot[index][0]=cuboids[i][0];
rot[index][1]=cuboids[i][1];
index++;
rot[index][2]=cuboids[i][0];
rot[index][1]=max(cuboids[i][1],cuboids[i][2]);
rot[index][1]=min(cuboids[i][1],cuboids[i][2]);
index++;
rot[index][2]=cuboids[i][1];
rot[index][1]=max(cuboids[i][0],cuboids[i][2]);
rot[index][1]=min(cuboids[i][0],cuboids[i][2]);
index++;
}
n=3*n;
sort(rot.begin(),rot.end(),nonDec);
vector<int> msh;
for(int i=0;i<n;i++){ msh[i]=rot[i][2];}
for(int i=1;i<n;i++){
for(int j=0;j<i;j++){
if(rot[i][1]<=rot[j][1] && rot[i][0]<=rot[j][0] && rot[i][2]<=rot[j][2] && msh[i]<msh[j]+rot[i][2]){
msh[i]=msh[j]+rot[i][2];
}
}
}
int maxValue=0;
for(int i=0;i<n;i++){
if(msh[i]>maxValue){
maxValue=msh[i];
}
}
return maxValue;
}
};
Link to problem: https://leetcode.com/problems/maximum-height-by-stacking-cuboids/
Error : Line 1034: Char 34: runtime error: applying non-zero offset 8 to null pointer (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

runtime error: addition of unsigned offset to 0x602000000390 overflowed to 0x60200000038c

I was solving a question named as. Find First and Last Position of Element in Sorted Array
'''
void bin_search(vector<int>&nums,int target,int l,int h,int &a,int &b)
{
if(l>h)
return;
int mid= l + (h - l) / 2;
if(nums[mid]==target)
{
if(nums[mid-1]==target)
{
bin_search(nums,target,l,mid-1,a,b);
}
else
{
a=mid;
}
if(nums[mid+1]==target)
{
bin_search(nums,target,mid+1,h,a,b);
}
else
{
b=mid;
}
}
else if(nums[mid]<target)
{
bin_search(nums,target,mid+1,h,a,b);
}
else
{
bin_search(nums,target,l,mid-1,a,b);
}
}
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int a=-1;
int b=-1;
int l=0;
int h=nums.size()-1;
bin_search(nums,target,l,h,a,b);
return {a,b};
}
};
'''
this is the code which i submitted but i am getting
Line 1034: Char 34: runtime error: addition of unsigned offset to 0x602000000390 overflowed to 0x60200000038c (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_vector.h:1043:34
error i am able to pass all the test cases in my complier and other id but didn't able to solve this bug
please help me thanks in advance

SPOJ - Runtime error SIGSEGV

Following is the implementation of infix to postfix conversion, it is working fine on my computer, but as I am submitting in on SPOJ it is giving me Runtime error SIGSEGV, I am new to competitive programming and I am unable to handle such type of errors.
#include <iostream>
#include <stack>
#include<string.h>
#include<ctype.h>
using namespace std;
int prec(char ch){
switch(ch){
case '^' : return 3;
break;
case '*':
case '/': return 2;
break;
case '+':
case '-': return 1;
break;
default: return -1;
}
}
void pti(char a[]){
stack<int> post;
int k = -1;
for(int i = 0;i<strlen(a);i++){
if(isalnum(a[i]))
a[++k] = a[i];
else if(a[i] == '(')
post.push(a[i]);
else if(a[i] == ')'){
while(!post.empty() && post.top()!= '('){
a[++k] = post.top();
post.pop();
}
post.pop();
}
else {
while(!post.empty() && prec(a[i]) <= prec(post.top())){
a[++k] = post.top();
post.pop();
}
post.push(a[i]);
}
}
while(!post.empty()){
a[++k] = post.top();
post.pop();
}
a[++k] = '\0';
cout<<a<<endl;
}
int main()
{
int t;
cin>>t;
for(int i = 0;i<t;i++){
char a[100];
cin>>a;
pti(a);
}
}
You just need to make the input array longer, e.g. a size of 1000 gets AC.
The SIGSEGV signal means a segmentation fault occured, which basically means you accessed memory that doesn't belong to you.

Compilation Error "Illegal Start of Type"

I am getting a compilation error each time I try to compile this code snippet. The error is "illegal start of type" and occurs at "for(int i=0;i
class hello
{
int a[]={3,4,2,7,4,9,1,4,6,3};
int n=a.length;
for(int i=0;i<n;i++)
{
for(int j=i;j<n-i-1;j++)
{ //Ascending Order
if(a[j-1]>a[j])
{
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
for(int i=0;i<n;i++)
System.out.println(a[i]);
}
I realized the error. I forgot to make a main method.

Resources