zoukankan      html  css  js  c++  java
  • 解决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解决该错误。

  • 相关阅读:
    day 34
    day 33 线程锁
    day 32 操作系统、线程和进程(GIL锁)
    day 31 网络基础的补充
    day 30 多线程 socketserver模块补充
    python自学笔记 2019/07/01
    类与对象的概念
    递归及三种二分法
    好看的颜色
    zend 汉化
  • 原文地址:https://www.cnblogs.com/venusian/p/10836300.html
Copyright © 2011-2022 走看看