• 解决Runtime Error on LeetCode


    做题的时候又出了问题。
    写的 code 发生 runtime error

    之前就遇到过这种,submit的结果和run code的结果不一样。

    这说明代码存在隐患。

    • 第一种情况:初始化
      变量、指针没有初始化。
      自己找一下。

    • 第二种情况:越界
      有时会会是一种隐性错误。

    以下代码就会发生越界,

        int removeDuplicates(vector<int>& nums) {
            if(nums.size()<=1){
                return nums.size();
            }
            int i=1, j=1;
            while(j<nums.size()){
                while(nums[i]>nums[i-1]&&i<nums.size())
                    i++;
                while(nums[j]<=nums[i-1]&&j<nums.size()){
                    j++;
                }
                if(j<nums.size()){
                    nums[i]=nums[j];
                    i++;
                    j++;
                }
            }
            return i;
        }
    
    

    把其中的

                while(nums[i]>nums[i-1]&&i<nums.size())
                    i++;
                while(nums[j]<=nums[i-1]&&j<nums.size()){
                    j++;
                }
    

    改为

                while(i<nums.size()&&nums[i]>nums[i-1])
                    i++;
                while(j<nums.size()&&nums[j]<=nums[i-1]){
                    j++;
                }
    

    即可利用&&判断的short circuit解决该错误。

  • 相关阅读:
    Redis
    Redis入门
    C#编程--语句(分支语句)
    C#编程--运算符
    C#编程--输入和输出
    C#编程进制转换
    C#语言课程11月10日
    C#语言课程11月9日
    C#语言课程11月7日
    C#语言课程11月6日
  • 原文地址:https://www.cnblogs.com/venusian/p/10836300.html
Copyright © 2020-2023  润新知