首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
so_hard.
获赞
15
粉丝
5
关注
8
看过 TA
24
男
福州大学至诚学院
2020
算法工程师
IP属地:广东
想学大佬的暴力美学
私信
关注
拉黑
举报
举报
确定要拉黑so_hard.吗?
发布(343)
评论
刷题
so_hard.
关注TA,不错过内容更新
关注
2020-01-06 10:29
福州大学至诚学院 算法工程师
2019江西游记
前言 今天是2020年1月3日,多云。距离2020年研究生考试已经过去了12天,距离2021年研考还有364天。由于考试的种种不理想因素,考完浑浑噩噩了好几天,毕业设计仍没开始动工。各种以前的游戏都重玩了一遍,发现没有当初玩时的快乐了,可能是没了当初长辈约束时偷玩的那种刺激,可能是身份已然不同,周遭早已物是人非,可能是这份热情早已消失殆尽......受小王同学之邀,我于元旦几日来到他的家乡- -江西游玩了三日。 时间轴 31日 07点:动身 09点:上动车 13点:抵达永修县 14点:吃饭、看电影 18点:逛商场、吃饭(农家乐类型,味道很好,只不过忘了啥店) 21点:玩游戏、泡温泉(西海)...
0
点赞
评论
收藏
分享
2019-12-19 10:25
已编辑
福州大学至诚学院 算法工程师
求n个闭区间的所有交集(贪心 || 线段树)
问题描述:给你n个闭区间,输出这n个开区间的所有交区间,可能存在一个子区间有多次重复,一个交区间的定义是至少有两个大区间都包含它,并且答案集中要尽可能地把所有区间合并。注:为了避免歧义,头对尾交于一个点则不算交。 思路:这是对于LeetCode986的一个拓展,如果问题约束到一个交区间最多只有两个大区间包含它,那么就可以先把区间预处理成像LeetCode986那样的两个递增区间,用双指针求交集。 对于这个问题我们也是要用到贪心的策略,先对左端点排序,之后维护一个全局的最右上限,每次都拿左端点跟这个最右上限比较,大于它就与之前的区间互斥,更新一下上限,否则求一下交。 但是发现问题还有个条件,尽...
0
点赞
评论
收藏
分享
2019-07-25 19:47
已编辑
福州大学至诚学院 算法工程师
计蒜之道2019 复赛 D、B、E
linkD思路:开始的想法是用邻接表存住每个字母的下标,由于扫描顺序的缘故字母的下标表必然有序,然后二分。复杂度是。然后T一发...冥想了一会胡搞了一下又T了。算了一下规模差不多有15e7这样...后来改用单调栈维护一发过。其中单调栈中是维护一个字典序单调不减的序列。 Code:单调栈 //2019.6.16 by Caczhtus //计蒜之道2019 D #include <bits/stdc++.h> using namespace std; #define maxn 5000005 #define repU(i, a, b) for (int i = a; i <=...
0
点赞
评论
收藏
分享
2019-07-25 18:08
已编辑
福州大学至诚学院 算法工程师
镜像反转二叉树
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 思路:先序遍历二叉树 Code: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNo...
0
点赞
评论
收藏
分享
2019-07-25 18:15
已编辑
福州大学至诚学院 算法工程师
线性复杂度查找链表的公共节点
题目详情:输入两个链表,找出它们的第一个公共结点。 思路: 1,由于从公共节点开始之后都是公共节点,也就是说不管两个链的长度是否一样,反过来的公共长度一定一样,于是用两个栈来从后往前匹配,找到最后一个公共节点即为原链的第一个公共节点。 2,和思路一很类似,先让两个开始匹配的指针水平线相同,也就是长的那个要走到与短的那个链有相同长度的位置,之后就从前往后匹配。之所以这样子做是因为: 假 设 k ...
0
点赞
评论
收藏
分享
2019-07-25 18:09
已编辑
福州大学至诚学院 算法工程师
利用栈的结构O(1)动态查询当前最小值(双栈)
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 思路:利用两个栈来进行操作,一个存正常的栈数据,另一个辅助栈存放当前最小值。 入栈时:如果当前没有最小值或者加入的数字小于等于当前的最小值则更新辅助栈,即push新数据,否则不操作,这里注意定义为小于等于就加入,而不是小于,因为比如出现两个相等最小,靠后那个数字被pop掉了此时最小还是那个数,所以辅助栈中维护的应该是一个单调不减的序列。 出栈时:如果当前数据栈栈顶的元素等于辅助栈栈顶的元素,说明这个元素为当前最小,所以pop掉,否则不操作。 Code: cla...
0
点赞
评论
收藏
分享
2019-07-25 18:09
已编辑
福州大学至诚学院 算法工程师
统计一个数字中二进制位1的个数
题目详情:给一个二进制数,其中负数用补码表示,问其中二进制‘1’的个数。 思路1:在计算机中,其实为了运算的方便,负数都是用二进制的补码表示,也就是说,我们对其进行位运算其内部加法器的实现都是先转化成补码(详见组成原理)。对于这题有以下几个思路: 按位统计,也就是每次从二进制最右边通过与1来查看该二进制位是否为1,然后通过循环判断。但注意这个方法对于负数要做特判,否则会陷入死循环! 根据补码的特性直接与 n − ...
0
点赞
评论
收藏
分享
2019-07-25 18:15
已编辑
福州大学至诚学院 算法工程师
有序矩阵查询某值是否在阵中(搜索)
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:由于是有序的,我们找个起点开始搜索,注意这个起点一定要能确定一个方向是递减一个是递增的,不然两个决策一样地话就不能搜索了,于是找了右上角作为起点dfs,复杂度 O ( m a ...
0
点赞
评论
收藏
分享
2019-07-25 18:10
已编辑
福州大学至诚学院 算法工程师
二叉树的S型遍历(双栈)
思路:维护两个栈,逻辑如下: 奇数层的遍历明显从右到左,其下一层反向所以这层入栈的子树也应该从右到左 偶数层反向 注意在维护STL的时候指针参数地传递,关于对象的赋值要处理好,可以用指针减少不必要的麻烦! 在处理遍历方向时候通过根节点加入不同的栈能够完成顺序地完全对称遍历,也就是本来是之字形遍历变为S型遍历 Code: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) ...
0
点赞
评论
收藏
分享
2019-07-25 18:10
已编辑
福州大学至诚学院 算法工程师
求两个等长升序序列的中位数(二分)
题目: 给两个长度均为N的升序序列,求两个序列的所有元素的中位数。定义一个长度为L的升序序列S,其 L / 2 L/2 L/2位置的数为中位数。 思路: PS:这里网上挺多***括标准答案都是取靠中间的前一个作为中位数,但根据题目的意思似乎是靠中间的后一个才是中位数吧? 很直观地能想到合并数组直接 ...
0
点赞
评论
收藏
分享
2019-07-25 18:10
已编辑
福州大学至诚学院 算法工程师
查询区间恰好有2个的数字种类数
思路:离线做法: 首先离散化数字arr,并按右端点处理询问,原理和处理区间种类数一样 然后把1~n的相同的数字预处理一下,让每个相同的数字可以索引到它后面那个位置,也称为这个节点的后继,实际上就是按类构造静态链表 之后预处理每个链表首部有后继的节点在表头位置+1 然后根据树状数组处理1~n的区间,每当一个节点有后继时它的位置-1,后继+1,使得该区间的总数不变,并且靠后的区间也能够共享到这个成果,这个查询的意义在于它能够统计区间大于等于2的数字种类数 同理可得区间大于等于3的数字种类数,根据A1-A2得到数量恰好为2的数字种类数 Code: #include &...
0
点赞
评论
收藏
分享
2019-07-25 18:11
已编辑
福州大学至诚学院 算法工程师
给定二叉树的含中序的任意两个遍历序列还原二叉树
思路:该二叉树能够还原的充分条件是这两个序列必含有一个中序遍历序列。因为通过中序遍历序列以及之外的任意一个序列能够退出左右子树的规模,然后递归地构建父亲节点。 Code: /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* reConstru...
0
点赞
评论
收藏
分享
2019-07-25 18:15
已编辑
福州大学至诚学院 算法工程师
查询区间中出现次数超过长度的一半的数字
思路:思路有很多,大致有这几种: 强行在线统计每个数字的出现次数,由于不知道数字的规模,用键值树(hash_map、Tree_map)记录次数,复杂度 O ( n l o g n ...
0
点赞
评论
收藏
分享
2019-07-25 18:08
已编辑
福州大学至诚学院 算法工程师
计蒜之道2019 复赛 D、B、E(贪心+思维)
link D 思路:开始的想法是用邻接表存住每个字母的下标,由于扫描顺序的缘故字母的下标表必然有序,然后二分。复杂度是\(O(nlogn)\)。然后T一发...冥想了一会胡搞了一下又T了。算了一下规模差不多有15e7这样...后来改用单调栈维护一发过。其中单调栈中是维护一个字典序单调不减的序列。 Code: 二分(T) //2019.6.16 by Caczhtus //计蒜之道2019 D #include <bits/stdc++.h> using namespace std; #define maxn 5000005 #define repU(i, a, b) for...
0
点赞
评论
收藏
分享
2019-07-25 18:15
已编辑
福州大学至诚学院 算法工程师
基于Linux的远程操作C语言实现(client and server)
需求 在Linux上利用流套接字提供客户端和服务端面向连接的交互。进行登陆验证、查看服务器列表、下载文件、远程执行命令的几个操作。 设计 每次请求客户端首先发出一个报头,得到服务端的响应后确保连接的正确建立,之后开始传文件。 对于下载文件操作:客户端输入一个相对路径或者绝对路径以及文件名,等到服务端响应一个确认报文后开始进行收文件。其中文件的传递利用二进制流的形式发送,这样的优点是能够将文件分成许多块发送且能够方便客户端读取。 对于执行命令操作服务端通过客户端传来的命令,将其切割成各个命令以及参数块,之后利用fork以及exec函数族的形式让子进程执行改命令。要注意的是,通...
0
点赞
评论
收藏
分享
1
2
3
4
5
6
23
关注他的用户也关注了:
牛客网
牛客企业服务