摘要: 主要是记录一下这个数据结构。 比如这个trie树,包含三个单词:sea,sells,she。 代码: 1 class Trie { 2 bool isWord; 3 vector<Trie*> children; 4 public: 5 /** Initialize your data struct 阅读全文
posted @ 2020-02-17 22:50 NeoZy 阅读(165) 评论(0) 推荐(0) 编辑
摘要: C++11之后允许对非静态成员变量进行初始化(in-class initialization),不过对于非fundamental(非基本数据)类型需要采用的是initializer_list来实现的 所以如下代码是错误的: class A{ public: int x=1; string s="qw 阅读全文
posted @ 2020-02-17 15:58 NeoZy 阅读(2570) 评论(0) 推荐(1) 编辑
摘要: 题目: 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。 示例 1: 输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2: 输入 阅读全文
posted @ 2020-02-17 15:45 NeoZy 阅读(261) 评论(0) 推荐(0) 编辑
摘要: https://leetcode-cn.com/problems/generate-parentheses/ 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()" 阅读全文
posted @ 2020-02-17 15:43 NeoZy 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O 阅读全文
posted @ 2020-02-17 15:42 NeoZy 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 双指针最基础的题目是一个区间里找两个数字的和等于Target。首先将区间从小到大排序。接下来只要一个le指针,一个ri指针,分别从区间左右边界往中间推进即可。复杂度是排序的nlogn。 下面几道题都是一个区间里找三个数字的和满足xx条件的。这个题目的做法首先还是先排序。之后先固定一个数字,然后在该数 阅读全文
posted @ 2020-02-17 15:40 NeoZy 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 3. 无重复字符的最长子串 A: 要找最长的无重复子串,所以用一个map保存出现过的字符,并且维持一个窗口,用le和ri指针标识。ri为当前要遍历的字符,如果ri字符在map中出现过,那么将le字符从map移除,le++。如果ri字符没出现过,那ri++,并更新最大无重复子串长度。全程利用map保持 阅读全文
posted @ 2020-02-17 15:38 NeoZy 阅读(692) 评论(0) 推荐(0) 编辑
摘要: 问题: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明: 你 阅读全文
posted @ 2020-02-17 13:09 NeoZy 阅读(334) 评论(0) 推荐(0) 编辑