算法题 - 笔试
笔试
小猪快点跑
这个作者很懒,什么都没留下…
展开
-
二维dp:最长公共子序列、最小调整代价
一、最长公共子序列二、最小调整代价1、题目描述给定两个字符串,已知可以使用三种方式进行变换1. 插入一个字符2. 删除一个字符3. 更改一个字符请设计一个算法,找到两个字符串之间的经历几次最小变换,可以字符串1转换成字符串2输入描述: 输入两个字符串,字符串的长度<=1000输出描述: 最小变换次数输入hellohel...原创 2019-09-09 21:56:45 · 185 阅读 · 0 评论 -
二维最长上升子序列
1、二维最长上升子序列 —— 相等可嵌套(1)排序,一维正排序,二维正排序;(2)对第二维度,求 最长 弱上升子序列,upper_bound#include <iostream>#include <vector>#include <algorithm> //sort、maxusing namespace std;bool ...原创 2019-09-03 21:42:30 · 1500 阅读 · 1 评论 -
大数据问题
1、top-k、top-kth(1)减治快排,2n。(2)小顶堆,nlogk。(3)遍历k次,kn2、找出10w个长度为20的字符串中重复次数最多的字符串(1)hash_map 内存:(20+4)*10w = 800wB= 8MB,在堆上创建。 时间:存n,查n3、1G内存,1T数据排序。(1)分块+快排+归并...原创 2019-09-03 18:10:22 · 160 阅读 · 0 评论 -
top-k / top-kth
1、减治-快排 二分,平均每次只快排一半,n + n/2 + n/4 + ... ~=2n#include <iostream>#include <vector>#include <algorithm>#include <numeric>#include <climits>using namespace...原创 2019-09-02 13:23:55 · 202 阅读 · 0 评论 -
一组数中最小值与和的乘积最大的段
一、ans = max(ans, min * sum) 一组数,找到一个区间,使这个区间的最小值 min 和这个区间的和 sum 的乘积 min * sum 最大,返回这个最大值。输入 5 10 2 7 6 8输出 126解释 [7 6 8]1、思路 二分法(最小值处分割)复杂度:nlogn ...原创 2019-09-01 23:20:04 · 530 阅读 · 0 评论 -
C/C++:字符串分割、版本比较
一、getline()1、从屏幕读入,切分,不会跳出while。会一直等待输入,换行无效string s;while(getline(cin, s)) { // 默认按空格切分 cout << s << endl;}string s;while(getline(cin, s, '.')) { // 按'...原创 2019-09-01 13:13:57 · 346 阅读 · 0 评论 -
C/C++:子串判断
一、子串判断题目描述我们定义字符串包含关系:字符串A=abc,字符串B=ab,字符串C=ac,则说A包含B,A和C没有包含关系。输入描述:两个字符串,判断这个两个字符串是否具有包含关系,测试数据有多组,请用循环读入。输出描述:如果包含输出1,否则输出0.输入abc ab输出11、C风格,strstr()char *strstr(const...原创 2019-09-01 12:42:23 · 7830 阅读 · 0 评论 -
链表问题:反转链表、反转m和n之间的链表、K个一组翻转链表
1、反转链表 反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLstruct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};...原创 2019-08-29 16:25:30 · 581 阅读 · 0 评论 -
算式转移:滴滴2019
#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;/*61 + 3 + 2 + -4 * -5 + 191 + 3 + 2 + -4 * -5 + 1 + 2 - 1 - -19...原创 2019-08-28 00:32:08 · 163 阅读 · 0 评论 -
田忌赛马 - 敲代码
一、题目描述田忌赛马:马速大者获胜,分数+100;马速相等平局,分数不变。则第一队可以获得的最大分数是多少?第一行:整数n,代表马的数量;第二行:第一队的 n 匹马的速度;第二行:第二队的 n 匹马的速度;二、田忌赛马-敲代码1、对第一队速度进行排序;2、遍历第二队每一匹马,二分查找到第一队中刚好大于该马速度的位置。(1)若找到大于本马的位置,删掉该位置,更新分数+...原创 2019-08-23 15:16:26 · 686 阅读 · 0 评论 -
商汤2019:7进制
一、7进制相加 1、逆序遍历,相加进位; 2、类似归并#include <iostream>#include <sstream>#include <vector>using namespace std;/*输入 4153 042输出 4225输入 126 126...原创 2019-08-20 23:06:06 · 233 阅读 · 0 评论 -
单调栈
一、单调栈的一些特点1、一般作为单调栈的数据结构vector<>、stack<>、string2、单调栈特点(1)特点1 当前元素左侧想要找的东西,需要在该元素进栈时找到; 当前元素右侧想要找的东西,需要在之后元素进栈时获得。 当一个元素进栈时,更新它左侧想要的东西,更新栈内元素右侧想要的东西。(2)...原创 2019-08-10 12:21:41 · 214 阅读 · 0 评论 -
最小区间问题:商汤2018
一、最小区间题目描述给定k个有序数组, 每个数组有个N个元素,找出一个最小的闭区间,使其包含每个数组中的至少一个元素。给定两个区间[a,b], [c,d]:如果 b-a < d-c,则认为[a, b]是更小的区间;如果 b-a == d-c,且a < c,则认为[a, b]是更小的区间。输入描述:KNx11 x12 x13 ... x1n......原创 2019-08-19 16:59:28 · 450 阅读 · 0 评论 -
时间问题:贝壳2018笔试题 教室占用冲突
贝壳2018 教室占用冲突1、题目描述: n个社团占用同一间教室,占用时间分别为 [li, ri]。占用时间可能发生冲突,去掉其中一个社团的申请后不发生冲突的方法有几种。输入: 第一行:整数n,表示社团数。(1 <= n <= 5000) 第二行:n个区间,代表第i个社团的占用时间范围[li, ri]。输出: ...原创 2019-08-07 21:36:41 · 350 阅读 · 0 评论 -
全排列、去重全排列、深度优先搜索 —— 基于数值交换、基于数值插入、基于访问状态
一、全排列——基于数值交换(结果不按字典序)1、全排列 这种全排列会打乱顺序,如果原始序列有序,则生成的结果不会完全按照字典序排列。如下输出中的第5行(3 2 1)和第6行(3 1 2)就是着这种情况。/*输入: 3 1 2 3输出: 1 2 3 1 3 2 2 1 3 2 3 1 3 2 1 3 1 2...原创 2019-08-09 16:14:40 · 192 阅读 · 0 评论 -
数据结构:树状dp
一、派对的最大快乐值1、题目描述整个公司的人员结构可以看作是一棵标准的多叉树。树的头节点是公司唯一的老板,除老板外,每个员工都有唯一的直接上级,叶节点是没有任何下属的基层员工,除基层员工外,每个员工都有一个或多个直接下级,另外每个员工都有一个快乐值。这个公司现在要办party,你可以决定哪些员工来,哪些员工不来。但是要遵循如下的原则:1.如果某个员工来了,那么这个员工的所有直接下...原创 2019-09-14 00:10:27 · 349 阅读 · 0 评论