C++
文章平均质量分 54
肥宅_Sean
在UCB,Stanford各做过一段时间的RA。去牛津访学过一段时间。
现在在某家头部量化当研究员。
个人站: https://seanquant.github.io/
展开
-
【C++】log(n)斐波那契数列计算
算法An=[[1,1],[1,0]]n=[[Fn+1,Fn],[Fn,Fn−1]]nA_n = [[1,1],[1,0]]^n = [[F_{n+1}, F_{n}],[F_{n}, F_{n-1}]] ^nAn=[[1,1],[1,0]]n=[[Fn+1,Fn],[Fn,Fn−1]]n将Fn的累计计算方式转换为矩阵乘法的计算方式。幂计算的方式由于,存在有logn算法,我在 整数幂计算方式logn 中提到了,幂计算的logn算法。注意的是: 由于矩阵乘法比对栈的压力比整数更大,其实一般不使原创 2021-02-25 18:28:30 · 662 阅读 · 0 评论 -
合并两个有序链表(C++)
简述将两个有序的链表合并,并返回输入:1->2->4, 1->3->4输出:1->1->2->3->4->4代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li...原创 2019-12-15 09:57:23 · 647 阅读 · 0 评论 -
有序的两个数组在满足其中一个数组的所有数都小于另外一个数组的情况下的整体的中位数
简述给定两个有序数组,且其中一个有序数组的最大值小于等于另外一个数组的最小值。得到这两个数组整合起来的数组的中位数。代码#include<iostream>using namespace std;#include<vector>double findMedianTwoSortArrays(vector<int>& nums1, vecto...原创 2019-12-14 15:14:59 · 324 阅读 · 0 评论 -
区间重合--c++
题目简述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。...原创 2019-12-10 19:49:40 · 1063 阅读 · 0 评论 -
无重复字符的最长子串【哈希算法】-O(n)
无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长...原创 2019-10-29 20:26:14 · 440 阅读 · 0 评论 -
Manacher's algorithms(马拉车算法)最长回文子串
最长回文子串https://leetcode-cn.com/problems/longest-palindromic-substring/给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"Manach...原创 2019-10-23 07:43:48 · 212 阅读 · 0 评论 -
最长回文子串-三种DP实现
解法一T: 156 ms M: 14.8 MBclass Solution {public: string longestPalindrome(string s) { if (s.size() < 2) return s; int map[2000][2001]; int total = 1, star...原创 2019-10-22 19:40:00 · 843 阅读 · 0 评论 -
模拟Sum函数(版本二)
from functools import reducedef sum(L): return reduce(lambda x, y: x + y, L)原创 2017-10-06 19:54:24 · 1234 阅读 · 0 评论 -
QT算数表达式求值
对之前的那个QT做的计算器,做一个修改。原版本链接有兴趣的话,可以两者结合起来,通过这个改进的过程,找到问题,进一步的提升。新版本代码:#include "mainwindow.h"#include "ui_mainwindow.h"#include #include using namespace std;MainWindow::MainWindow(QWidget *原创 2017-10-08 21:42:36 · 1856 阅读 · 0 评论 -
猫狗收养所问题(指针模拟)
用int型作为指针实现 猫狗收养所,只有猫和狗 第一个数是1表示是在输入 * 操作数如果是整数,表示是狗的编号 * 操作数如果是负数,表示是猫的编号第二个数是2表示被领走 * 操作数如果是0,表示领走所有猫狗中最先进来的那个 * 操作数是1,表示领走狗中最先进来的那个 * 操作数是-1,表示领走猫中最先进来的那个 输入一堆操作 按照顺序输出被原创 2017-10-18 12:12:29 · 573 阅读 · 0 评论 -
[SOJ1039]Phone Home(深搜,染色问题)
题目如下: (如果能看懂,就看;看不懂的话,再努力把看懂,意思就是标题,染色问题) 染色问题就是说,离散的点之间,如果有关联的点,这个两个点就不能是同样的颜色 然后回答最少用多少种颜色。 InputThere will be multiple test cases. Input for each test case will consist of two lines: the first l原创 2017-10-18 23:28:44 · 413 阅读 · 0 评论 -
全排列的生成
将会以生成一个’ABCDE’的一个全排列为例 全排列的生成,就是从后面数,找到第一符合顺序的(如: ‘D’ < ‘E’)这样的信号。就要开始处理。 处理方法是: 将找到这个符合顺序的位置(如:’B’ < ‘C’),那么就把’C’后面(包括’C’在内的字符串生成一个排好顺序(恢复熵值)),再从左边走,找到第一个比’B’大的字符,那么就把这两个字符的位置交换。其实本质上是将比’B’大的数中最小的那原创 2017-10-19 14:05:40 · 1162 阅读 · 0 评论 -
[SOJ1006] Team Rankings
用枚举法实现 代码如下: //我是先用全排列生成了全部的串,再写的 全排列生成代码,点击可看 枚举的时候用了减枝,所以可能会稍微快点 但是emmm 看完师兄们的解法只需要0.00sec之后,我这个0.02sec的菜鸡就不知道该说什么好了代码如下:(会比较好理解)#include <iostream>#include <vector>using namespace std;#incl原创 2017-10-19 14:59:57 · 335 阅读 · 0 评论 -
class多项式(链表实现)
直接上代码是不是不好?如果是大佬就直接跳过这个阶段。链表实现的多项式链表以每一个节点代表多项式的一个项,常数项可以理解为次数为0的项再用指针将项与项之间联系起来。可以说是数据结构联系必做的东西!代码390行,慢慢啃吧,有什么不理解,就在评论区问,我还是蛮活跃的。#include #include #include #include #include #includ原创 2017-10-05 08:11:58 · 440 阅读 · 0 评论 -
QT,C++最好的调试工具(抽象定义上的工具)
这里的工具,不是指的是那种 真正的调试工具,而是作为一个调试的手段的工具。既然要看QT,那我可以假设各位都是看过 C++的呢!C++里面,是有很多debug的插件啊什么的。但是作为一个写了一段日子C++的猿。我觉得cout可能是更好的的C++(注意,不是QT)调试工具。反正我是觉得比设置断点好用。这个方法的可以在特定地方输出。如果出现了死循环,可以在判断在自己设置的哪些输出上没原创 2017-10-04 09:18:00 · 1602 阅读 · 0 评论 -
算法题:水洼有多少(C++)
题目: 输入一串数字,表示这一段空间的各个点的高低 然后,算出来,在这样的情况下,下雨后(保证雨很大,就是说,如果能形成积水,那就一定会形成) 如: 0 1 2 3 是不会形成积水的; 1 0 2 这样是可以形成积水的,量是1; (想象一个柱状图) 我们会输出积水的量 ,而这个就是要算出来的东西给一组测试数据4 10 0 1 2 1 0 1 3 2 0 1 3 10原创 2017-10-11 13:05:29 · 1665 阅读 · 0 评论 -
栈的逆转(递归实现)
栈的逆转(Reversal)Stack的逆转,一般的话,会是用另外一个栈,或者是队列完成逆转。 但在要求只能用递归实现的时候,就需要了这些东西。代码如下欢迎讨论-Sean原创 2017-10-11 13:16:10 · 2185 阅读 · 0 评论 -
震惊!!用图形界面装B居然只需要短短110行代码!!
[序]相信学习C或者C++的学生的最大的痛苦就是每次做的东西的都是CMD的黑框框虽然很多人会慢慢爱上这个(呸),但是绝大多数的人都走向了另外一条路:图形界面说到C++的图形界面,都不得不谈一下QT了QT的教程,资源网上是能找到不少的。(不过最难可能是一般人都不知道自己该搜索些什么)原创 2017-10-05 17:37:52 · 7582 阅读 · 1 评论 -
QT,C++多项式计算器—version3(厌倦CMD黑框框的走起!)
很激动!在乔帮主的要求下,我再次写一次多项式计算器。(对了,这里用的是QT5)QT的下载在download 或者一般的官网上都有(QT 只是一个加载库!请各位初学者不要害怕!但是下好了QT的软件之后,开发会比较容易,在各个系统的电脑都是有相应版本,而且可以做到兼容!)在一般网站上服务器也是有的。我记得有一个download开头的一个网站很不错。(可惜距离我下载!QT好像有段时间了,原创 2017-10-05 07:33:04 · 1221 阅读 · 3 评论 -
C++函数返回多个变量
[序]:首先,非常感谢最近结识到的一个好朋友,是他给了我这样的一个idea,让我决定写下这篇博文。如果这篇博文恰好能帮助阅读到这篇博文的你,我觉得,还是有必要同时去感谢下他。[正文]:C++的返回的话,对于很多刚接触C++不久的人来说,一般会是直接返会返会标准库自带的类型,如(float,double,int,char或者是string)。随着实力的提高和遇到的题目的难度的提高,会原创 2017-10-06 10:52:57 · 7728 阅读 · 0 评论 -
[简单题]自定义取余(三种解法)C++实现
题目链接:点击打开原题链接题目意思,就是标题意思。第一种解法:(加法迭代)用加法来模拟这个(17行代码)int mod256WithoutMod(int number){ if (number == 0) return 0; bool flag = false; if (number < 0) { number = - number; flag = true原创 2017-10-06 08:03:16 · 1475 阅读 · 0 评论 -
人工智能算法--KNN算法(C++实现)
# 上面的图片是在网上随手翻到的-很符合主题-侵权删 #蹭热度ing Knn算法,用于分类。 通过得到逻辑上的相近程度实现判断,K值的大小体现的是一个容错的过程。 提高预测准确度的方法: 调整K值,找到更好的K值(别太大,也别太小) 数据的预处理(有大佬说过,数据的预处理会比算法本身更重要) 逻辑距离的选择(欧氏距离,闵式距离,切比雪夫距离….) 分类,就是一种选择的过程。将事件抽象为原创 2017-10-21 13:51:42 · 2502 阅读 · 0 评论 -
SeqStack(Template<class T>)实现
顺序表实现模板栈(第二次) 这是发过的一个版本的栈的链接 这次用模板再做了一遍 配有测试过的main函数,可以直接学习使用。#include <iostream>using namespace std;template<class T>class SeqStack{public: SeqStack(int sz = 50); ~SeqStack(){ delete[]el原创 2017-10-12 14:05:04 · 1722 阅读 · 0 评论 -
水仙花数C++
水仙花数(POJ) 简单题,就直接上代码了原创 2017-10-12 15:51:57 · 8555 阅读 · 0 评论 -
[二分查找变形]弯曲的木杆(POJ 1905)
这题很有意思,除了一般的程序知识,还用了数学的东西。推导了一些公式什么的。 这次用了两种方法做,层层深入,希望能让大家体会到代码的改良过程原创 2017-10-12 16:09:24 · 574 阅读 · 0 评论 -
栈实现-逆序
我知道很多人都在问,将一个东西逆序,为什么还要用栈呢? 直接反着输出不就好了? 但,我想,用于学习的话,多打打数据结构,体会数据结构中的那种思维,可能会收获很大。 正如,大家可能都会说自己很懂递归了,但要是在脑海里模拟递归的运行,照样会带来很大收获。 还是看代码吧,东西放了,收获多少看个人了。原创 2017-10-12 16:17:42 · 1858 阅读 · 0 评论 -
自定义模板类(循环队列)
自定义模板类——循环链表 正做的这个链表的时候,遇到了,对于友元函数的处理问题实现代码如下(配有测试main):#include <iostream>using namespace std;template<class T>class SeqQueue{public: SeqQueue(int sz = 0); ~SeqQueue(){if (element != NULL)原创 2017-10-11 23:29:14 · 784 阅读 · 0 评论 -
Sicily1798. Alice and Bob[策略问题]
策略问题,通过数学推理,完成解决。基础的思维转换的问题。Sicily原创 2017-10-20 08:05:40 · 1426 阅读 · 0 评论 -
行走方案问题(动态规划实现)
题目描述: 从(0,0)点走,终点是(x-1,y-1) 问有多少种走法 ps:图中为1的表示是障碍,就不能走,为0的就是可以走的#include原创 2017-10-18 12:03:33 · 388 阅读 · 0 评论 -
高精度数取余(C\C++)
高精度数是OJ题目中最主要的一类题 用数组去模拟高精度数是目前最常用的方法 除此之外,还可以通过使用string去模拟也是可以的取余,是高精度数中主要的一个算法。 这里主要展示自己的高精度数取余的一个操作函数算法思路: 模拟数学中关于除法,和余数的定义,根据竖式表达式运算得到 PS:注意点是,temp部分是必须的,避免更改原来的数据,所以不能使用 a[i] += flag;操作 i原创 2017-10-23 13:40:19 · 5564 阅读 · 0 评论 -
讲讲排序(C++描述)
排序和查找一直是算法的主流问题。排序方法有很多种:1.简单排序(O(n^2))#include #include using namespace std;void SimpleSort(int *a,int n) { for (int i = 0; i < n - 1; ++i) { for (int j = i + 1; j < n; ++j) { if (a[i原创 2017-10-05 08:19:14 · 532 阅读 · 0 评论 -
[深搜回溯]24点
如果你是移动端,我推荐点击这个看链接看推送版的 推送版的链接题目描述: 24点是一个有趣的扑克牌游戏。发4张牌,然后计算是否能够算出24点来。(不考虑有括号的算式,输出计算式将从左到有进行计算) 如果可以,输出算数表达式; 如果不可以,输出NONE 如果表达式中,有错误输入,输出“ERROR” 输入实例: 2 AAAA Q3J8 输出实例: NONE Q-J*3*8代码解析:原创 2017-11-01 12:45:35 · 1538 阅读 · 0 评论 -
中缀转后缀
前提:这里假设每个英语字母都表示一个数,或者每一个数都是只有一个数字的。(要是可以自己再调整一下,就很容易改好了) 方法: 1. 如果是英语字母,或者是数字,就直接放到返回串里面 2. 如果是空格就直接跳过 3. 如果是右括号),就把栈中的字符都清出来,一直遇到一个左括号 4. 如果是左括号,那就直接放到栈中(没有人的优先级比这个小了) 5. 剩下的就是运算符。就一直清栈,一直原创 2017-10-26 15:53:08 · 521 阅读 · 0 评论 -
堆排序(C\C++)
上面是一个完全二叉树(一般的完全二叉树有点不同),优先排满左边,用这个理解堆排序堆排序(从小到大为例)首先,这个用到了树进行描述,但是这个只是为了减少复杂度,其实堆排序实际上没有构建一个树形结构,而是通过了运算模拟了树,所以,只需要知道树长什么样的,就可以理解这篇文章了如果是想直接看代码,文末有代码,可以看着代码和算法分析,对比着看概念: 最大堆:(一个完全树),所有的根节点的数的都比子节点的数要原创 2017-10-26 13:50:34 · 432 阅读 · 0 评论 -
[POJ]Zipper[动态规划]
这个转载于我原来的小号emmmm,我也不知为什么自己绑定了QQ之后就只能用这个了,可能我很久以前就有了CSDN账号???内容部分(题目)输入输入测试次数n;每一次测试,分别输入string a,b和all;输出如果,a,b串,在 all中可以按顺序找到,就输出"yes"否则就输出"no"例如:cat tree tcraete 这个是要输出 yes的111 000 101001原创 2017-10-24 13:20:53 · 537 阅读 · 0 评论 -
不一样的随机数生成方法(C/C++)
在网上查随机数生成,大家基本都是大同小异的,而且还不是很方便(这个如果你只是想要生成一个随机数什么的,那也无所谓,还能凑合着用那种方法)。 用C++写的,但是C要用就把 ctime写成time.h ,cstdlib写成stdlib.h C++的随机数生成本质上是用C的库实现的,你看库名字就知道了….但是不够好的是,如果如果我要生成多个随机数的时候,那么我就要设置一个种子,srand,一般原创 2017-11-28 15:07:31 · 10528 阅读 · 3 评论 -
SOJ1114 (广搜)
虽然用C可能会更快,但是这不是算法上的改良,所以这样改了没啥意义。 具体的题目就是这样的啦~ 1114. Food CubesConstraintsTime Limit: 10 secs, Memory Limit: 32 MBDescriptionThe spacemen in the space shuttle are waiting for the next escape window t原创 2017-11-17 00:22:32 · 849 阅读 · 0 评论 -
KMP算法--[hiho1015]
KMP算法,用于实现字符串的匹配 朴素匹配方法的复杂度是O(N*M) KMP算法复杂度达到了O(N+M) 从这表达式来说,复杂度明显地降低了但这个算法最大的问题,就是很难理解。 在网上看了很多人,包括有个哥大家都说他讲得已经是最好的那个了,但是我还是没有看明白他在说什么,只是大概了解了他的思路。回去之后,翻了下数据结构和算法的书,认认真真地看了遍,收获很大。 特在这做一下笔记,方...原创 2017-10-23 21:12:03 · 1003 阅读 · 0 评论 -
简析并查集[C/C++]
并查集,是一个集合,主要为了实现了合并和查找两个功能 根据不同的题目需求进行使用Union and Find Set (UFSet) 结构抽象: 树形结构 一般做题类型: 等价类但是为了确保并查集的退化,所以,在进行合并的时候不像一般的集合合并一样。 本质上是数组(线段树,如果你熟悉树的结构的话)当数值为 负数的时候,表示这是一个根(其绝对值大小,表示的是对应树形下的 节点原创 2018-01-02 16:06:58 · 531 阅读 · 0 评论 -
讲讲排序(C++描述 )
排序和查找一直是算法的主流问题。 排序方法有很多种: 1.简单排序(O(n^2))#include <iostream>#include <algorithm>using namespace std;void SimpleSort(int *a,int n) { for (int i = 0; i < n - 1; ++i) { for (int j = i + 1;原创 2017-10-27 13:08:52 · 296 阅读 · 0 评论