![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Z苗
这个作者很懒,什么都没留下…
展开
-
树相关面试题
二叉搜索树中第K小的元素 题目 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 例子 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / 1 4 2 输出: 1 示例 2: 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / 3 6 / 2 4 / 1 输出: 3 进阶 如果二叉搜索树经常原创 2021-08-06 20:31:42 · 98 阅读 · 0 评论 -
双端队列面试题
滑动窗口最大值 题目 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 示例 : 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3原创 2021-08-06 20:21:41 · 143 阅读 · 0 评论 -
栈相关面试题
有效的括号 题目: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 : 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 思路 原理就是使用堆栈,遇到左括号就压栈,遇到右括号就把栈顶元素出栈并匹配, 如原创 2021-08-06 20:09:58 · 116 阅读 · 0 评论 -
链表相关题
链表解题技巧 利用快慢指针(有时候需要用到三个指针) 1.链表的反转 2.选择倒数第K的指针 3. 链表中间位置的元素 4. 链表是否有环 构建一个虚假的链表头 1.两个排序链表,进行整合排序 2.将链表的奇偶按原定的顺序分离,生产前半部分为奇数,后半部分为偶数 K 个一组翻转链表 ...原创 2021-08-06 19:56:19 · 101 阅读 · 0 评论 -
算法题高频真题解析2
有效的字母异位词 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 说明:你可以假设字符串只包含小写字母。 案例 案例1 输入: s = “anagram”, t = “nagaram” 输出: true 案例2: 输入: s = “rat”, t = “car” 输出: false 代码 func isAnagram1(s: String,t: String) -> Bool { // 创建一个含有26个为0的值数组原创 2021-07-30 19:29:26 · 126 阅读 · 0 评论 -
常用数据结构
数组与字符串*/Array&String* 数组 数组优点 构建一个数组非常简单 能让我们在0(1)的时间里根据数组的下标(index)查询某一个元素 数组缺点 构建时必须分配一连续的空间 查询某个元素是否存在时需要遍历整个数组,耗费0(n)时间,其中n是元素个数 ...原创 2021-07-30 18:48:36 · 109 阅读 · 0 评论 -
算法题高频真题解析1
双指针法 字符串的反转 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 要求 不要给另外的数组分配额外的空间, 你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入:[“h”,“e”,“l”,“l”,“o”] 输出:[“o”,“l”,“l”,“e”,“h”] swift代码 func reverString(_ s: inout [Character]) -> [Character] { guar原创 2021-07-30 18:36:14 · 96 阅读 · 0 评论