搜索算法 搜索算法(searching algorithm) 用于在数据结构中搜索一个或一组满足特定条件的元素。主要分为以下两类: 通过遍历数据结构来定位目标元素,例如数组、...

搜索算法 搜索算法(searching algorithm) 用于在数据结构中搜索一个或一组满足特定条件的元素。主要分为以下两类: 通过遍历数据结构来定位目标元素,例如数组、...
题目给你链表头节点,每K个一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序...
题目给你一个整数数组nums,判断是否存在三元组nums[i],nums[j],nums[k]满足 i != j, j != k, i != k,同时还满足nums[i] +...
二叉树 二叉树是一种非线性数据结构,代表“祖先”和“后代”之间的派生关系,体现了"一分为二"的分治逻辑。数据元素和链表类似,二叉树的基本单元是节点,每个节点包含值,左子节点引...
哈希表 哈希表(hash table),又称散列表。它通过建立键(key)与值(value)之间的映射关系,实现高效的元素查询效率。具体而言,我们向哈希表输入一个键值key,...
题目给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题。 示例输入:head = [1,2,3,4]输出:[2,1,4...
队列 队列是一种遵循先入先出规则的线性数据结构,顾名思义,队列模拟了排队现象,即新来的人不断加入队列末尾,而位于队列头部的人逐个离开。 队列的常用操作 push(),元素入队...
栈 栈(stack)是一种遵循先入后出逻辑的线性数据结构。 我们可以把它想象成吃零食的薯片桶,打开薯片桶之后,每次只能拿到最上面的薯片。如图所示,我们把堆叠元素的顶部称为”栈...
题目给你一个链表数组,每个链表都已经按照升序排列,请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例1输入:lists = [[1,4,5],[1,3,4],[2,...
题目将两个升序链表合并为一个新的升序链表并返回。 示例:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4] 分析比较大小那必须两个链表...
题目给你一个链表,删除链表的倒数第n个节点,并且返回链表的头节点。(考虑使用一次扫描) 分析 如何知道是倒数第n个节点,如果第n个节点知道了,第n-1和第n+1节点也就知道了...
链表 链表(linked list)是一种线性数据结构,其中的每一个元素都是一个节点对象,各个节点通过“引用”相链接.引用记录了下一个节点的内存地址,通过它可以从当前节点访问...
初探动态规划 动态规划(dynamic programming)是一个重要的算法范式,它将一个问题分解为一系列更小的子问题,并通过存储子问题的解来避免重复计算,从而大幅提升时...
题目给你一个字符串s和一个字符规律p,请你实现一个支持'.'和‘*’的正则表达式匹配。 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素考虑每次出现字符'*'...
数组 数组(array)是一种线性数据结构,它是将多个相同元素类型的数据存放在一片连续内存空间中。特点: 相同元素类型 长度固定数组通过索引(index)来访问对应的元素。 ...
题目给定一个长度为n的整型数组height,有n条垂线,第i条线的两个端点是(i,0),(i,height(i)),找出其中的两条线,使得他们与x轴共同构成的容器可以容纳最多...
题目给定两个大小分别为m,n的正序(从小到大)的数组nums1和nums2,请你找出并返回这两个数组的中位数。算法的时间复杂度应该为 O(log (m+n))示例:输入:nu...
题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度示例:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所...
题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链...
题目给定一个整数数组nums和一个整数目标值target,在数组中找出两数之和为目标值target的元素下标,返回下标数组。示例:输入:nums = [2,7,11,15],...