Googlo666 2022-09-13 11:10 采纳率: 66.7%
浏览 29
已结题

C++ 两数求和,break导致的内存分配问题?

电子信息专业初学者,这段代码总报错,写的是leetcode上两数求和的一个问题,把return放里面就不报错了,这是为啥?

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int len=nums.size();
        vector<int> ans;
        int m=0,n=1;
        for (m=0;m<len-1;m++)
        {
            
            for (n=m+1;n<len;n++)
            {
                if (target==nums[m]+nums[n])
                {
                    break;
                }
            }
            if (nums[m]+nums[n]==target)         
            {
                break;
            }
        };
        ans.push_back(m);
        ans.push_back(n);
        return ans;
    }
};

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-09-13 11:27
    关注

    17行是有风险的,如果上面的for循环没有执行break跳出循环,那么循环结束,n的值就是len,导致17行nums[n]就会数组越界访问了。
    17行的if多加一个条件,if(n<len && nums[m]+nums[n]==target)
    另外22、23行应该放到for循环里吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月21日
  • 已采纳回答 9月13日
  • 创建了问题 9月13日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题