数据结构与算法
Jaeshn
这个作者很懒,什么都没留下…
展开
-
LeetCode(二):栈与队列
(三) 栈与队列相关练习题20. 有效的括号155. 最小栈225. 用队列实现栈232. 用栈实现队列496. 下一个更大元素 I682. 棒球比赛844. 比较含退格的字符串641. 设计循环双端队列150. 逆波兰表达式求值32. 最长有效括号224. 基本计算器239. 滑动窗口最大值(四) LeetCode练习题Python3代码20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号原创 2020-10-18 19:31:09 · 201 阅读 · 1 评论 -
数据结构与算法——栈与队列(二)
(二) 队列定义和栈相似,队列也是一种特殊的线性表,跟数组的不同之处也体现在增删等操作上。队列的插入操作只能在队列的末尾进行,队列的删除操作只能在队头进行,队列是一种先进先出的线性表。用数组实现的队列叫链式队列,用链表实现的队列叫链式队列。队列的基本操作和栈相似,对于队列,插入数据只能在队尾进行,删除数据只能在队头进行,在队列中插入数据我们叫入队enqueue,删除队列中的数据我们叫出队dequeue。同样的我们分别基于顺序队列和链式队列对他们的增加删除操作进行讨论。链式队列对于链式队列,在初原创 2020-10-16 11:41:53 · 600 阅读 · 0 评论 -
数据结构与算法——栈与队列(一)
1 栈定义栈是一种特殊的线性表,与数组和链表的不同之处体现在增加和删除操作。具体表现在栈的读取插入和删除操作只能在栈的末尾进行。栈是一种先进后出的线性表结构,用数组存储数据的栈叫顺序栈,用链表的形式存储数据的栈我们叫链栈。栈的基本操作对于栈来说,插入数据以及删除数据都只能在栈尾进行,在栈中增加数据我们叫压栈push,删除栈中的数据我们叫出栈pop。接下来对于栈的基本操作,我们分别基于顺序栈和链栈来进行讨论。顺序栈class ArrayStack(): """顺序栈""" de原创 2020-10-16 11:33:31 · 311 阅读 · 0 评论 -
LeetCode(一):数组与链表
15 三数之和链接: https://leetcode-cn.com/problems/reverse-nodes-in-k-group/给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]原创 2020-10-02 22:57:07 · 226 阅读 · 0 评论 -
数据结构与算法——数组与链表(三)
3 数组与链表对比数组与链表同为线性表结构,那么数组与链表在使用上的区别在哪里呢?数组适合查找,数组支持随机访问,根据下标随机访问的时间复杂度为O(1);链表则适合插入以及删除操作,插入与删除本身的时间复杂度为O(1)。数组与链表基础操作的时间复杂度对比数组与链表在内存中的优缺点数组在内存中是一块连续的内存空间,简单易用,访问效率更高;但是由于数组的大小固定,一经声明,便在内存中占用了一块空间,如果声明的空间过大,会造成大量的内存浪费,反之声明空间太小会导致频繁需要搬移数据造成更多耗时。链表将原创 2020-10-02 22:55:59 · 93 阅读 · 0 评论 -
数据结构与算法——数组与链表(二)
2 链表定义链表是一种线性表结构,相比较数组,链表稍微复杂一点,链表不需要一组连续的内存空间,它通过指针将一组零散的内存空间连起来使用。因此一组数据存储在链表中消耗的内存要比数组多,因为需要指针存储下一个数据的地址,会产生额外的空间。# 创建存储int类型数据的链表节点类class Node(): '''链表结构的Node节点''' def __init__(self, val, next = None): '''Node节点的初始化方法. 参数:原创 2020-10-01 12:25:03 · 136 阅读 · 0 评论 -
数据结构与算法——数组与链表(一)
1 数组定义数组是一种用一片连续的内存空间来存储一组相同类型的数据的线性表结构。“连续的内存空间”这个特点,决定了数组支持随机访问的特性。计算机通过地址来访问内存中的数据,数组在内存中存放的是它的首地址,一维数组的寻址公式为a[i]address=baseaddress+i∗sizeof(datatype)a[i]_{address} = base_{address} + i * sizeof(datatype)a[i]address=baseaddress+i∗sizeof(datatype)。原创 2020-09-30 22:47:29 · 134 阅读 · 0 评论 -
数据结构与算法——时间复杂度
复杂度用于衡量程序的运行效率,复杂度是一个关于数据量n的函数,一般用大O表示法来表示运行的量级,常见的时间复杂度有O(1)、O(logn)、O(n)、O(n2)、O(n3)、O(2n)、O(n!)。大O表示法表示的复杂度与常系数无关,比如计算后复杂度为O(n)和O(2n)的代码,他们的时间复杂度都是O(n);如果计算后的时间复杂度是多项式级的时间复杂度,那么代码的时间复杂度则以最高次幂为准,比如计算后复杂度为O(n2+n)与O(n2)的两段代码,他们的时间复杂度都是O(n2);对于O(1)的时间复杂度,O原创 2020-09-30 22:46:09 · 2350 阅读 · 0 评论 -
LeetCode刷题(六)
641. Design Circular DequeDescriptionDesign your implementation of the circular double-ended queue (deque).Your implementation should support following operations:MyCircularDeque(k): Constructor,...原创 2019-05-31 23:03:22 · 166 阅读 · 0 评论 -
LeetCode刷题(五)
141. Linked List CycleDescriptionGiven a linked list, determine if it has a cycle in it.To represent a cycle in the given linked list, we use an integer pos which represents the position (0-indexed...原创 2019-06-01 10:22:25 · 93 阅读 · 0 评论 -
LeetCode刷题(四)
15. 3SumDescriptionGiven an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note:The solutio...原创 2019-05-31 21:41:08 · 98 阅读 · 0 评论 -
LeetCode刷题(三)
102. Binary Tree Level Order TraversalDescriptionGiven a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).For example:ExampleGiven bina...原创 2019-04-21 14:06:55 · 94 阅读 · 0 评论 -
LeetCode刷题(二)
26. Remove Duplicates from Sorted ArrayDescriptionGiven a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.Do not allocate extra s...原创 2019-04-18 20:08:11 · 148 阅读 · 0 评论 -
LeetCode刷题(一)
1. Two SumDescriptionGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you...原创 2019-04-18 16:06:21 · 182 阅读 · 0 评论