"数组-链表-哈希-双指针" 在计算机科学中,数组是一种基本的数据结构,用于存储相同类型的数据元素。数组中的每个元素都可以通过下标索引来访问,下标从0开始计数。数组的元素是不能删除的,只能覆盖。不能释放单个元素,如果要释放,就是全释放(程序运行结束,回收内存栈空间)。在删除或者增添元素的时候,就难免要移动其他元素的地址。 数组的实现方式有多种,例如C++中的数组、向量(vector)等。vector是C++中的容器,严格来说不是数组,但可以看作是动态数组。vector的底层实现是数组,提供了很多有用的方法,例如sort、reverse等。 在C++中,二维数组是连续分布的,例如int型两个相邻数组元素地址差4个字节。可以通过指针运算符来访问数组元素,例如cout << &array[0][0] << " " << &array[0][1] << " " << &array[0][2] << endl;cout << &array[1][0] << " " << &array[1][1] << " " << &array[1][2] << endl;。 二分查找是一种常用的查找算法,用于在有序数组中查找目标值。二分查找的前提条件是:数组为有序数组,数组中无重复元素。(因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的。) 二分查找法的实现可以使用两种方式:左闭右闭和左闭右开。左闭右闭方式的实现代码如下: ```cpp class Solution { public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; while (left <= right) { int middle = left + ((right - left) / 2); if (nums[middle] > target) { right = middle - 1; } else if (nums[middle] < target) { left = middle + 1; } else { return middle; } } return -1; } }; ``` 左闭右开方式的实现代码如下: ```cpp class Solution { public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size(); while (left < right) { int middle = left + ((right - left) / 2); if (nums[middle] > target) { right = middle; } else if (nums[middle] < target) { left = middle + 1; } else { return middle; } } return -1; } }; ``` 链表是一种动态的数据结构,用于存储链式结构的数据元素。链表的每个元素都指向下一个元素,直到最后一个元素指向null。链表的优点是可以动态地添加或删除元素,但缺点是访问元素需要遍历整个链表。 哈希是一种常用的数据结构,用于存储键值对。哈希的实现方式有很多种,例如哈希表、哈希链表等。哈希的优点是可以快速地查找元素,但缺点是可能出现哈希冲突。 双指针是一种常用的算法技巧,用于解决链表、数组等数据结构的问题。双指针的优点是可以快速地解决问题,但缺点是需要仔细地考虑算法的实现细节。 数组、链表、哈希、双指针是计算机科学中的基本概念和技术,掌握这些技术可以帮助我们更好地解决问题。





剩余58页未读,继续阅读



























- 粉丝: 23
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 随书光盘的有效管理及网络阅览实现技术-管理现状.docx
- 园林景观设计软件.docx
- 文化人类学-计算机科学与技术--常向阳.doc
- 浅析计算机软件技术在化工设计中的应用.docx
- IMS与网络融合技术研究分析tzq.doc
- 计算机技术在教育中的多方应用.docx
- 基于单片机的水温自动控制系统方案设计书.doc
- 浅析互联网金融模式.docx
- ppt模板:蓝色简约风人工智能PPT模板.pptx
- 大学计算机基础教程试题库专业证书.doc
- 基于物联网的智能仓储系统的设计.docx
- 计算机网考最新修改版.doc
- 电子商务税收征管问题分析及对策思考.doc
- Splunk大数据分析实战指南
- 面向对像程序设计试卷.doc
- C单片机的旋转显示屏设计与实现.doc



评论0