首页 文章 精选 留言 我的

精选列表

搜索[匹配算法],共10000篇文章
优秀的个人博客,低调大师

python数据结构与算法——栈、队列与双端队列

栈 栈:是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端进行加入数据和输出数据的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。 由于只能在一端操作,因此按照后进先出的原理运作 栈的实现 支持操作: Stack()创建一个新的空栈 push(item)添加一个新的元素item到栈顶 pop()弹出栈顶元素 peek()返回栈顶元素 is_empty()判断栈是否为空 size()返回栈的元素个数 class Stack(object): """栈""" def __init__(self): self.__list = [] def push(self, item): """加入元素""" self.__list.append(item) def pop(self): """弹出元素""" return self __list.pop() def peek(self): """返回栈顶元素""" if self.__list: return self.__list[-1] else: return None def is_empty(self): """判断是否为空""" #return self.__list == [] return not self__list def size(self): """返回栈的大小""" return len(self.__list) if __name__ == "__main__": stack = Stack() stack.push("hello, world") stack.push("hello, python") stack.push("hello, China") print(stack.size()) print(stack.peek()) print(stack.pop()) print(stack.pop()) 队列与双端队列 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表 队列是一种先进先出的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作。 队列的实现 class Queue(object): """队列""" def __init__(self): self.__list = [] def enqueue(self,item): """往队列中添加一个item元素""" self.__list.append(item) def dequeue(self): """从队列头部删除一个元素""" return slef.pop(0) def is_empty(self): """判断一个队列是否为空""" return self.__list == [] def size(self): """返回队列的大小""" return len(self.__list) if __name__ == "__main__": s = Queue() s.enqueque(1) s.enqueque(2) s.enqueque(3) s.enqueque(4) print(s.pop()) print(s.pop()) print(s.pop()) print(s.pop()) 双端队列 双端队列,是一种具有队列和栈的性质的数据结构 双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队 双端队列的实现 操作: Deque()创建一个空的双端队列 add_front(item)从队头加入一个item元素 add_rear(item)从队尾加入一个item元素 remove_front()从队头删除一个item元素 remove_rear()从队尾删除一个item元素 is_empty()判断双端是否为空 size()返回队列大小 class Deque(object): """双端队列""" def __init__(self): self.__list = [] def add_front(self, item): """往队列头部添加一个item元素""" self.__list.insert(0, item) def add_rear(self, item): """往队列尾部添加一个item元素""" self.__list.append(item) def pop_front(self): """从队列头部删除一个元素""" return self.__list.pop(0) def pop_rear(self): """从队列尾部删除一个元素""" return self.__list.pop() def is_empty(self): """判断一个队列是否为空""" return self.__list == [] def size(self): """返回队列大小""" return len(self.__list) 原创文章,转载周知 持续更新... 个人博客地址:www.limiao.tech

优秀的个人博客,低调大师

经典算法详解(11)递归查找数组中的最大值

题目:编写一个程序,用递归的方法实现查找数组中的最大值。 C++实现 1 #include<iostream> 2 3 using namespace std; 4 //第一种方法是常规方法,不是使用递归,首先将第一个元素的值赋值给max,然后遍历数组, 5 //当遇到超高max的值时将其赋值给max,最后就将得到最大值 6 int getMax_fir(int *arr,int n) { 7 int max = arr[0]; 8 for (int i = 1; i < n; i++) { 9 if (max < arr[i]) 10 max = arr[i]; 11 } 12 return max; 13 } 14 15 //第二种方法是使用递归,递归就是讲大规模问题转成小规模的相同问题,将数组看成第一个元素与后面的数组的最大值作比较, 16 //后面的数组求最大值又可以看成它的第一个元素与后面的数组最大值比大小,以此类推性,形成递归 17 int getMax_sec(int *arr, int n) { 18 if (n == 1) //设置终止条件 19 return arr[0]; 20 int tem = getMax_sec(arr + 1, n - 1); //指针加一表示下一个元素开始 21 if (arr[0] > tem) 22 return arr[0]; 23 else 24 return tem; 25 } 26 27 int main(int argc, char *argv[]) { 28 int arr[10] = { 2,4,5,65,2,8,2,5,6,55 }; 29 cout << getMax_fir(arr, 10) << endl; 30 cout << getMax_sec(arr, 10)<<endl; 31 getchar(); 32 return 0; 33 } 说明: (1)第一种方法是常规方法,不是使用递归,首先将第一个元素的值赋值给max,然后遍历数组,当遇到超高max的值时将其赋值给max,最后就将得到最大值。 (2)第二种方法是使用递归,递归就是讲大规模问题转成小规模的相同问题,将数组看成第一个元素与后面的数组的最大值作比较,后面的数组求最大值又可以看成它的第一个元素与后面的数组最大值比大小,以此类推性,形成递归。第二种方法符合题目要求。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册