随笔分类 - 刷题
摘要:自己写的 father != NULL一定要注意,这种情况一个是让father->left能不报错,还有一个就是解决了一个bad case,就是这个结点就是最后一个结点就返回NULL,或者说万一父结点全是右子树的
阅读全文
摘要:错误代码: 正确代码: 可以看到不同点只是把current->val == pHead->val和current != NULL换了一下位置 错误的代码报错报的是:段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起
阅读全文
摘要:一个错误代码 若改成int depth = 0; return IsBalancedCore(pRoot,depth); 就对了。IsBalancedCore这个函数的第二个参数是传参数,需要引用,用的时候不能为常量0,必须是一个参数。 IsBalancedCore中depth参数必须&引用,如果不
阅读全文
摘要:另一种写法 必须是if(!result),不能用else,因为如果两个树的头是相同的,但左右却不同就会报错。这种情况应该是继续迭代第一个树的左右节点,但用else,就会直接进入第一个if并返回值了 {8,8,7,9,2,#,#,#,#,4,7},{8,9,2}用else就不行
阅读全文
摘要:不用迭代器的代码 mid是在vin中的索引,与pre相关的只是个数,所以用mid-start_vin来表示有多少个,然后再加上之前的开始坐标
阅读全文
摘要:这种方法没用迭代,而是使用了循环的方式
阅读全文
摘要:错误代码 会报“段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起” 因为k的数字可能大于整个链表的长度,这时p1可能指向空指针,空指针的next就会报错 如果去计算一遍整个链表的长度,再判断k与链表长度的大小,这样还是会和笨办法一样遍历两次链表,直接在for循
阅读全文
摘要:自己的写法 更简洁的代码 用循环的方法做: 注意一个问题,end只能等于mid - 1,不能等于mid,同样begin只能等于mid + 1,不能等于mid。如果换成mid,当只有两个数的时候,会陷入死循环!
阅读全文
摘要:错误写法 整个代码的return都是在if条件下return的,但万一都不满足if条件,就没有了return。
阅读全文
摘要:错误代码: 最后两个if语句的目的是,最后一次迭代,两个链表中剩下的直接连接最后一次比较的数值,同时也是迭代停止的标志。虽然大if语句中比较大小得到的Node是正确的值,但每次迭代只要pHead2不为NULL都要改变正确的Node值为pHead2的值。
阅读全文
摘要:错误写法: else if这一句会报错,else if应该是紧跟在if语句后面,中间不能插入其他语句,不然else if不知道之前的if是哪一个。 正确写法: 这里要强调一下else if与if 的不同。这段代码,把else if换成if也是正确的,但并不代表else if和if是一样的。 现在假设
阅读全文
摘要:这个代码会报错 修改为: 或者修改为
阅读全文
摘要:段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起 这个错误自己经常犯,目前有以下两种情况: 1.vector为空,去访问a[i],即vector中的某一个位置的值 2.二叉树指针为NULL,却去访问左右节点,类似tree->left。所以在访问前的前提条件,一
阅读全文
摘要:这个题的错误和c++ primier中名字的作用域例子相似。只是这里将int换成了vecto<int>这种形式。 这个代码报“段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起”的错误。 在else里新建了一个局部变量B,覆盖了全局变量。但两个for语句访问的B
阅读全文
摘要:这是整个调试, for (int i:s) cout<<i<<endl;这句话是c++11特性下的一种遍历方式 在编译的时候需要加-std=c++11,即g++ 41.cpp -std=c++11 如果不加就会报错,因为这是c++11的特性 这个题目还可以直接把第一个求出来作为结果,但是这种情况有个
阅读全文
浙公网安备 33010602011771号