![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【数据结构与算法】数据结构
IT码客
明日复明日,明日何其多,以此博文来约束自己,多学习,多总结。如不巧能帮助他人,实属本人之荣幸。
展开
-
数据结构【栈】(七):使用栈计算后缀表达式
后缀表达式的计算思路为:从左到右扫描后缀表达式,如果遇到操作数,将其压入栈中,如果遇到操作符,则从栈中弹出两个操作数,计算结果,然后把结果入栈,直到遍历完后缀表达式,则计算完成,此时的栈顶元素即为计算结果。/** * 栈实现表达式计算 * * @author lkf * @date 2019-03-18 16-37 */public class StackExpression {...原创 2019-03-19 21:27:04 · 585 阅读 · 0 评论 -
数据结构【队列】(十一):反转队列前K个元素
问题描述给定一个队列,元素分别为:1 2 3 4 5,要求反转队列前3个元素,期望结果:3 2 1 4解题思路需要使用一个栈和一个新队列来实现反转队列前k个元素1、从原始队列中取出k个元素,分别压入栈中2、从栈中弹出所有元素逐个添加到一个新队列3、把原始队列中剩下的元素也添加到新队列中代码实现/** * 反转队列前K个元素 * <p> * 把前k个元素压栈,然后放...原创 2019-03-24 14:49:31 · 2126 阅读 · 0 评论 -
数据结构【栈】(十):使用栈实现队列
问题描述使用两个栈模拟队列,比如输入:1 2 3 4,则要求输出仍是:1 2 3 4解题思路1、有两个栈,一个用来存放入队数据(数据栈),一个用来辅助(辅助栈)实现数据出队。2、数据添加时,会依次压人栈,取数据时会取栈顶元素,但要模拟队列的先进先出,所以就得取栈底元素,那么辅助栈就派上用场了,把数据栈的元素依次弹出到辅助栈,保留最后一个元素,数据栈就直接把元素弹出,这时数据栈就已经空了。...原创 2019-03-24 14:35:21 · 428 阅读 · 0 评论 -
数据结构【栈】(九):使用栈检查括号是否匹配
问题描述给一个字符串表达式,包含一个或多个括号,现要求使用栈检查该字符串表达式中的括号是否平衡。解答思路遍历字符串中的每个字符,如果:1)出现左括号则进栈2)出现右括号则首先检判断栈是否为空,如果不为空,则判断与栈顶元素是否与之匹配,如果匹配则弹出栈顶元素。3)最后若栈空,则表明匹配成功;否则表明不匹配。代码实现 /** * @param s 字符串表达式 * ...原创 2019-03-24 14:18:06 · 3877 阅读 · 0 评论 -
数据结构【数组】(六):合并两个有序数组
leetcode-88给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m...原创 2019-03-18 21:04:23 · 1384 阅读 · 0 评论 -
数据结构【数组】(五):原地删除有序数组中的重复数
leetcode-26给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。...原创 2019-03-18 21:02:47 · 1756 阅读 · 0 评论 -
数据结构【数组】(四):查找数组中不重复的数
1、问题描述在一个整型数组中,有些数字是重复的,有些是不重复的,请找出不重复的元素。举例:1、有且仅有一个数字不重复情况数组:2 4 3 6 3 2 5 6 5输出:42、多个数字不重复情况数组:2 4 3 6 3 2 5 5输出:4,62、代码实现2.1、不重复数字有且仅有一个情况该种情况可以使用位运算,一个数异或它本身等于0public static void ma...原创 2019-03-17 22:12:36 · 4893 阅读 · 1 评论 -
数据结构【数组】(三):查找数组中第一个不重复的数
1、问题描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个重复的数字。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。数组 : -1 2 -1 3 2第一个不重复元素 : 3数组 : 9 4 9 6 7 4第一个不重复元素 : 62、代码实现解题1:双层循环一个简单的解决方案是使用两个循环。外部循环逐个遍历元素,内部...原创 2019-03-17 22:12:03 · 1605 阅读 · 0 评论 -
数据结构【数组】(二):查找数组中第二小的元素
1、思路简述1.1、数组排序使用排序算法(快排、堆排等),对数组递增排序。排好序的数组,前两个元素就是两个最小的元素,这种方式的时间复杂度取决于排序算法,排序算法效率最高的时间复杂度是O(nlogn)1.2、遍历数组:对数组遍历两次,第一次遍历中找到最小元素,比如为x;第二次遍历中,找到最小的元素并且大于x,这种方法的时间复杂度是O(n)。2、代码实现此处代码实现,通过一次遍历找到最小...原创 2019-03-17 22:11:29 · 2255 阅读 · 2 评论 -
数据结构(一):面试前你应该知道的数据结构
原文地址:https://medium.freecodecamp.org/the-top-data-structures-you-should-know-for-your-next-coding-interview-36af0831f5e3文章目录1、开篇简述2、什么是数据结构3、为什么我们需要数据结构4、常用的数据结构4.1、数组(Arrays)4.1.1、数组的基本操作4.1.2、数组常...原创 2019-03-17 16:45:57 · 377 阅读 · 0 评论 -
数据结构【栈】(八):使用栈为另一个栈排序
题目一个栈中的元素都是整型,现在想将该栈从栈顶到栈底从大到小排列,只允许申请一个栈,除此之外可以申请新的变量,但不能申请额外的数据结构。思路使用两个栈和一个变量,把排序栈中的第一个元素压入辅助栈中,如果排序栈中新弹出的cur元素比辅助栈的元素大的话,就把辅助栈中的元素压回排序栈,把cur元素压入辅助栈中。不断重复此过程,辅助栈中的元素始终是从小到大排序。代码实现public class...原创 2019-03-19 21:48:44 · 301 阅读 · 0 评论 -
数据结构【队列】(十二):队列实现栈
问题描述使用两个队列实现栈,要满足后入先出,比如输入:1 2 3 4 5,那么输出就应该是:5 4 3 2 1解题思路使用两个队列,分别是数据队列和辅助队里,1、数据添加到数据队列中2、元素出栈时,将有数据的队列元素(保留最后一个元素)移动到无数据的队列3、将最后一个元素出队,正式所需要的出栈数据代码实现public class QueueImplamentStack { ...原创 2019-03-24 16:41:40 · 237 阅读 · 0 评论