首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >leetcode运行时错误:添加无符号偏移量

leetcode运行时错误:添加无符号偏移量
EN

Stack Overflow用户
提问于 2021-03-17 18:05:32
回答 1查看 94关注 0票数 0

我正在解决一个关于Leetcode(下一个排列)的问题。

代码语言:javascript
复制
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());
            
        }
    };

这是我唯一需要编辑的部分。在运行它时,我得到了以下错误

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2021-10-20 12:41:36

如果为nums = [1,1,1],将执行以下代码:

代码语言:javascript
复制
while(j>=0 && nums[j]<=nums[i]){
    j--;
}

直到j=-1,下面的代码会导致向量溢出:

代码语言:javascript
复制
swap(nums[i],nums[j]);

然后你的这个错误信息就会出现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66670865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档