
算法
是阿翔啊
C++程序员一枚
展开
-
快速排序-FP模式版和快速排序 - 和 - FP模式线程强化版
快速排序-FP模式版函数化编程(functional programming)是一种编程方式,函数结果只依赖于传入函数的参数。使用相同的参数调用函数,不管多少次都会获得相同的结果。函数化编程的好处并不限于将“纯粹”作为默认方式(范型)的语言。在PF(函数化)中使用future。我们实现一个简单的快排算法快排算法思想:给一个数据列表,每次选取其中一个数为中间值,然后将数据列表中的其他数值分为2组,比他小的在前 大的在后下面代码中的是FP-模式的串行实现,需要传入列表,并且返回一个列表,与 std:原创 2022-04-19 10:02:23 · 355 阅读 · 0 评论 -
2.1.5两个排序数组的中位数
2.1.5两个排序数组的中位数分别有两个大小为m和n的排序数组a和B。查找两个已排序数组的中值。总体运行时复杂度应为O(log(m + n))分析这是一道非常经典的题。这题更通用的形式是,给定两个已经排序好的数组,找到两者所有元素中第k大的元素。O(m+n)的解法比较直观,直接merge两个数组,然后求第k大的元素。不过我们仅仅需要第k大的元素,是不需要“排序”这么昂贵的操作的。可以用一个计数器,记录当前已经找到第m大的元素了。同时我们使用两个指针pA和pB,分别指向A和B数组的第一个元素,使用原创 2021-06-09 22:14:58 · 158 阅读 · 0 评论 -
2.1.3在旋转排序数组中的搜索
2.1.3在旋转排序数组中的搜索//描述//假设一个排序数组在您事先未知的枢轴上旋转。//(即0 1 2 4 5 6 7 可能为4 5 6 7 0 1 2)。//系统为您提供了一个要搜索的目标值。//如果在数组中找到,则返回其索引,否则将返回 - 1。//您可以假定该数组中不存在任何副本#include<vector>#include<iostream>using namespace std;int find(const vector<int>&原创 2021-06-04 22:19:38 · 109 阅读 · 0 评论 -
2.1.2从排序阵列II中删除重复项
2.1.2从排序阵列II中删除重复项描述“删除重复项”的后续操作:如果最多允许重复两次怎么办?例如,给定排序数组A=[1,1,1,2,2,3],您的函数应该返回长度=5,而A现在为[1,1,2,2,3]分析加一个变量记录一下元素出现的次数即可。这题因为是已经排序的数组,所以一个变量即可解决问题。如果是没有排序的数组,则需要引入一个hashmap来记录出现的次数#include<iostream>#define SIZE 10using namespace std;void del原创 2021-06-02 11:27:35 · 102 阅读 · 0 评论 -
2.1.1 从排序数组中删除重复项
给定一个排序的数组,在适当的位置删除重复项,使每个元素只出现一次并返回新长度。不要为另一个数组分配额外的空间,您必须使用固定内存就地执行此操作。例如,给定输入数组A=[1,1,2],函数应该返回length=2,现在A是[1,2]。全代码如下:#include<iostream>#include<string>#include<vector>using namespace std;constexpr auto SIZE = 100;void del原创 2021-04-04 16:50:38 · 141 阅读 · 0 评论