C++:刷LeetCode踩过的坑
C++:刷LeetCode踩过的坑
最近在刷Leetcode的时候踩了不少坑,这里列一下提醒自己以后注意。
- 循环体的条件部分,虽然《C++Primer》说以
!=
做判断,用各种类型的size_type
做循环变量是个好习惯,但是这只适用于以遍历为目的简单循环。当循环条件比较复杂时,循环条件可能一开始就不成立,这种情况下使用<
或>
没有问题,而使用!=
就会得到错误结果,容易陷入死循环。另外,无符号的size_type
类型与负数相比较时,会将负数转换为一个很大的无符号数,从而得到错误的结果。如果不能保证进行条件判断的变量都为无符号数,还是老老实实用int
比较简单。简单说,无符号数慎用<
,带符号数慎用!=
。 - 使用容器的
size()
函数时,一定注意其返回的是一个无符号数。将其直接作为循环的终止条件当然是不会出问题的,但是如果需要把size()-1
之类的作为循环终止条件的话,最好先把size
赋值给一个int
型的变量,再使用这个变量进行操作。 - 异常处理真的是个非常非常麻烦的事情。
- 当int可能溢出的时候,试试long long。
- 二分查找不需要对偶数长度的序列做特殊处理,单数情况拿中位数,偶数情况拿中间右侧的数当分割点就可以,左半部分
<
分割点,右半部分>=
分割点,l = mid + 1
,r = mid
,mid = l + (r - l) / 2 = (l + r) / 2 = (l + r) >> 1
。 - 循环体内少做特殊情况判断,没次多个判断浪费时间,程序正常流程能够处理的情况不要提前判断退出。
- 使用
stringstream
可实现多种类型向string
或char
的转换,利用<<
将数据输出到stringstream
,再使用>>
即可从流输入char
类型数据,使用str()
方法可以获得流中的string
。多次利用流需要使用clear()
等方法将状态位置位才能继续输入。 - 回溯算法递归剪枝的时候,应该在上一次递归中判断条件,不满足就不要进行下一次递归;而不是在下一次递归最开始的部分判断条件,不满足再返回。
- 递归的时候可以把传引用参数的实参作为类成员,能少传很多参数,看起来简洁一些。
- 用
target - current >= 0
的判断比另外维护一个sum
进行sum <= target
的判断更好些。 - 用
bitset<n>
和bool[n]
效果差不多,前者更好一些。 - 非内置类型作为参数,能用const引用尽量用,不要传值,不然太慢。
- 递归计数,一种方法是把数字作为参数传进去随前向递归过程递增,终止时返回这个数;另一种方法是令终止条件返回0,在回溯return语句中完成递增过程。
- 栈可以做深度优先搜索,队列则可用于广度优先搜索。
不定期更新。
C++:刷LeetCode踩过的坑相关推荐
- Jetson TX2刷机踩坑总结
Jetson TX2刷机踩坑总结--wiznote笔记 目录 坑1: 在双系统的Ubuntu16.04下第一次刷机时卡在determing The IP address of target,造成TX2 ...
- 知乎高赞:985计算机视觉毕业后找不到工作怎么办?怒刷leetcode,还是另寻他路?
[导读]985研究生,学计算机视觉,出来后找不到工作?新智元带你看看这个70万浏览量问题下的答案干货:找工作难,是因为前两年AI领域泡沫太大.然而,真正的人才什么时候都紧缺,搞扎实自己的基本功比什么都 ...
- excel删除空行_Excel里99.9%的人都踩过的坑,早看早避开!
本文作者丨可可(小 E 背后的小仙女) 本文由「秋叶 Excel」原创发布 如需转载,请在公众号发送关键词「转载」查看说明 2019 年上班第一天感觉怎么样呢? 望着满屏幕铺天盖地的表格,我只能摸摸自 ...
- 二叉树和等于某值路径_Go刷LeetCode系列:二叉树(3)二叉树路径和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 2 ...
- remoteapp提示找不到远程计算机_知乎高赞:985 计算机视觉毕业后找不到工作怎么办?怒刷 leetcode,还是另寻他路?...
(给算法爱好者加星标,修炼编程内功) 来源:新智元 [新智元导读]985研究生,学计算机视觉,出来后找不到工作?本文带你看看这个70万浏览量问题下的答案干货:找工作难,是因为前两年AI领域泡沫太大.然 ...
- 第二篇:C/C++语法踩过的坑
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.C++内置库支持[库->API] 1.内置库和API函数的 ...
- 初次尝试ESP8266带CH340串口开发板踩过的坑
文章目录 前言 踩坑记录 1.CH340驱动安装失败原因竟在microUSB数据线 2.microPython固件刷写闹笑话 3.Python版本与windows开发环境的秘密 4.毫无用处的配置工具 ...
- 知乎高赞:985 计算机视觉毕业后找不到工作怎么办?怒刷 leetcode,还是另寻他路?...
点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 转自:新智元 [导读]:985研究生,学计算机视觉,出来后找不到工作?本文带你看看这个70万浏览量问题下的答案 ...
- 做Tik Tok CPA CPS 月入5w 我踩过哪些坑?
大家好 我是项柚 本人90后社畜,做了一个月的CPA/CPS变现就赚了5W+,副业搞钱太香了! (一)我为什么选择CPA/CPS 任何平台变现的一个逻辑都是: 流量 --> 变现项目 --> ...
最新文章
- python ffmpeg模块,python执行ffmpeg
- 在c#中调用windows脚本的方法
- React+dva+webpack+antd-mobile 实战分享(二)
- javascript规范以及设计原则
- php 许愿墙 阶段案例_文化墙制作要突出企业哪些重点?
- dedecms注入漏洞 5.3 5.5
- JAVA链表中的回文链表结构
- 软件即服务的三重境界
- android 广告平台—杀毒软件是如何知道是否有广告的
- win10无法安装完成若要在此计算机上,win10提示windows安装无法继续怎么办
- 数据可视化是什么,数据可视化怎么做最好?
- opencv和pytorch中的warp操作函数:cv2.warpAffine, torch.nn.functional.grid_sample, cv2.warpPerspective
- 聚英国际|【燎原计划启动周第二期AMA】Filecoin经济模型及热点争议解读
- 来了老弟,表格的渲染
- 移动安全--22--Android应用安全防护技术
- 汽车电路的主要构成元件和电路图种类
- Java实现 LeetCode 502 IPO(LeetCode:我疯起来连自己都卖)
- 手写promise(详细版)
- 贪吃蛇炒鸡优化版(原创)
- PHP导出word方法(一mht)
热门文章
- Python仅用3行代码就能输出花式字符串图集,同事直呼666!
- svn版本管理软件——svn发布补丁和打补丁
- 如何查看yarn container日志 查看yarn任务所有container信息 yarn gc日志的查看和简单分析
- 人体姿势估计论文:Simple and Lightweight Human Pose Estimation及其PyTorch实现
- 微信旁边加个 「福」字状态 乔戈里把攻略给大家整来了!
- Affinity:手把手教你“借鉴”好莱坞大片和AAA游戏大作中的配色方案
- Python 四期爬虫第三周优秀作业(上)
- CVPR2020 Oral|实例分割新思路: Deep Snake
- 语义分割经典论文总结
- jsp图片上传提交前,图片显示在页面上