C/C++ leetcode刷题的各种小tips记录

这篇具有很好参考价值的文章主要介绍了C/C++ leetcode刷题的各种小tips记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、常见知识整理

1. 运算符优先级和结合

优先级 运算符 结合性
1

()(括号/函数运算符)        [](下标运算符)

 .(成员选择(对象))        ->(成员选择(指针))

从左到右
2

!(逻辑非)        ~(按位取反)

+(正)        -(负)

++        --

*(取值运算符)        &(取地址运算符)

(type)(强制类型转换)

从右到左
3 *(乘)        /(除)        %(取余) 从左到右
4 +(加)        -(减) 从左到右
5 <<(左移)        >>(右移) 从左到右
6

>(大于)        >=(大于等于)

<(小于)        <=(小于等于)

从左到右
7 ==(等于)        !=(不等于) 从左到右
8 &(按位与) 从左到右
9 ^(按位异或) 从左到右
10 |(按位或) 从左到右
11 &&(逻辑与) 从左到右
12 ||(逻辑或) 从左到右
13 ?:(条件运算符) 从右到左
14

=(赋值运算符)

/=        *=        %=

+=        -=

>>=        <<=

&=        |=        ^=

从右到左
15 ,(逗号运算符) 从左到右

2. 数据类型的字节数和数值范围

整数类型

类型 标识符 字节数 数值范围 表示方法

整形

无符号整型

int

unsigned

4 32bit

-2147483648 ~ 2147483647

0 ~ 4294967295

-2^31 ~ 2^31-1

0 ~ 2^32-1

0

0u

短整型

无符号短整型

short

unsigned short

2 16bit

-32768 ~ 32767

0 ~ 65535

-2^15 ~ 2^15-1

0 ~ 2^16 -1

-

长整型

无符号长整形

long

unsigned long

4 32bit

2147483648 ~ 2147483647

0 ~ 4294967295

-2^31 ~ 2^31-1

0 ~ 2^32-1

0l

0ul

字符型

无符号字符型

char

unsigned char

1 8bit

-128 ~ 127

0 ~ 255

-2^7 ~ 2^7-1

0~2^8-1

-

浮点数类型

类型 标识符 字节数 指数位宽 尾数位宽 取值范围 表示方法
单精度 float 4 8bit 23bit

-3.4×10^(38) ~ 3.4×10^(38)

0.0f
双精度 double 8 11bit

52bit

-1.7×10^(308) ~ 1.7×10^(308)

0.0

二、省时间省空间的代码操作

1. 用位移操作代替乘除

乘/除2

x << 1 代替 x * 2

x >> 1 代替 x / 2

判断奇偶数

x & 0x1 == 1 代替 x % 2 == 1 (奇数)

x & 0x1 == 0 代替 x % 2 == 0 (偶数)

2. 求绝对值

int型变量n的求绝对值方法为

unsigned n1 = n > 0 ? n : (unsigned) ~n + 1

注意:考虑到int型变量的边界,n的最小值是-2147483648,最大值是2147483647,因此最小值取绝对值后对于int型是溢出的,因此要强制类型转换成unsigned型。文章来源地址https://www.toymoban.com/news/detail-474808.html

到了这里,关于C/C++ leetcode刷题的各种小tips记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • python LeetCode 刷题记录 13

    题号:13 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特

    2024年02月08日
    浏览(8)
  • python LeetCode 刷题记录 28

    给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。

    2024年02月08日
    浏览(12)
  • LeetCode 刷题记录——从零开始记录自己一些不会的

    LeetCode 刷题记录——从零开始记录自己一些不会的

    1. 最多可以摧毁的敌人城堡数目 题意 思路 两层循环,太low了 用一个变量记录前一个位置 代码 2. 到达终点的数字 题意 思路 代码 3. 单词的压缩编码 题意 思路 代码 思路2 去找到是否不同的单词具有相同的后缀,我们可以将其反序之后插入字典树中。例如,我们有 “time”

    2024年02月09日
    浏览(12)
  • LeetCode刷题记录——day2

    https://leetcode.cn/problems/product-of-array-except-self/description/?envType=study-plan-v2envId=top-interview-150 问题在于不使用除法并且空间复杂度为 O(1) ,当第一次从头开始遍历时由于不知道后续数组元素是什么,所以无法得到答案,而如果当知道一个后续数组元素后,又回去更新答案的话,无

    2024年03月20日
    浏览(12)
  • C++ 之LeetCode刷题记录(十)

    C++ 之LeetCode刷题记录(十)

    😄😊😆😃😄😊😆😃 开始cpp刷题之旅,多学多练,尽力而为。 先易后难,先刷简单的。 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整

    2024年01月18日
    浏览(8)
  • LeetCode刷题记录——day3

    1、https://leetcode.cn/problems/gas-station/submissions/514930619/?envType=study-plan-v2envId=top-interview-150 对于这个问题可以这样来考虑,将数据看作一个环,如果答案唯一,那么就意味着从任意一个节点开始寻找,最后都会得到同一个节点的答案,那么为何不直接从0节点开始呢? 其次,我们可

    2024年03月21日
    浏览(9)
  • LeetCode刷题记录——day4

    https://leetcode.cn/problems/trapping-rain-water/description/?envType=study-plan-v2envId=top-interview-150 对于一个可以构成“碗”的序列,最后装满水的话应该和最短的一边齐平,那么可以左右各遍历一次,记录每个元素位置对应的最短边高度,再对比就可以得出左右哪边最短 总结,对于一些左右

    2024年03月23日
    浏览(5)
  • LeetCode刷题记录——day1

    https://leetcode.cn/problems/h-index/description/?envType=study-plan-v2envId=top-interview-150 注:题目有点难理解,多读几遍 可以这样考虑,建立另一个临时数组 temp ,当第 i 篇文章被引用 citiations[i] 次时,令 j=citiations[i] 的 temp[j] 均加一,也就是现在对于任意 j 至少有 temp[j] 篇论文引用次数大

    2024年03月18日
    浏览(7)
  • C++ 之LeetCode刷题记录(十七)

    C++ 之LeetCode刷题记录(十七)

    😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1,2,2,null,3,null,3] 输出:false 这题目感觉还是比较简单的 先看根节点是否相同,再判断

    2024年01月25日
    浏览(8)
  • C++ 之LeetCode刷题记录(十二)

    C++ 之LeetCode刷题记录(十二)

    😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 示例 1: 输入:x = 4 输出:2 示例 2: 输入:x = 8 输出:2 解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。 思路:这种题目一看就是二分法,很简单的题目,耗时0s,看代码。

    2024年01月18日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包