C++:刷LeetCode踩过的坑

最近在刷Leetcode的时候踩了不少坑,这里列一下提醒自己以后注意。

  1. 循环体的条件部分,虽然《C++Primer》说以!=做判断,用各种类型的size_type做循环变量是个好习惯,但是这只适用于以遍历为目的简单循环。当循环条件比较复杂时,循环条件可能一开始就不成立,这种情况下使用<>没有问题,而使用!=就会得到错误结果,容易陷入死循环。另外,无符号的size_type类型与负数相比较时,会将负数转换为一个很大的无符号数,从而得到错误的结果。如果不能保证进行条件判断的变量都为无符号数,还是老老实实用int比较简单。简单说,无符号数慎用<,带符号数慎用!=
  2. 使用容器的size()函数时,一定注意其返回的是一个无符号数。将其直接作为循环的终止条件当然是不会出问题的,但是如果需要把size()-1之类的作为循环终止条件的话,最好先把size赋值给一个int型的变量,再使用这个变量进行操作。
  3. 异常处理真的是个非常非常麻烦的事情。
  4. 当int可能溢出的时候,试试long long。
  5. 二分查找不需要对偶数长度的序列做特殊处理,单数情况拿中位数,偶数情况拿中间右侧的数当分割点就可以,左半部分<分割点,右半部分>=分割点,l = mid + 1r = midmid = l + (r - l) / 2 = (l + r) / 2 = (l + r) >> 1
  6. 循环体内少做特殊情况判断,没次多个判断浪费时间,程序正常流程能够处理的情况不要提前判断退出。
  7. 使用stringstream可实现多种类型向stringchar的转换,利用<<将数据输出到stringstream,再使用>>即可从流输入char类型数据,使用str()方法可以获得流中的string。多次利用流需要使用clear()等方法将状态位置位才能继续输入。
  8. 回溯算法递归剪枝的时候,应该在上一次递归中判断条件,不满足就不要进行下一次递归;而不是在下一次递归最开始的部分判断条件,不满足再返回。
  9. 递归的时候可以把传引用参数的实参作为类成员,能少传很多参数,看起来简洁一些。
  10. target - current >= 0的判断比另外维护一个sum进行sum <= target的判断更好些。
  11. bitset<n>bool[n]效果差不多,前者更好一些。
  12. 非内置类型作为参数,能用const引用尽量用,不要传值,不然太慢。
  13. 递归计数,一种方法是把数字作为参数传进去随前向递归过程递增,终止时返回这个数;另一种方法是令终止条件返回0,在回溯return语句中完成递增过程。
  14. 栈可以做深度优先搜索,队列则可用于广度优先搜索。

不定期更新。

C++:刷LeetCode踩过的坑相关推荐

  1. Jetson TX2刷机踩坑总结

    Jetson TX2刷机踩坑总结--wiznote笔记 目录 坑1: 在双系统的Ubuntu16.04下第一次刷机时卡在determing The IP address of target,造成TX2 ...

  2. 知乎高赞:985计算机视觉毕业后找不到工作怎么办?怒刷leetcode,还是另寻他路?

    [导读]985研究生,学计算机视觉,出来后找不到工作?新智元带你看看这个70万浏览量问题下的答案干货:找工作难,是因为前两年AI领域泡沫太大.然而,真正的人才什么时候都紧缺,搞扎实自己的基本功比什么都 ...

  3. excel删除空行_Excel里99.9%的人都踩过的坑,早看早避开!

    本文作者丨可可(小 E 背后的小仙女) 本文由「秋叶 Excel」原创发布 如需转载,请在公众号发送关键词「转载」查看说明 2019 年上班第一天感觉怎么样呢? 望着满屏幕铺天盖地的表格,我只能摸摸自 ...

  4. 二叉树和等于某值路径_Go刷LeetCode系列:二叉树(3)二叉树路径和

    给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节点. 示例:  给定如下二叉树,以及目标和 sum = 2 ...

  5. remoteapp提示找不到远程计算机_知乎高赞:985 计算机视觉毕业后找不到工作怎么办?怒刷 leetcode,还是另寻他路?...

    (给算法爱好者加星标,修炼编程内功) 来源:新智元 [新智元导读]985研究生,学计算机视觉,出来后找不到工作?本文带你看看这个70万浏览量问题下的答案干货:找工作难,是因为前两年AI领域泡沫太大.然 ...

  6. 第二篇:C/C++语法踩过的坑

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.C++内置库支持[库->API] 1.内置库和API函数的 ...

  7. 初次尝试ESP8266带CH340串口开发板踩过的坑

    文章目录 前言 踩坑记录 1.CH340驱动安装失败原因竟在microUSB数据线 2.microPython固件刷写闹笑话 3.Python版本与windows开发环境的秘密 4.毫无用处的配置工具 ...

  8. 知乎高赞:985 计算机视觉毕业后找不到工作怎么办?怒刷 leetcode,还是另寻他路?...

    点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 转自:新智元 [导读]:985研究生,学计算机视觉,出来后找不到工作?本文带你看看这个70万浏览量问题下的答案 ...

  9. 做Tik Tok CPA CPS 月入5w 我踩过哪些坑?

    大家好 我是项柚 本人90后社畜,做了一个月的CPA/CPS变现就赚了5W+,副业搞钱太香了! (一)我为什么选择CPA/CPS 任何平台变现的一个逻辑都是: 流量 --> 变现项目 --> ...

最新文章

  1. python ffmpeg模块,python执行ffmpeg
  2. 在c#中调用windows脚本的方法
  3. React+dva+webpack+antd-mobile 实战分享(二)
  4. javascript规范以及设计原则
  5. php 许愿墙 阶段案例_文化墙制作要突出企业哪些重点?
  6. dedecms注入漏洞 5.3 5.5
  7. JAVA链表中的回文链表结构
  8. 软件即服务的三重境界
  9. android 广告平台—杀毒软件是如何知道是否有广告的
  10. win10无法安装完成若要在此计算机上,win10提示windows安装无法继续怎么办
  11. 数据可视化是什么,数据可视化怎么做最好?
  12. opencv和pytorch中的warp操作函数:cv2.warpAffine, torch.nn.functional.grid_sample, cv2.warpPerspective
  13. 聚英国际|【燎原计划启动周第二期AMA】Filecoin经济模型及热点争议解读
  14. 来了老弟,表格的渲染
  15. 移动安全--22--Android应用安全防护技术
  16. 汽车电路的主要构成元件和电路图种类
  17. Java实现 LeetCode 502 IPO(LeetCode:我疯起来连自己都卖)
  18. 手写promise(详细版)
  19. 贪吃蛇炒鸡优化版(原创)
  20. PHP导出word方法(一mht)

热门文章

  1. Python仅用3行代码就能输出花式字符串图集,同事直呼666!
  2. svn版本管理软件——svn发布补丁和打补丁
  3. 如何查看yarn container日志 查看yarn任务所有container信息 yarn gc日志的查看和简单分析
  4. 人体姿势估计论文:Simple and Lightweight Human Pose Estimation及其PyTorch实现
  5. 微信旁边加个 「福」字状态 乔戈里把攻略给大家整来了!
  6. Affinity:手把手教你“借鉴”好莱坞大片和AAA游戏大作中的配色方案
  7. Python 四期爬虫第三周优秀作业(上)
  8. CVPR2020 Oral|实例分割新思路: Deep Snake
  9. 语义分割经典论文总结
  10. jsp图片上传提交前,图片显示在页面上