noi2017笔试题及答案_第1页
noi2017笔试题及答案_第2页
noi2017笔试题及答案_第3页
noi2017笔试题及答案_第4页
noi2017笔试题及答案_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

noi2017笔试题及答案NOI2017笔试题及答案一、选择题(20分,每题2分,共10题)1.以下关于时间复杂度的描述中,正确的是[]A.O(n²)的时间复杂度一定比O(n³)的时间复杂度低B.O(n)的时间复杂度一定比O(n²)的时间复杂度低C.O(2n)的时间复杂度一定比O(n³)的时间复杂度高D.O(nlogn)的时间复杂度一定比O(n²)的时间复杂度高答案:【B】解析:时间复杂度比较是基于n趋近于无穷大时的增长速率。O(n²)确实比O(n³)低,因为n²的增长速度慢于n³;O(n)确实比O(n²)低,因为n的增长速度慢于n²;但O(2n)实际上是O(n),所以O(2n)比O(n³)低;O(nlogn)确实比O(n²)低,因为nlogn的增长速度慢于n²。因此,只有B选项是正确的。2.在快速排序算法中,最坏情况下时间复杂度为O(n²)的情况是[]A.待排序序列已经有序B.待排序序列是逆序C.每次划分都恰好将序列分成两个相等的部分D.使用随机选择枢轴元素答案:【A】解析:快速排序的最坏情况发生在每次划分都极度不平衡时。当待排序序列已经有序或逆序时,如果选择第一个或最后一个元素作为枢轴,会导致每次划分都极不平衡,时间复杂度退化为O(n²)。选项C实际上是最优情况,时间复杂度为O(nlogn)。选项D通过随机选择枢轴元素可以避免最坏情况的发生。因此,正确答案是A。3.以下数据结构中,最适合实现LRU(最近最少使用)缓存淘汰策略的是[]A.普通链表B.双向链表+哈希表C.栈D.队列答案:【B】解析:LRU缓存淘汰策略需要能够在O(1)时间内完成查找、插入和删除操作。双向链表可以维护访问顺序,哈希表可以提供快速查找。将两者结合,可以实现高效的LRU缓存。普通链表查找效率低,栈和队列无法直接支持LRU策略。因此,正确答案是B。4.在图论中,以下关于Dijkstra算法的说法正确的是[]A.Dijkstra算法可以处理带有负权边的图B.Dijkstra算法的时间复杂度为O(V²),其中V是顶点数C.Dijkstra算法使用贪心策略,但可能无法得到正确结果D.Dijkstra算法只能计算从源点到其他所有点的最短路径答案:【B】解析:Dijkstra算法不能处理带有负权边的图,因为它的贪心策略在这种情况下会失效。Dijkstra算法的时间复杂度为O(V²),使用优先队列可以优化到O(E+VlogV)。Dijkstra算法使用贪心策略,在非负权图中可以得到正确结果。Dijkstra算法确实可以计算从源点到其他所有点的最短路径。因此,正确答案是B。5.以下关于动态规划的描述中,错误的是[]A.动态规划适用于具有重叠子问题的优化问题B.动态规划通常包含最优子结构和重叠子问题两个特征C.动态规划只能解决最优化问题,不能解决计数问题D.动态规划的自底向上实现通常比递归实现效率更高答案:【C】解析:动态规划不仅可以解决最优化问题,如背包问题、最长公共子序列等,也可以解决计数问题,如组合数计算、路径计数等。动态规划确实适用于具有重叠子问题的优化问题,通常包含最优子结构和重叠子问题两个特征。自底向上实现避免了递归带来的额外开销,通常比递归实现效率更高。因此,错误选项是C。6.在二叉树的遍历中,以下关于中序遍历和后序遍历的说法正确的是[]A.如果已知一棵二叉树的中序遍历和后序遍历,可以唯一确定这棵二叉树B.如果已知一棵二叉树的中序遍历和前序遍历,可以唯一确定这棵二叉树C.如果已知一棵二叉树的前序遍历和后序遍历,可以唯一确定这棵二叉树D.无论知道哪两种遍历结果,都无法唯一确定二叉树答案:【B】解析:在二叉树的遍历中,已知中序遍历和前序遍历或中序遍历和后序遍历可以唯一确定二叉树结构,因为前序/后序遍历的第一个/最后一个元素是根节点,在中序遍历中可以确定左右子树的范围。但仅知道前序遍历和后序遍历无法唯一确定二叉树,特别是对于非满二叉树,可能有多种结构满足这两种遍历结果。因此,正确答案是B。7.以下关于哈希表的描述中,错误的是[]A.哈希冲突是指不同的关键字通过哈希函数得到相同的哈希地址B.处理哈希冲突的方法有开放地址法和链地址法C.哈希表的查找时间复杂度在最坏情况下可以达到O(n)D.哈希函数的设计应该避免所有关键字都映射到同一个地址答案:【D】解析:哈希冲突确实是不同的关键字通过哈希函数得到相同的哈希地址。处理哈希冲突的常见方法有开放地址法和链地址法。在最坏情况下,如果所有关键字都映射到同一个地址,哈希表的查找时间复杂度会退化为O(n)。然而,哈希函数的设计应该尽量减少冲突,但并非完全避免所有关键字映射到同一个地址,这在某些情况下是不可能的。因此,错误选项是D。8.在字符串匹配算法中,KMP算法的主要优势在于[]A.预处理模式串的时间复杂度为O(m),其中m是模式串长度B.KMP算法的空间复杂度比朴素匹配算法更低C.KMP算法可以处理Unicode字符集D.KMP算法在最好情况下的时间复杂度为O(n/m)答案:【A】解析:KMP算法的主要优势在于它通过预处理模式串构建部分匹配表(next数组),使得在文本串中匹配失败时可以跳过不必要的比较,预处理时间为O(m)。KMP算法的空间复杂度需要存储next数组,比朴素匹配算法略高。KMP算法与字符集无关,可以处理任何字符集。KMP算法在最好情况下的时间复杂度为O(n),其中n是文本串长度。因此,正确答案是A。9.以下关于红黑树的描述中,正确的是[]A.红黑树是一种平衡二叉搜索树,其任何路径的黑色节点数相等B.红黑树的插入操作最坏情况下时间复杂度为O(logn)C.红黑树的所有叶子节点都是黑色D.红黑树的颜色规则要求红色节点的子节点必须为黑色答案:【D】解析:红黑树是一种平衡二叉搜索树,其性质包括:每个节点是红色或黑色;根节点是黑色;所有叶子节点都是黑色(NIL节点);红色节点的两个子节点都是黑色;从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。红黑树的插入操作在最坏情况下时间复杂度为O(logn),但可能需要旋转和重新着色来维持平衡。红黑树的叶子节点是NIL节点,通常被视为黑色,但实际实现中可能不存储这些节点。因此,正确答案是D。10.在计算机网络中,TCP协议和UDP协议的主要区别是[]A.TCP是面向连接的,UDP是无连接的B.TCP提供可靠传输,UDP不提供可靠传输C.TCP的传输效率比UDP低D.以上都是答案:【D】解析:TCP(传输控制协议)是面向连接的,提供可靠的数据传输服务,通过序列号、确认应答、重传机制和流量控制等确保数据完整有序地到达。UDP(用户数据报协议)是无连接的,不保证数据包的顺序或可靠性,传输效率更高但不适合需要可靠传输的应用。因此,以上选项描述的都是TCP和UDP的主要区别,正确答案是D。二、填空题(20分,每题2分,共10题)1.在二叉搜索树中,对于任意节点,其左子树中所有节点的值______该节点的值,其右子树中所有节点的值______该节点的值。答案:【小于;大于】解析:二叉搜索树(BST)的基本性质是:对于树中的任意节点,其左子树中所有节点的值都小于该节点的值,其右子树中所有节点的值都大于该节点的值。这个性质使得二叉搜索树能够高效地支持查找、插入和删除操作。如果违反了这一性质,则不是有效的二叉搜索树。2.在快速排序算法中,选择一个______元素作为枢轴(pivot)可以优化算法性能,避免最坏情况的发生。答案:【中间值】解析:快速排序的性能很大程度上取决于枢轴的选择。如果总是选择第一个或最后一个元素作为枢轴,在已经有序或接近有序的序列中会导致划分极度不平衡,时间复杂度退化为O(n²)。选择中间值或使用随机选择枢轴的策略可以更平衡地划分序列,使算法保持平均O(nlogn)的时间复杂度。3.在图论中,如果从顶点u到顶点v存在路径,则称u和v是______的。答案:【连通】解析:图的连通性是图论中的重要概念。如果两个顶点之间存在路径,则称这两个顶点是连通的。如果图中任意两个顶点都是连通的,则称该图为连通图。连通性分析在社交网络分析、路由算法等领域有广泛应用。4.在动态规划中,如果子问题的解被重复使用,这种现象称为______。答案:【重叠子问题】解析:重叠子问题是动态规划能够有效解决问题的关键特征之一。在许多问题中,递归解会重复计算相同的子问题,导致指数级的时间复杂度。动态规划通过存储和重用已解决的子问题的解,避免了重复计算,将时间复杂度降低到多项式级别。5.在哈希表中,处理冲突的开放地址法主要包括线性探测法、二次探测法和______。答案:【双重哈希法】解析:开放地址法是一种处理哈希冲突的方法,当发生冲突时,通过探测寻找下一个可用的槽位。线性探测法使用固定的步长(通常是1)进行探测;二次探测法使用二次函数(如h(k,i)=(h1(k)+c1i+c2i²)modm)进行探测;双重哈希法则使用第二个哈希函数来确定探测步长,可以减少聚集现象。6.在字符串匹配算法中,Boyer-Moore算法的主要优势在于它利用______信息和______信息来跳过不必要的比较。答案:【坏字符;好后缀】解析:Boyer-Moore算法是一种高效的字符串匹配算法,它利用两种启发式信息来跳过不必要的比较:坏字符规则(当字符不匹配时,根据模式串中的字符在文本串中的位置来移动模式串)和好后缀规则(当部分匹配时,根据已匹配的后缀信息来移动模式串)。这两种规则使得Boyer-Moore算法在实际应用中往往比KMP算法更快。7.在平衡二叉搜索树中,AVL树通过保证每个节点的左右子树高度差不超过______来维持平衡。答案:【1】解析:AVL树是一种自平衡二叉搜索树,通过在每个节点存储平衡因子(左子树高度减去右子树高度)来维持平衡。AVL树的性质要求每个节点的平衡因子只能是-1、0或1,即左右子树的高度差不超过1。当插入或删除操作导致平衡因子超出这个范围时,AVL树会通过旋转操作来恢复平衡。8.在操作系统中,进程调度算法中,短作业优先(SJF)算法是一种______调度算法。答案:【非抢占式】解析:短作业优先(SJF)算法是一种基于执行时间的进程调度算法,它优先选择预计执行时间最短的进程。SJF算法可以是非抢占式的(一旦进程开始执行,就让它完成)或抢占式的(如果有更短的作业到达,则抢占当前进程)。在非抢占式SJF中,当前进程执行完毕后,才从就绪队列中选择下一个预计执行时间最短的进程。9.在数据库系统中,事务的ACID特性中的"A"代表______,"C"代表______。答案:【原子性;一致性】解析:事务是数据库操作的基本单位,ACID特性确保了事务的可靠性:原子性(Atomicity)保证事务中的所有操作要么全部完成,要么全部不做;一致性(Consistency)保证事务执行的结果使数据库从一个一致状态转变为另一个一致状态;隔离性(Isolation)保证并发执行的事务互不干扰;持久性(Durability)保证一旦事务提交,其对数据库的修改就是永久性的。10.在计算机网络中,OSI参考模型将网络通信分为7层,从下到上依次是物理层、数据链路层、网络层、传输层、会话层、表示层和______。答案:【应用层】解析:OSI(开放系统互连)参考模型是计算机网络的概念模型,将网络通信功能划分为7层:物理层(负责传输原始比特流)、数据链路层(提供节点间的可靠数据传输)、网络层(负责路由和逻辑寻址)、传输层(提供端到端的可靠数据传输)、会话层(建立、管理和终止会话)、表示层(处理语法和语义)和应用层(为应用程序提供网络服务)。TCP/IP模型是实际使用的网络模型,它简化为4层或5层结构。三、判断题(10分,每题1分,共10题)1.在二叉搜索树中,中序遍历可以得到有序的序列。答案:【正确】解析:二叉搜索树的一个重要性质是,其中序遍历会按照升序或降序访问所有节点。这是因为对于任意节点,其左子树的所有节点值都小于该节点值,右子树的所有节点值都大于该节点值,因此中序遍历(左-根-右)会按照升序访问节点。这使得二叉搜索树可以高效地实现有序数据的存储和检索。2.快速排序的最坏时间复杂度是O(n²),但平均时间复杂度是O(nlogn)。答案:【正确】解析:快速排序的最坏情况发生在每次划分都极度不平衡时,例如当输入序列已经有序或逆序且总是选择第一个或最后一个元素作为枢轴时,时间复杂度会退化为O(n²)。但在随机输入或使用随机化选择枢轴策略的情况下,快速排序的平均时间复杂度为O(nlogn),这使得它成为实践中最常用的排序算法之一。3.在图论中,深度优先搜索(DFS)和广度优先搜索(BFS)都可以用来检测图中是否存在环。答案:【正确】解析:DFS和BFS都可以用来检测图中是否存在环。在DFS中,如果在遍历过程中遇到一个已经被访问过的节点,且该节点不是当前节点的直接父节点,则说明图中存在环。在BFS中,如果在遍历过程中遇到一个已经被访问过的节点,且该节点不是当前节点的直接前驱节点,则说明图中存在环。这两种方法的时间复杂度都是O(V+E),其中V是顶点数,E是边数。4.在动态规划中,自顶向下的递归实现通常比自底向上的迭代实现效率更高。答案:【错误】解析:在动态规划中,自底向上的迭代实现通常比自顶向下的递归实现效率更高。这是因为递归实现会带来函数调用的开销,并且如果没有记忆化技术,会重复计算相同的子问题。自底向上的迭代实现避免了这些开销,通常具有更好的空间局部性,能够更有效地利用CPU缓存。记忆化递归(带备忘录的递归)可以避免重复计算,但仍比自底向上实现有更多的函数调用开销。5.哈希表的查找操作在最坏情况下时间复杂度为O(1)。答案:【错误】解析:哈希表的查找操作平均时间复杂度为O(1),但在最坏情况下,如果所有关键字都映射到同一个哈希地址,或者哈希函数设计不当导致大量冲突,时间复杂度会退化为O(n)。因此,哈希表的最坏时间复杂度不是O(1),而是O(n)。在实际应用中,通过选择好的哈希函数和适当的冲突处理策略,可以将最坏情况出现的概率降到很低。6.在字符串匹配中,KMP算法的时间复杂度为O(n+m),其中n是文本串长度,m是模式串长度。答案:【正确】解析:KMP算法是一种高效的字符串匹配算法,其时间复杂度为O(n+m),其中n是文本串长度,m是模式串长度。这是通过预处理模式串构建部分匹配表(next数组)来实现的,预处理时间为O(m),匹配时间为O(n)。KMP算法避免了朴素匹配算法中的回溯,因此在实际应用中通常比朴素匹配算法更高效,特别是在模式串较长的情况下。7.在平衡二叉搜索树中,红黑树比AVL树更严格地维持平衡。答案:【错误】解析:在平衡二叉搜索树中,AVL树比红黑树更严格地维持平衡。AVL树要求每个节点的左右子树高度差不超过1,因此它的高度严格限制在logn左右。红黑树则通过一系列颜色规则来维持平衡,允许节点的高度差更大(最坏情况下高度不超过2logn)。因此,红黑树的查找操作可能比AVL树慢,但插入和删除操作通常更快,因为红黑树的旋转操作较少。8.在操作系统中,分页存储管理比分段存储管理更灵活。答案:【正确】解析:分页存储管理将物理内存划分为固定大小的块(页框),将逻辑内存划分为同样大小的页,通过页表实现逻辑地址到物理地址的映射。分段存储管理则根据程序的逻辑结构(如代码段、数据段等)划分为不同长度的段。分页比分段更灵活,因为分页对程序员透明,且可以更好地利用内存碎片,减少内存浪费。但分段更符合程序的逻辑结构,便于共享和保护。9.在数据库系统中,索引可以显著提高查询速度,但会降低插入、删除和更新操作的速度。答案:【正确】解析:索引是数据库中用于提高查询性能的数据结构,它通过创建指向数据表中特定列的指针来加速数据检索。然而,索引也有代价:当对表进行插入、删除和更新操作时,数据库需要同时更新索引结构,这些额外的I/O操作会降低数据修改的速度。此外,索引还会占用额外的存储空间。因此,在设计数据库时,需要根据查询需求和更新频率权衡是否创建索引以及创建哪些索引。10.在计算机网络中,TCP协议比UDP协议更适合实时音视频传输。答案:【错误】解析:在计算机网络中,UDP协议通常比TCP协议更适合实时音视频传输。这是因为实时音视频传输对延迟和抖动敏感,而对少量丢包不敏感。TCP提供可靠传输,通过重传机制确保数据包按序到达,但这会增加延迟和抖动,不适合实时应用。UDP则不保证可靠传输,但具有更低的延迟和抖动,更适合实时音视频传输。在实际应用中,通常在UDP之上实现自定义的可靠传输机制,以平衡实时性和可靠性。四、简答题(30分,每题10分,共3题)1.请简述Dijkstra算法的基本思想及其实现步骤,并分析其时间复杂度。答案:【Dijkstra算法是一种用于求解单源最短路径的贪心算法,适用于非负权重的图。基本思想:Dijkstra算法基于贪心策略,通过逐步确定从源点到其他顶点的最短路径来实现。算法维护一个集合S,包含已确定最短路径的顶点,以及一个距离数组dist,记录从源点到各顶点的当前最短距离。实现步骤:1)初始化:将源点的距离设为0,其他所有顶点的距离设为无穷大,将所有顶点加入未确定集合Q。2)当Q非空时,执行以下步骤:a)从Q中选择距离最小的顶点u,将其从Q移至S。b)对于u的每个邻接顶点v,如果通过u到v的路径比当前记录的dist[v]更短,则更新dist[v]=dist[u]+weight(u,v)。3)重复步骤2,直到Q为空,此时dist数组中存储的就是从源点到各顶点的最短距离。时间复杂度分析:Dijkstra算法的时间复杂度取决于实现方式:-使用数组实现:每次选择最小距离顶点需要O(V)时间,共进行V次选择,每次更新距离需要O(E)时间,总时间复杂度为O(V²+E)。-使用优先队列(最小堆):每次提取最小元素需要O(logV)时间,共进行V次提取;每次更新距离需要O(logV)时间,共进行E次更新;总时间复杂度为O((V+E)logV)。-使用斐波那契堆:提取最小元素均摊O(logV)时间,更新距离均摊O(1)时间,总时间复杂度为O(VlogV+E)。其中,V是顶点数,E是边数。对于稠密图(E≈V²),使用数组实现更高效;对于稀疏图(E<<V²),使用优先队列实现更高效。】解析:Dijkstra算法是一种经典的贪心算法,用于解决单源最短路径问题。算法的基本思想是通过逐步确定最短路径来构建最终解。时间复杂度取决于数据结构的选择,不同的实现方式会导致不同的时间复杂度。在实际应用中,应根据图的稠密程度选择合适的数据结构来优化算法性能。2.请解释什么是动态规划,并举例说明动态规划的适用条件,以及动态规划与分治法的区别。答案:【动态规划(DynamicProgramming,DP)是一种解决复杂问题的算法设计方法,通过将问题分解为相互重叠的子问题,并存储子问题的解以避免重复计算,从而高效地解决问题。动态规划的适用条件:1)最优子结构:问题的最优解包含子问题的最优解。也就是说,可以通过组合子问题的最优解来得到问题的最优解。2)重叠子问题:在递归解中,许多相同的子问题被重复计算多次。动态规划通过存储和重用这些子问题的解来避免重复计算。动态规划与分治法的区别:1)子问题关系:分治法将问题分解为相互独立的子问题,而动态规划的子问题是相互重叠的。2)子问题求解:分治法递归地求解子问题,而动态规划通过存储子问题的解来避免重复计算。3)适用问题类型:分治法适用于可以分解为独立子问题的问题,如归并排序、快速排序等;动态规划适用于具有重叠子问题和最优子结构的问题,如背包问题、最长公共子序列等。4)计算效率:由于避免了重复计算,动态规划通常比递归分治法更高效,特别是当子问题重叠程度高时。举例说明:以斐波那契数列为例,使用分治法(递归)计算斐波那契数时,存在大量重复计算,时间复杂度为指数级O(2^n)。而使用动态规划(自底向上)计算斐波那契数时,通过存储中间结果,避免了重复计算,时间复杂度降低到线性级O(n)。这体现了动态规划在解决具有重叠子问题时的优势。】解析:动态规划是一种强大的算法设计方法,特别适合解决具有最优子结构和重叠子问题特性的问题。与分治法相比,动态规划通过存储子问题的解来避免重复计算,从而显著提高算法效率。理解动态规划的适用条件和与分治法的区别,有助于正确选择算法设计方法,提高问题解决效率。3.请解释数据库中的事务及其ACID特性,并举例说明事务在数据库操作中的重要性。答案:【事务(Transaction)是数据库操作的基本单位,是一组逻辑相关的操作序列,作为一个不可分割的整体被执行。事务具有ACID特性,确保了数据库操作的可靠性和一致性。ACID特性:1)原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不做,不会出现部分完成的情况。如果事务执行过程中发生错误,系统会回滚事务,使数据库恢复到事务执行前的状态。2)一致性(Consistency):事务的执行必须使数据库从一个一致状态转变为另一个一致状态。事务不应破坏数据库的完整性约束,如主键约束、外键约束等。3)隔离性(Isolation):并发执行的事务之间相互隔离,一个事务的执行不应影响其他事务的执行。数据库系统通过锁、多版本并发控制等技术实现事务的隔离性。4)持久性(Durability):一旦事务提交,其对数据库的修改就是永久性的,即使系统发生故障,也不会丢失。事务在数据库操作中的重要性:事务的重要性体现在以下几个方面:1)数据完整性:事务确保了数据库操作的原子性,避免了部分操作导致的数据不一致问题。2)并发控制:事务的隔离性确保了并发操作的正确性,避免了脏读、不可重复读和幻读等问题。3)故障恢复:事务的持久性确保了即使在系统故障后,已提交的事务修改也不会丢失。4)业务逻辑支持:许多业务场景需要一系列操作的原子性执行,如银行转账、订单处理等,事务提供了这种支持。举例说明:以银行转账为例,从一个账户A向另一个账户B转账100元,这涉及到两个数据库操作:从账户A扣除100元,向账户B增加100元。这两个操作必须作为一个事务执行,要么全部成功,要么全部失败。如果只执行了扣除操作而未执行增加操作,会导致资金损失;如果只执行了增加操作而未执行扣除操作,会导致资金凭空增加。通过事务的原子性,确保了这两个操作的完整性,保证了数据的正确性。】解析:事务是数据库操作的核心概念,ACID特性确保了数据库操作的可靠性和一致性。在实际应用中,事务对于维护数据完整性、支持并发操作和实现业务逻辑至关重要。理解事务的概念和ACID特性,有助于设计健壮的数据库应用程序,确保数据的安全性和一致性。五、编程题(20分)1.给定一个长度为n的整数数组nums,和一个目标值target,请找出数组中所有和为target的不同四元组。注意:答案中不能包含重复的四元组。要求:1)时间复杂度尽可能低;2)空间复杂度尽可能低;3)请给出完整的算法实现,包括必要的注释。答案:【```pythondeffourSum(nums,target):"""寻找数组中所有和为target的不同四元组:paramnums:整数数组:paramtarget:目标值:return:所有可能的四元组列表"""n=len(nums)result=[]对数组进行排序,便于去重和双指针操作nums.sort()foriinrange(n-3):跳过重复元素,避免重复的四元组ifi>0andnums[i]==nums[i-1]:continue优化:如果最小的四个数之和已经大于target,则不可能有解ifnums[i]+nums[i+1]+nums[i+2]+nums[i+3]>target:break优化:如果当前元素与最大的三个数之和仍然小于target,则跳过当前元素ifnums[i]+nums[n-3]+nums[n-2]+nums[n-1]<target:continueforjinrange(i+1,n-2):跳过重复元素,避免重复的四元组ifj>i+1andnums[j]==nums[j-1]:continue优化:如果当前最小的三个数之和已经大于target,则不可能有解ifnums[i]+nums[j]+nums[j+1]+nums[j+2]>target:break优化:如果当前元素与最大的两个数之和仍然小于target,则跳过当前元素ifnums[i]+nums[j]+nums[n-2]+nums[n-1]<target:continue使用双指针寻找剩余两个数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论