首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据结构面试题以及答案整理

四、线性结构的特点 (1)集合中必存在唯一的一个”第一个元素”; (2)集合中必存在唯一的一个”最后的元素”; (3)除最后元素之外,其它数据元素均有唯一的”后继”; (4)除第一元素之外,其它数据元素均有唯一的...,从边集E中选择出权值最小的边且该边的两个端点不在一个联通分支中,则把该边加入到T中,否则就再从新选择一条权值最小的边,直到所有的顶点都在一个联通分支中为止。...(3)分块查找:先把查找表分为若干子表,要求每个子表的元素都要比后面的子表的元素小,也就是保证块间是有序的(但是子表内不一定有序),把各子表中的最大关键字构成一张索引表,表中还包含各子表的起始地址。...(7)快速排序(不稳定):基本思路为:在序列中任意选择一个元素作为中心,比它大的元素一律向后移动,比它小的元素一律向前移动,形成左右两个子序列,再把子序列按上述操作进行调整,直到所有的子序列中都只有一个元素时序列即为有序...(7)快速排序(不稳定):基本思路为:在序列中任意选择一个元素作为中心,比它大的元素一律向后移动,比它小的元素一律向前移动,形成左右两个子序列,再把子序列按上述操作进行调整,直到所有的子序列中都只有一个元素时序列即为有序

1.3K30

面试必备:30 个 Java 集合面试问题及答案

你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。 Map是一个将key映射到value的对象.一个Map不能包含重复的key:每个key最多只能映射一个value。...然而,把它放到集合的所有实现中也是没有意义的。这是因为Collection是一个抽象表现。重要的是实现。 当与具体实现打交道的时候,克隆或序列化的语义和含义才发挥作用。...所以,具体实现应该决定如何对它进行克隆或序列化,或它是否可以被克隆或序列化。点击这里一文学会序列化。 在所有的实现中授权克隆和序列化,最终导致更少的灵活性和更多的限制。...对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。...2)与ArrayList相比,在LinkedList中插入、添加和删除一个元素会更快,因为在一个元素被插入到中间的时候,不会涉及改变数组的大小,或更新索引。

97320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面试必备:30 个 Java 集合面试问题及答案

    你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。 Map是一个将key映射到value的对象.一个Map不能包含重复的key:每个key最多只能映射一个value。...然而,把它放到集合的所有实现中也是没有意义的。这是因为Collection是一个抽象表现。重要的是实现。 当与具体实现打交道的时候,克隆或序列化的语义和含义才发挥作用。...所以,具体实现应该决定如何对它进行克隆或序列化,或它是否可以被克隆或序列化。点击这里一文学会序列化。 在所有的实现中授权克隆和序列化,最终导致更少的灵活性和更多的限制。...对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。...2)与ArrayList相比,在LinkedList中插入、添加和删除一个元素会更快,因为在一个元素被插入到中间的时候,不会涉及改变数组的大小,或更新索引。

    66520

    78. 别找了,Java集合面试问题这里帮你总结好了

    然而,把它放到集合的所有实现中也是没有意义的。这是因为Collection是一个抽象表现。重要的是实现。 当与具体实现打交道的时候,克隆或序列化的语义和含义才发挥作用。...所以,具体实现应该决定如何对它进行克隆或序列化,或它是否可以被克隆或序列化。 在所有的实现中授权克隆和序列化,最终导致更少的灵活性和更多的限制。特定的实现应该决定它是否可以被克隆和序列化。...对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。...两者都是基于索引的,内部由一个数组支持。 两者维护插入的顺序,我们可以根据插入顺序来获取元素。 ArrayList和Vector的迭代器实现都是fail-fast的。...与ArrayList相比,在LinkedList中插入、添加和删除一个元素会更快,因为在一个元素被插入到中间的时候,不会涉及改变数组的大小,或更新索引。

    6610

    2022-12-22:给定一个数字n,代表数组的长度, 给定一个数字m,代表数组每个位置都可以在1~m之间选择数字, 所有长度为n的数组中,最长递增子序列长度为

    2022-12-22:给定一个数字n,代表数组的长度,给定一个数字m,代表数组每个位置都可以在1~m之间选择数字,所有长度为n的数组中,最长递增子序列长度为3的数组,叫做达标数组。返回达标数组的数量。...答案2022-12-22:参考最长递增子序列。代码用rust编写。代码如下:use std::iter::repeat;fn main() { println!...// f、s、t : ends数组中放置的数字!...// n : 一共的长度!// m : 每一位,都可以在1~m中随意选择数字// 返回值:i..... 有几个合法的数组!...// 尤其是理解ends数组的意义!fn number2(n: i32, m: i32) -> i32 { //repeat(vec!

    2.1K20

    面试必备:30 个 Java 集合面试问题及答案

    你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。 Map是一个将key映射到value的对象.一个Map不能包含重复的key:每个key最多只能映射一个value。...然而,把它放到集合的所有实现中也是没有意义的。这是因为Collection是一个抽象表现。重要的是实现。 当与具体实现打交道的时候,克隆或序列化的语义和含义才发挥作用。...所以,具体实现应该决定如何对它进行克隆或序列化,或它是否可以被克隆或序列化。点击这里一文学会序列化。 在所有的实现中授权克隆和序列化,最终导致更少的灵活性和更多的限制。...对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。...2)与ArrayList相比,在LinkedList中插入、添加和删除一个元素会更快,因为在一个元素被插入到中间的时候,不会涉及改变数组的大小,或更新索引。

    48120

    除自身以外数组的乘积

    给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。...,而是利用索引左侧所有数字的乘积和右侧所有数字的乘积(即前缀与后缀)相乘得到答案。...对于给定索引 iii,我们将使用它左边所有数字的乘积乘以右边所有数字的乘积。下面让我们更加具体的描述这个算法。 算法     初始化两个空数组 L 和 R。...对于给定索引 i,L[i] 代表的是 i 左侧所有数字的乘积,R[i] 代表的是 i 右侧所有数字的乘积。     我们需要用两个循环来填充 L 和 R 数组的值。...i,除 nums[i] 之外其余各元素的乘积就是左侧所有元素的乘积乘以右侧所有元素的乘积 for (int i = 0; i < length; i++) {

    15230

    Python考试基础知识

    一、python的基本语法(包括包的导入) Python的基本语法汇总 二、序列类型的数据结构(重点考察列表及其基本方法) 1、前言 序列顾名思义就是数据按照顺序排列,这个顺序实际上就是数据在内存中的顺序排列...序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字即它的位置或索引。序列都可以进行的操作有索引、截取(切片)、加、乘、成员检查。...除此之外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法如list中的Max()方法等。Python内置序列类型最常见的是列表、元组、字典和集合。...方法 功能 list. append(obj) 在列表末尾添加新的对象 list. count(obj) 统计某个元素在列表中出现的次数 list. extend(seq) 在列表末尾一次性追加另一 个序列中的多个值...移除列表中的一个元素(默认最后一一个元素),并且返回该元素的值 list. remove( obj) 移除列表中某个值的第一个匹配项 list, reverse( ) 反转列表中元素顺序 list.

    8610

    除自身以外数组的乘积(LeetCode 238)

    1.问题描述 给你一个整数数组 nums,返回数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。...可以先计算给定数组所有元素的乘积,然后对数组中的每个元素 x,将乘积除以 x 求得除自身值以外的数组乘积。 然后这样的解决方法有一个问题,就是如果输入数组中出现 0,那么这个方法就失效了。...这增加了这个问题的难度。 4.1 暴力 遍历数组中的每一个元素,将当前元素之外的元素依次相乘,然后写到结果数组。...时间复杂度: O(n^2),需要两层遍历,第一层为遍历数组中的每一个元素,第二层是遍历数组中除当前元素的其他所有元素。 空间复杂度: O(1)。...对于给定索引 i,我们将使用它左边所有数字的乘积乘以右边所有数字的乘积。 具体步骤如下: 初始化两个空数组 L 和 R。

    14410

    TensorFlow入门:一篇机器学习教程

    在这个TensorFlow教程中,您将学习如何在TensorFlow中使用简单而强大的机器学习方法,以及如何使用它的一些辅助库来调试,可视化和调整使用它创建的模型。...分割 分割是一个过程,其中一个维度是将维度映射到提供的分段索引上的过程,结果元素由索引行确定。...分割实际上是在重复索引下对元素进行分组,因此,例如,在我们的例子中,我们[0, 0, 1, 2, 2]对张量应用了分割的ID tens1,这意味着第一个和第二个数组将在分割操作之后进行变换(在我们的情况下为总和...张量中的第三个元素tens1是未触及的,因为它没有被分组到任何重复的索引中,最后的两个数组和第一组的情况相同。除总结外,TensorFlow支持产品,平均值,最大值和最小值。 ?...序列实用程序包括如下方法: argmin函数,该函数返回输入张量轴上最小值的索引, argmax函数,该函数返回输入张量轴上最大值的索引, setdiff计算两个数字或字符串列表之间的差异, where

    4.1K10

    《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》第13章 使用TensorFlow加载和预处理数据

    然后,无论什么时候取元素,就会从缓存中随便随机取出一个元素,从源数据集中取一个新元素替换。从缓冲器取元素,直到缓存为空。必须要指定缓存的大小,最好大一点,否则随机效果不明显。...在这个例子中,是告诉TensorFlow,所有特征列都是浮点数,缺失值默认为,但提供了一个类型是tf.float32的空数组,作为最后一列(目标)的默认值:数组告诉TensorFlow这一列包含浮点数,...decode_csv()函数返回一个标量张量(每列一个)的列表,但应该返回1D张量数组。所以在所有张量上调用了tf.stack(),除了最后一个。...注意,在所有这些情况下,还可以使用NumPy数组(但仍需要加载和预处理)。...注意,需要告诉该函数索引的总数量,索引总数等于词典大小加上未登录词桶的数量。现在你就知道如何用TensorFlow将类型特征编码为独热矢量了。 和之前一样,将这些操作写成一个独立的类并不难。

    3.4K10

    leetcode刷题(118)——除自身以外数组的乘积

    给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。...题解: 我们不必将所有数字的乘积除以给定索引处的数字得到相应的答案,而是利用索引左侧所有数字的乘积和右侧所有数字的乘积(即前缀与后缀)相乘得到答案。...方法一:左右乘积列表 1.初始化两个空数组 L 和 R。对于给定索引 i,L[i] 代表的是 i 左侧所有数字的乘积,R[i] 代表的是 i 右侧所有数字的乘积。...i,除 nums[i] 之外其余各元素的乘积就是左侧所有元素的乘积乘以右侧所有元素的乘积 for (int i = 0; i 数组不算进空间复杂度中,因此我们只需要常数的空间存放变量。

    27120

    堆排序

    定义二: 若设二叉树的深度为 hh,除第 hh 层外,其它各层 (1~h−1)(1~h-1) 的结点数都达到最大个数,hh 层所有的结点都连续集中在最左边,这就是完全二叉树。...存储结构: 堆是在计算机中是如何进行存储的呢? 一般都用数组来表示堆,ii 结点的父结点下标就为 (i–1)/2(i – 1) / 2 。...堆排序 堆排序时如何进行的呢(以大顶堆为例)? 1. 对数据构建大顶堆。这样最大的元素位于堆顶,即数组的第一个元素。 2. 交换数组第一个元素和最后一个元素。 3....对第一个元素到除倒数第一个元素之外的数据序列再构建大顶堆。其实这就是重复第一步了。 4. 然后再重复第二步,交换第一个元素和倒数第二个元素。 5. 以此类推,直到堆中只有一个元素。...initHeap()函数是用来构建大顶堆的我们需要从倒数第二层节点开始依次进行比较。而我们需要计算倒数第二层元素在数组中的索引位置。

    39350
    领券