剑指Offer学习笔记

1、在C/C++中,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针。

2、对于str1、str2定义时须分配内存空间,所以地址不同,而str3、str4都指向某一常量区,所以地址是相同的。

char str1[] = "hello world";
char str2[] = "hello world";

char *str3 = hello world";
char *str4 = hello world";
</pre><pre name="code" class="cpp"><span style="font-family: Arial, Helvetica, sans-serif;">3、合并数组时,考虑从后向前复制,效率可能更高。</span>

4、递归在本质上就是一个栈结构。

5、递归由于是函数调用自身,而函数调用是有时间和空间的消耗的:每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址及临时变量,而且往栈时压入数据和弹出数据都需要时间。

6、右移时,如果数字是一个无符号数值,则用0填补最左边的n位。如果数字是一个有符号数值,则用数字的符号位填补最左边的n位。

7、把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0。

8、位运算的效率比乘除法及求余的效率要高很多,常见的2的倍数的乘除法、奇偶判断等都可能用位运算代替。

9、当用一个指针遍历链表不能解决问题时,可以采用两个或更多指针,并使用两个指针的移动速度不同步。

10、对于函数输入,一定要先判断输入是否合理;其次要检查边界条件,考虑问题的全面性。

11、路径是从根结点出发到叶结点,也就是说路径总是以根结点为起点。

12、正整数的最大值是0x7FFFFFFF,最小的负整数值是0x80000000。

13、写代码之前首先考虑测试用例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值