- 博客(83)
- 资源 (2)
- 收藏
- 关注
原创 380. O(1) 时间插入、删除和获取随机元素
int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。每个元素应该有 相同的概率 被返回。bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true;否则,返回 false。bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true;否则,返回 false。你必须实现类的所有函数,并满足每个函数的 平均 时间复杂度为 O(1)。
2023-08-21 17:48:38
137
原创 238. 除自身以外数组的乘积
题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请不要使用除法,且在 O(n) 时间复杂度内完成此题。输入: nums = [-1,1,0,-3,3]输入: nums = [1,2,3,4]输出: [24,12,8,6]输出: [0,0,9,0,0]
2023-08-20 08:46:27
147
原创 274. H 指数
根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且每篇论文 至少 被引用 h 次。由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。输入:citations = [3,0,6,1,5]输入:citations = [1,3,1]
2023-08-20 08:35:45
162
原创 121. 买卖股票的最佳时机
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。解释:在这种情况下, 没有交易完成, 所以最大利润为 0。输入:prices = [7,6,4,3,1]输入:[7,1,5,3,6,4]
2023-08-20 08:24:54
116
原创 228. 汇总区间
返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x。输出:[“0”,“2->4”,“6”,“8->9”]输入:nums = [0,2,3,4,6,8,9]输入:nums = [0,1,2,4,5,7]输出:[“0->2”,“4->5”,“7”]“a->b” ,如果 a!“a” ,如果 a == b。
2023-08-19 11:00:59
115
原创 219. 存在重复元素 II
输入:nums = [1,2,3,1,2,3], k = 2。输入:nums = [1,2,3,1], k = 3。输入:nums = [1,0,1,1], k = 1。
2023-08-19 09:19:02
99
原创 290. 单词规律
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。输入: pattern = “abba”, s = “dog cat cat dog”输入:pattern = “abba”, s = “dog cat cat fish”
2023-08-19 08:46:35
125
原创 205. 同构字符串
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。给定两个字符串 s 和 t ,判断它们是否是同构的。输入:s = “egg”, t = “add”
2023-08-18 16:11:30
106
原创 167. 两数之和 II - 输入有序数组
给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。因此 index1 = 1, index2 = 2。
2023-08-18 15:05:53
309
原创 125. 验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串。给你一个字符串 s,如果它是 回文串 ,返回 true;否则,返回 false。输入: s = “A man, a plan, a canal: Panama”解释:“amanaplanacanalpanama” 是回文串。字母和数字都属于字母数字字符。
2023-08-18 14:43:03
69
原创 143. 重排链表
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。输入:head = [1,2,3,4,5]输入:head = [1,2,3,4]输出:[1,5,2,4,3]输出:[1,4,2,3]
2023-08-10 11:16:37
99
原创 128. 最长连续序列
解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]请你设计并实现时间复杂度为 O(n) 的算法解决此问题。输入:nums = [100,4,200,1,3,2]
2023-08-08 16:55:21
314
原创 415. 字符串相加
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。输入:num1 = “11”, num2 = “123”输入:num1 = “456”, num2 = “77”输入:num1 = “0”, num2 = “0”
2023-08-08 10:58:18
91
原创 5. 最长回文子串
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。给你一个字符串 s,找到 s 中最长的回文子串。解释:“aba” 同样是符合题意的答案。输入:s = “babad”输入:s = “cbbd”
2023-08-08 10:39:36
151
原创 3. 无重复字符的最长子串
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “abcabcbb”输入: s = “pwwkew”输入: s = “bbbbb”
2023-08-08 09:49:50
98
原创 54. 螺旋矩阵
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]输出:[1,2,3,6,9,8,7,4,5]
2023-08-07 16:50:20
97
原创 139. 单词拆分(leetcode刷题记录)
输入: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]解释: 返回 true 因为 “applepenapple” 可以由 “apple” “pen” “apple” 拼接成。输入: s = “applepenapple”, wordDict = [“apple”, “pen”]输入: s = “leetcode”, wordDict = [“leet”, “code”]注意,你可以重复使用字典中的单词。
2023-08-07 10:37:33
85
原创 200. 岛屿数量(leetcode刷题记录)
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。输入:grid = [输入:grid = [
2023-08-07 09:56:31
94
原创 38. 外观数列(leetcode刷题记录)
描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 “111221”描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 “1211”「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 “21”描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 “11”
2023-08-03 21:39:32
244
原创 80. 删除有序数组中的重复项 II (力扣刷题)
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
2023-08-03 17:09:11
200
原创 elasticsearch面试八股文
总结起来,Elasticsearch的存储架构是由索引、分片和副本组成的,利用分布式的方式将数据分散在多个节点上。更新机制采用近实时的方式,通过索引操作和分布式协调来处理文档的更新和写入操作。:ES的数据组织单元是索引,每个索引可以包含多个类型(Types),类似于数据库中的表。索引是由一个或多个分片(Shard)组成的,用于将数据水平分割和分布在集群中的多个节点上。:ES采用了近实时的更新机制,即文档的索引和搜索操作不会立即生效,而是需要经过一小段时间的延迟。,因此写入的数据在1秒后才能被搜索到。
2023-07-22 21:34:36
1456
原创 mysql面试八股文
因此,当表中存在大量空记录时,使用SELECT COUNT()会比SELECT COUNT(1)更加耗费资源,因为前者会统计空记录,而后者则会忽略它们。此外,当我们需要统计某一特定字段的非空记录数时,应该使用SELECT COUNT(field_name)的方式,而不是SELECT COUNT(*)或SELECT COUNT(1)。这种方式会比使用SELECT COUNT(*)或SELECT COUNT(1)更加高效,因为它只需要计算指定字段的记录数量,而不用去统计整个表中的记录数。
2023-07-21 15:52:26
168
原创 将字母异位词组合在一起
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。输入: strs = [“a”]输入: strs = [“”]输出: [[“a”]]输出: [[“”]]
2023-07-21 14:24:02
65
原创 网络编程八股文
4.所以为了安全的传输公钥, 需要用到数字证书, 数字证书是具有公信力、大家都认可的, 服务端向客户端发送公钥时, 可以把公钥和服务端相关信息通过hash算法生成消息摘要, 再通过数字证书。1.客户端向服务器发送数据之前, 需要先建立tcp连接, 所以先建立tcp连接, 建立完tcp连接后, 服务端会先给客户端发送公钥, 客户端拿到公钥后就可以用来加密数据了,:异步非阻塞IO, 使用AIO读取数据的时候, 线程不会阻塞, 并且当有数据可读时候, 会通知给线程, 不需要线程主动去查询。
2023-07-21 13:54:37
135
原创 c++八股文总结
分析:线程1不满足条件被阻塞,然后线程2运行,改变了条件,线程2发行条件改变了通知线程1运行,然线程1不满足条件被阻塞,然后线程2运行,改变了条件,线程2发行条件改变了通知线程1运行,然后线程2结束,然后线程1继续运行,然后线程1结束,为了确保线程1先执行,在创建线程2之前我们sleep了2秒。分析:信号量的值代表空闲的服务窗口,每个窗口一次只能服务一个人,有空闲窗口,开始服务前,信号量-1,服务完成后信号量+1。如果我们能够实现这样一种方法,程序的效率无疑会大大提高,而这种方法正是条件变量!
2023-07-18 21:34:17
318
原创 设计模式归纳
创建型模式: 工厂模式结构型模式: 代理模式,适配器模式,装饰器模式行为型模式:关注系统中对象间相互切换, 观察者模式, 责任链模式, 模板方法当其中某个对象状态发生变化的时候, 其他依赖的相关对象都可以获得通知并且做出更新。监听器事件而无法一起工作的两个类能够一起工作, 不会破坏原有的一些信息。myBatis中的日志框架。
2023-07-18 09:58:00
52
原创 redis八股文
1.redis故障, -引入集群解决2.redis中大量key ttl 过期, --尽量把ttl岔开, 随机ttl值3.加入限流机制4.加多级缓存。
2023-07-17 14:03:10
143
原创 mysql慢查询以及优化
UUId: 简单, 性能好,没有顺序, 没有业务含义, 存在泄露mac地址风险。redis,mongodb,zk等中间件: 增加系统复杂度和稳定性。数据库主键:实现简单, 单调递增, 具有业务可读性, 强依赖db,存在性能瓶颈, 存在暴漏业务信息风险。
2023-07-17 13:53:48
60
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人