华为OD技术面八股文_C++_02

华为OD技术面八股文_C++_02

文章目录

指针和引用的区别

  1. 是否可变:指针所指向的内存空间在程序运行过程中可以改变,而引用一旦绑定,不能改变。
  2. 是否可以为空:指针可以为空,引用必须绑定对象。
  3. 是否可以为多级:指针可以有多级,引用不能。
  4. 是否可作为容器元素:指针可以,引用不能。
  5. 是否支持算法运算:指针支持,引用不能。

野指针是什么?怎么导致的?怎么避免?

野指针:指向不确定、非法或者已经失效内存的指针。

产生野指针的原因:

  1. 指针未初始化
// 野指针 int* p; 
  1. 释放之后继续使用
int* p = new int(10); delete p; *p = 20; 
  1. 函数返回局部变量地址:局部遍历在栈上,函数结束,栈帧销毁,内存失效。
int* foo() { int x = 10; return &x; } int* p = foo(); cout << *p; 
  1. 指针越界访问: 访问非法内存,野指针行为。
int arr[5]; int* p = arr; p += 10; *p =

Read more

【leetcode】优先级队列的两种妙用:词频统计与动态中位数(附代码模板)

【leetcode】优先级队列的两种妙用:词频统计与动态中位数(附代码模板)

前言 🌟🌟本期讲解关于力扣的几篇题解的详细介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-ZEEKLOG博客 🔥 你的点赞就是小编不断更新的最大动力                                        🎆那么废话不多说直接开整吧~~ 目录 📚️1.前K个高频单词 🚀1.1题目描述 🚀1.2题目解析 🚀1.3代码编写 📚️2.数据流的中位数 🚀2.1题目描述 🚀2.2题目解析 2.2.1第一种思路 2.2.2第二种思路 🚀2.3代码编写 2.3.1第一种代码 2.3.2第二种代码 📚️3.总结 ——前言:关于堆这个数据结构,想必大家多多少少已经了解,并熟悉过了;其中最经典的问题就是使用堆来解决TOPK问题,但是除次之外,堆的构建以及堆来求解中位数,那么不知道大家了解过没有~~~  📚️1.前K个高频单词 🚀1.1题目描述 给定一个单词列表

By Ne0inhk
【数据结构-初阶】二叉树(1)---树的相关概念

【数据结构-初阶】二叉树(1)---树的相关概念

🎈主页传送门:良木生香 🔥个人专栏:《C语言》 《数据结构-初阶》 《程序设计》 🌟人为善,福随未至,祸已远行;人为恶,祸虽未至,福已远离 上期回顾:在上一篇文章中(这是文章链接:【数据结构-初阶】详解线性表(5)---队列),我们学习了初阶数据结构中的后一个线性表---队列,那么在初阶线性结构中线性表的内容我们就告一段落了,今天我们就进入到初阶段数据结构中的非线性表这块知识的学习.在这块知识中,我们会学习到树,但是还不学习图,这会等到我们学习C++语言的时候详细讲解 目录 一、树的相关概念 1.树的概念与结构: 2、树的相关术语 3、树的表示方法 4、树形结构在生活中的具体应用:   在学习二叉树之前,我们要先了解一下什么是树 一、树的相关概念 讲到树,我们就能联想到平时生活中所看到的植物树,那我们今天要讲的树与平时看到的树有联系吗?有的兄弟,当然有,我们今天要将的树灵感就是来源于生活中的树 生活中的树根是在地下的,分支是朝天上生长的,

By Ne0inhk

优选算法——二分查找

👇作者其它专栏 《数据结构与算法》《算法》《C++起始之路》 二分查找相关题解 1.二分查找 算法思路: a.定义left,right指针,分别指向数组的左右区间。 b.找到待查找区间的中间点mid,找到后分三种情况讨论:         i.arr[mid]==target说明正好找到,返回mid的值;         ii.arr[mid]>target说明[mid,right]这段区间都是大于target的,因此舍去右边区间,在左边[left,mid-1]的区间继续查找,即让right=mid-1,然后重复b过程;         iii.arr[mid]<target说明[left,mid]这段区间的值都是小于target的,因此舍去左边区间,在右边区间[mid+1,right]

By Ne0inhk
排序算法的速度美学:快速排序深度漫游

排序算法的速度美学:快速排序深度漫游

目录 一、快速排序思想 二、Hoare版本 1、Hoare版本介绍 2、编码实操 3、时间复杂度分析 4、有序情况优化 4.1 随机选keyi 4.2 三数取中 小贴士: 5、稳定性分析 三、挖坑法 1、挖坑法介绍 2、编码实操 四、lomuto前后指针版本 1、前后指针版本介绍 2、编码实操 3、小区间优化 五、迭代版本(非递归) 1、递归的缺陷 2、非递归思路 3、编码实操 六、三路划分 1、三路划分思想 2、

By Ne0inhk