
数组、队列、栈、链表
数组、队列、栈线性结构相关的题目
花千树hss
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
并查集及其java实现
并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。 使用并查集时,首先会存在一组不相交的动态集合 S={S1,S2,⋯,Sk}S=\lbrace{S_1,S_2,⋯,S_k\rbrace}S={S1,S2,⋯,Sk},一般都会使用一个整数表示集合中的一个元素。 每个集合可能包含一个或多个元素,并选出集转载 2020-05-12 10:46:18 · 374 阅读 · 0 评论 -
设计RandomPool结构
题目描述 设计一种结构,在该结构中有如下三个功能: insert(key):将某个key加入到该结构,做到不重复加入。 delete(key):将原本在结构中的某个key移除。 getRandom(): 等概率随机返回结构中的任何一个key。 要求:Insert、delete和getRandom方法的时间复杂度都是 O(1)。 思路 维护两个hashmap,一个存放<key,Integer>,一个存放 <key,Integer> size记录当前有多少个key 插入时在两个map中同原创 2020-05-11 17:30:55 · 166 阅读 · 0 评论 -
两个单链表相交的一系列问题
问题描述 在本题中,单链表可能有环,也可能无环。给定两个单链表的头节点 head1和head2,这两个链表可能相交,也可能不相交。请实现一个函数,如果两个链表相交,请返回相交的第一个节点;如果不相交,返回null 即可。 要求:如果链表1 的长度为N,链表2的长度为M,时间复杂度请达到 O(N+M),额外空间复杂度请达到O(1)。 ...原创 2020-05-06 15:39:59 · 158 阅读 · 0 评论 -
复制含有随机指针节点的链表
题目描述 一种特殊的链表节点类描述如下: public class Node { public int value; public Node next; public Node rand; public Node(int data) { this.value = data; } } Node类中的value是节点值,next指针和正常单链表中next指针的意义一样,都指向下一个节...原创 2020-04-29 18:08:26 · 124 阅读 · 0 评论 -
将单向链表按某值划分成左边小、中间相等、右边大的形式
题目描述 给定一个单向链表的头节点head,节点的值类型是整型,再给定一个整数pivot。实现一个调整链表的函数,将链表调整为左部分都是值小于 pivot 的节点,中间部分都是值等于pivot的节点,右部分都是值大于 pivot的节点。 除这个要求外,对调整后的节点顺序没有更多的要求。 例如:链表9->0->4->5->1,pivot=3。 调整后链表可以是1->0-...原创 2020-04-29 16:47:27 · 209 阅读 · 0 评论 -
判断一个链表是否为回文结构
题目描述 给定一个链表的头节点head,请判断该链表是否为回文结构。 例如: 1->2->1,返回true。 1->2->2->1,返回true。 15->6->15,返回true。 1->2->3,返回false。 进阶: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)。 思路 链表相关的问题,笔试时尽快做出来即可,空间...原创 2020-04-29 15:37:46 · 577 阅读 · 0 评论 -
打印两个有序链表的公共部分
题目描述 给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。 思路 类似于快速排序的merge方法。 代码 public class PrintCommonPart { public static class Node{ public int val; public Node next; public Node(int...原创 2020-04-28 10:35:32 · 137 阅读 · 0 评论 -
在行列都排好序的矩阵中找数
题目描述 给定一个有N*M的整型矩阵matrix和一个整数K, matrix的每一行和每一列都是排好序的。实现一个函数,判断K 是否在matrix中。 例如: 0 1 2 5 2 3 4 7 4 4 4 8 5 7 7 9 如果K为7,返回true;如果K为6,返回false。 要求:时间复杂度为O(N+M),额外空间复杂度为O(1)。 思路 从矩阵的右上角或者左下角开始寻找,当从右上角开始寻找时...原创 2020-04-28 10:24:20 · 215 阅读 · 0 评论 -
“之”字形打印矩阵
题目描述 给定一个矩阵matrix,按照“之”字形的方式打印这 个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 “之”字形打印的结果为:1,2,5,9,6,3,4,7,10,11, 8,12 要求: 额外空间复杂度为O(1)。 思路 这题也应使用宏观结构的思想,不要局限与下标要怎么变。 首先给两个点A、B,初始位置都在0,0点。A向右移动,B向左移动,每...原创 2020-04-27 17:38:22 · 770 阅读 · 0 评论 -
旋转正方形矩阵
题目描述 给定一个整型正方形矩阵matrix,请把该矩阵调整成顺时针旋转90度的样子。 要求: 额外空间复杂度为O(1)。 思路 从外圈开始,每一圈各自旋转90度,每一圈左上角和右下角的点的坐标可以确定,通过改变左上角和右下角的点缩小正方形。 代码 public static void rotate(int[][] matrix){ int tR=0; int tC=0; ...原创 2020-04-27 16:27:45 · 328 阅读 · 0 评论 -
转圈打印矩阵
题目描述 给定一个整型矩阵matrix,请按照转圈的方式打印它。 例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果为:1,2,3,4,8,12,16,15,14,13,9, 5,6,7,11,10 要求:额外空间复杂度为O(1)。 思路 按圈打印,给定左上角点的坐标和右下角点的坐标,顺时针打印一圈,然后左上角的点往右下方走一个,右下角的点往左上方走一个...原创 2020-04-24 12:17:48 · 205 阅读 · 0 评论 -
猫狗队列问题
题目描述 宠物、狗和猫的类如下: public class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.type; } } public class Dog extends Pet { ...原创 2020-04-24 10:30:17 · 146 阅读 · 0 评论 -
用队列实现栈;用栈实现队列
图的广度优先遍历需要用到栈,但有时题目会要求你不能使用栈,这是就需要用两个队列实现栈,然后用这个栈来实现图的广度优先遍历。 用两个队列实现栈的基本思路: 数据push时只进data队列; 数据pop时先将data中的数据倒入help队列中,留最后一个在data队列中,然后返回给用户,最后data和help队列的指针交换一下; 数据peek时方法和pop一样,只是peek的数据还需要入help队列...原创 2020-04-22 20:41:52 · 120 阅读 · 0 评论 -
在实现栈的基本功能的基础上, 再实现返回栈中最小元素的操作
实现一个特殊的栈, 在实现栈的基本功能的基础上, 再实现返回栈中最小元素的操作。 【要求】 1. pop、push、getMin操作的时间复杂度都是O(1)。 2. 设计的栈类型可以使用现成的栈结构。 思路:同时维护两个栈结构,一个栈就是正常的栈,另一个栈放当前的最小值,和第一个栈同步操作。 package LinearStructure; import java.util.Stack; pu...原创 2020-04-22 19:45:07 · 244 阅读 · 0 评论 -
用数组结构实现大小固定的队列和栈
public class Array_To_Stack_Queue { //使用数组结构实现栈 public static class ArrayStack{ private Integer[] arr; private int size; public ArrayStack(int initSize){ ...原创 2020-04-22 19:21:34 · 142 阅读 · 0 评论