
剑指offer
文章平均质量分 55
总结思路
小火车Thomasc
呜呼啦呼,小火车变身
展开
-
leetcode----剑指 Offer 41. 数据流中的中位数(大顶堆+小顶堆)
剑指 Offer 41. 数据流中的中位数(优先队列) 问题:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个支持以下两种操作的数据结构: void addNum(int num) - 从数据流中添加一个整数到数据结构中。 double findMedian()原创 2022-03-18 11:29:13 · 236 阅读 · 0 评论 -
leetcode----剑指Offer53-I.在排序数组中查找数字I、剑指Offer03.数组中重复的数字(三种解法--简单题不简单呀)
文章目录剑指Offer53-I.在排序数组中查找数字I剑指Offer03.数组中重复的数字 剑指Offer53-I.在排序数组中查找数字I 问题:统计一个数字在排序数组中出现的次数。 示例: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 输入: nums = [5,7,7,8,8,10], target = 6 输出: 0 思路:利用二分查找寻找其左右边界 class Solution { public int search(int[] nums, in原创 2022-02-21 23:20:56 · 117 阅读 · 0 评论 -
leetcode----剑指offerr09.用两个栈实现队列、剑指Offer30.包含min函数的栈
文章目录剑指Offer09.用两个栈实现队列剑指Offer30.包含min函数的栈 剑指Offer09.用两个栈实现队列 问题:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例: 输入: ["CQueue","appendTail","deleteHead","deleteHead"] [[],[3],[],[]] 输出:[nul原创 2022-02-18 23:05:06 · 130 阅读 · 0 评论 -
leetcode----自定义实现花式反转字符串(151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串)
文章目录151.翻转字符串里的单词剑指Offer58-II.左旋转字符串 151.翻转字符串里的单词 问题:给你一个字符串 s ,逐个翻转字符串中的所有 单词 。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。 说明: 输入字符串 s 可以在前面、后面或者单词间包含多余的空格。 翻转后单词间应当仅用一个空格分隔。 翻转后的字符串中不应包含额外的空格。 示例: 输入:s = "the sky is blue"原创 2022-02-13 23:00:24 · 195 阅读 · 0 评论 -
leetcode----54.螺旋数组I和59.螺旋数组II(两种解法)
文章目录剑指Offer-29.顺时针打印矩阵59.螺旋矩阵II 剑指Offer-29.顺时针打印矩阵 问题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7] 思路: 模拟 模拟打印的过程,初始点为矩阵左原创 2022-01-24 21:26:35 · 531 阅读 · 0 评论 -
剑指 Offer 56 - I. 数组中数字出现的次数(位运算)
剑指 Offer 56 - I. 数组中数字出现的次数 问题:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 思路:136. 只出现一次的数字 即如果除了一个数字以外,其他数字都出现了两次,我们可以用异或求解出这个数字。这是求解一个出现一次的数字,而这道题有两个出现一次的数字需要求解。我们考虑将数组分为两组,且这两个出现一次的数字分别在一组,然后再使用异或的方法就可以求出这两个数字。具体如下: 假设这两个数原创 2022-01-02 22:11:27 · 636 阅读 · 0 评论