剑指offer(纪念版)读书笔记【实时更新】

C++

1.STL的vector每次扩充容量,新容量是前一次的两倍。

2.32位机指针大小为4个字节,64位机指针大小为8个字节。

3.当数组作为函数参数传递时,数组会自动退化成同类型指针。

4.

"0123456789"占11个字节,因为有‘\0‘。
如果定义char a[10];
strcpy(str,"0123456789");// 将会导致字符串越界。

5.

//定义数组为先申请空间,再把内容复制到数组中char str1[] = "hello world";char str2[] = "hello world";

//定义指针时为将内容放在一个固定内存地址,所以str3和str4只想同一个"hello world"char* str3 = "hello world";char* str4 = "hello world";

//比较的是地址,如果要比较内容需要调用库函数if(str1 == str2){    cout << "str1 == str2" << endl;}else{    cout << "str1 != str2" << endl;}

if(str3 == str4){    cout << "str3 == str4" << endl;}else{    cout << "str3 != str4" << endl;}

输出结果为:

6.

时间: 2024-09-29 15:00:45

剑指offer(纪念版)读书笔记【实时更新】的相关文章

剑指offer面试题笔记11~20题(Java实现)

一.面试题1:复制运算符函数(P24) 题目:如下为类型CMString的声明,请为该类型添加赋值运算符函数. class CMyString { public: CMyString(Char* pData = NULL); CMyString(const CMyString& str); ~CMyString(void); private: char* m_pData; } 解题思路: 二.面试题2:实现Singleton模式(P31) 题目:设计一个类,我们只能生成该类的一个实例. 解题思路

LeetCode题解分类汇总(包括剑指Offer和程序员面试金典,持续更新)

LeetCode题解汇总(持续更新,并将逐步迁移到本博客列表中) 剑指Offer 数据结构 链表 序号 题目 难度 06 从尾到头打印链表 简单 18 删除链表的节点 简单 22 链表中倒数第k个节点 简单 二叉树 序号 题目 难度 07 重建二叉树 中等 栈和队列 序号 题目 难度 09 用两个栈实现队列 简单 图 序号 题目 难度 12 矩阵中的路径 中等 13 机器人的运动范围 中等 算法 动态规划 序号 题目 难度 10- I 斐波那契数列 简单 10- II 青蛙跳台阶问题 简单 查找

《剑指Offer》附加题_用两个队列实现一个栈_C++版

在<剑指Offer>中,在栈和队列习题中,作者留下来一道题目供读者自己实现,即"用两个队列实现一个栈". 在计算机数据结构中,栈的特点是后进先出,即最后被压入(push)栈的元素会第一个被弹出(pop);队列的特点是先进先出,即第一个进入队列的元素将会被第一个弹出来.虽然栈和队列特点是针锋相对,但是两者却相互联系,可以互相转换. 在"用两个队列实现一个栈"问题中,我们用两个队列的压入和弹出来模拟栈的压入和弹出.我们通过画图的手段把抽象的问题形象化. 在上

剑指offer (30) 最小的K个数

题目:输入n个整数,找出其中最小的K个数 方法一:直接std::sort,T(n) = O(nlgn) 方法二:直接std::nth_element T(n) = O(n) 但是修改了原数组 void MinKth(std::vector<int>& num, int kth, std::vector<int>& result) { if (num.size() == 0 || || kth <= 0 || kth > num.size()) { thr

剑指Offer——知识点储备-数据库基础

剑指Offer--知识点储备-数据库基础 数据库 事务 事务的四个特性(ACID): ??原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability) - (1)原子性 整个事务中的所要操作要么全部提交成功,要么全部失败回滚. - (2)一致性 保证数据库中的数据操作之前和操作之后的一致性.(比如用户多个账户之间的转账,但是用户的总金额是不变的) - (3)隔离性 隔离性要求一个事务对数据库中数据的修改,在未提交完成前对于其它事务是

剑指offer (27) 二叉搜索树和双向链表

题目:输入一棵BST,将该BST转换成一个排序的双向链表 要求不能创建新的结点,只能调整树中结点指针的指向 在BST中,左子节点的值 小于父节点的之, 父节点的值小于 右子节点的值 因此我们在转换成有序的双向链表时,原先指向左子节点的指针调整为链表中指向前一个结点的指针 原先指向右子节点的指针调整为链表中指向后一个结点的指针 很自然的想到对BST进行中序遍历 当我们遍历转换到根节点(值为10的结点)时,它的左子树已经转换成 一个排序的链表了,并且处在链表中的最后一个结点是当前值最大的结点 我们把

剑指Offer——银行考试

剑指Offer--银行考试 网申简历 一. 银行网申简历主要看哪些方面? 1.职业形象(30%),基本体现为证件照: 2.学校+成绩+校内表现(40%),体现为证书,成绩排名以及任职经历等: 3.校外实践(20%),主要体现在工作实习.实践活动和培训经历三点: 4.其他(10%),根据简历的完整性.准确性,进行综合评定. 二.网申简历应注意哪些方面? 1.考虑银行人的思维习惯(考虑岗位匹配度) 例:申请职位为柜员时,就应该在简历中体现出热情.乐于帮助他人.沉稳细心.认真大方,具有服务意识且对数字

[剑指offer] 重建二叉树,根据前中,输出后,根据中后,输出前

参考:<剑指offer>纪念版 情况1.:给出树的前序序列和中序序列,输出后序序列 情况2 :给出树的后序序列和中序序列,输出前序序列 解决方法:根据所给出的两个序列,构造出(重建)二叉树,然后按要求再遍历输出. 重建二叉树主要利用了递归的思想,最重要的是找出序列的范围(函数传参),这个要非常仔细,很容易出错.一定要在纸上画出图,然后根据图来确定范围. 用到的两个函数: 以情况1为例: 主要用到了两个函数: BinaryTreeNode* Construct(char* preorder, c

剑指Offer:连续子数组的最大和

题目: 输入一个整型数组, 数组里有正数也有负数. 数组中的一个或连续的多个整数组成一个子数组. 求所有子数组的和的最大值. 要求时间复杂度为O(n) #include <stdio.h> int maxsum_subarray(int a[], int n) { if( a==NULL || n<=0 ) { printf("Error.\n"); return 0x80000000; } int i; int curmax = 0x80000000; int cu

剑指offer (41) 有序数组数字之和

题目:输入一个递增排序的数组和一个数字target,在数组中查找两个数使得它们的和正好是target 题解分析: 一提到有序数组,应该立马联想到 二分查找 因为数组已经有序了,我们可以设置两个游标first和last,下标first指向 0, last指向 size() - 1, 然后相加 如果 相加和 大于 target,last-- 如果 相加和 小于 target,first++ T(n) = O(n) void TwoSum(const std::vector<int>& nu