Algorithms
榕易
这个作者很懒,什么都没留下…
展开
-
ovs 有限队列 mpsc 实现分析
基于ovs的mpsc实现,来分析无锁队列下多生产者单消费者的实现原创 2022-06-01 16:42:42 · 483 阅读 · 0 评论 -
LeetCode 盛最多水的容器
题目:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。解法:双指针,移动指针时,移动较小的原创 2021-11-18 22:52:21 · 116 阅读 · 0 评论 -
LeetCode 寻找两个正序数组的中位数
题目给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5解法:这题麻烦在想原创 2021-11-18 22:48:43 · 601 阅读 · 0 评论 -
LeetCode-15 三数之和
题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]解法一:用排序+哈希表法,但是需要注意剪枝:func threeSum(nums []int) [][]int { var result [][]int sort.Ints(原创 2021-11-18 22:43:01 · 69 阅读 · 0 评论 -
C++ 最小堆实现
最小堆特征最小堆是一棵完全二叉树,通常使用数组来实现:树的根为Arr[0]对于其他 i 节点,则有其他公式:公式返回值Arr[(i-1)/2]返回 i 节点的父节点Arr[(2*i)+1]返回 i 节点的左孩子Arr[(2*i)+2]返回 i 节点的右孩子最小堆类定义先看最小堆的class 定义声明,我们使用数组实现最小堆class MinHeap{private: int *harr; // pointer to array of e原创 2021-03-19 14:23:58 · 913 阅读 · 0 评论 -
POJ-1001 高精度指数运算
解这道题,主要是几个要点: 1. 大数可表示为: 2. 可利用数组存储,数组索引n上的元素a,代表值:a * 10^n 3. 大数相乘,可表示为: 其他则是一些边界情况处理(比如头尾去0,小数点位置等),这方面主要依靠测试数据集,我使用的测试数据附在文末。下面是算法代码:#include <stdio.h>#include <string.h>#inclu...原创 2018-08-15 18:17:03 · 465 阅读 · 0 评论