摘要: 面试题之排序总结 插入排序 分析: 插入排序就是通过数字插入有序数组的方式进行排序的, 代码简单, 且易理解。时间复杂度O(N N) 代码如下: 归并排序 分析:两个有序数组的合并,应该都很熟悉。现在将一个数组N个元素,将它看做N个数组, 每个数组一个元素,这样任意一个数组都是有序的,然后两两合并(阅读全文
posted @ 2017-10-24 20:20 aiterator 阅读(191) 评论(1) 编辑
摘要: 面试题链表总结 链表定义为: 规定错误处理方式: + 如果返回值为指针,返回nullptr + 如果返回值为数字,返回为 1 O(1)删除链表中节点 题目描述: 给出该节点的指针,在链表中删除这个节点 分析:O(1)的复杂度要求, 直接排除遍历的这种情况。只能从自身需求突破,很容易想到,自身删除不易阅读全文
posted @ 2017-10-19 22:16 aiterator 阅读(47) 评论(0) 编辑
摘要: 题目链接: 如果查两个核心部门的最短距离m,需要一下步骤 + 首先需要两个核心部门所在大楼之间的最低楼高S是多少 + 然后在算出两个核心部门所在大楼的最低楼层T是多少 + 然后就可以分为两种情况来讨论了 1: S T, 那么m为两个核心部门所在大楼的楼距加上两个核心部门的层距。 2:S using 阅读全文
posted @ 2017-06-05 14:39 aiterator 阅读(25) 评论(0) 编辑
摘要: 题目链接: 做这个题的时候真的是。。。 数学忘完了, 失了智; 还是一位学弟的思路。 设置等腰三角形的下边长为1,其他的边都可以根据正余弦公式得出近似精确的长度。然后在根据正余弦公式算出所求角的大小。 代码如下:阅读全文
posted @ 2017-06-05 14:24 aiterator 阅读(24) 评论(0) 编辑
摘要: 题目链接: 思路就是用线段树查找最左边第一个大于等于v的数,然后返回线段树下表即可。 代码如下: Cpp include using namespace std; struct node { int l, r; long long x, add; }; node tree[1000000 1; bu阅读全文
posted @ 2017-06-05 14:19 aiterator 阅读(54) 评论(0) 编辑
摘要: 题目链接: 思路有两种: + 线段树查区间最小值和最大值 + RMQ查区间最小值和最大值 线段树代码: Cpp include using namespace std; const long long INF = 0x3f3f3f3f; long long n; long long a[100007阅读全文
posted @ 2017-06-05 14:14 aiterator 阅读(30) 评论(0) 编辑
摘要: 题目链接: 就是将单词翻转一下, 没什么可写的, 代码如下: Cpp include using namespace std; string str; bool judge(char ch) { if(ch = 'a' && ch = 'A' && ch阅读全文
posted @ 2017-06-05 13:38 aiterator 阅读(24) 评论(0) 编辑
摘要: 题目链接: 两种思路: + 1.用kruskal求这个图的最小生成树,由于kruskal算法先添加边权小的边,然后添加边权大的边。由这个性质可以知道,每添加完边r,如果s,t由不在一个树上两个点变为在同一个树上的两个点,那么这个边就是s,t路径上的最大值。即为答案。 + 2.用dijkstra算法求阅读全文
posted @ 2017-06-05 13:34 aiterator 阅读(50) 评论(0) 编辑
摘要: 题目链接: 思路就是二分最大值然后用O1背包判断就好了 代码如下: Cpp include using namespace std; int s[1007], v[1007]; int dp[1000007]; int n, m, k; bool judge(int x) { memset(dp, 阅读全文
posted @ 2017-05-31 16:17 aiterator 阅读(29) 评论(0) 编辑
摘要: 题目链接: 这道题两种思路 + 1.二分答案加O(n)判断 + 2.直接O(n)尺取法,尺取出最大答案 二分代码: C++ include using namespace std; int arr[1000007]; int n, k; bool judge(int x) { int res = 0阅读全文
posted @ 2017-05-31 16:12 aiterator 阅读(95) 评论(0) 编辑