查找排序
stloztoeplitz
严格标准不抱怨,宽松要求自提高
展开
-
median-of-two-sorted-arrays
排序的代价过于高,我们可以采用挪动指针的方法找到第k大的值 There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)). 参考了大神原创 2016-12-10 18:08:20 · 318 阅读 · 0 评论 -
下厨房
牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。 输入描述: 每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。输出描述: 输出一行一个数字表示完成所有料理需要多少种不同的材料。输入例子: BUTTE原创 2017-01-19 13:29:39 · 213 阅读 · 0 评论 -
sort-list
说说自己做的过程中的几个错误吧。 1忽略了空链表的情况。 2两个链表进行并归排序的时候,应该拿函数返回的头结点,而不是划分的头结点,因为在递归的过程中,最初的头结点可能因为排序而后移了。 3快慢指针的问题条件的判断。#include <iostream> #include <map> #include <vector> #include<cstdlib> #include <ctime> #i原创 2017-01-12 17:53:39 · 194 阅读 · 0 评论 -
Intersect
#include <iostream> #include <set> using namespace std; int main() { int n; cin>>n; while(n--) { int n1,n2; cin>>n1>>n2; set<int> S1; for (int i=0;i<n1;i++)原创 2016-12-29 18:58:42 · 229 阅读 · 0 评论 -
折半插入排序算法
这个算法中最难以理解的莫过于,对于查找算法的理解了。因为在这种查找算法中,相等的情况并没有单独的列举出来跳出循环,算法设计者这样设计的目的是什么呢?原来算法设计者的目的是找到为了找到小于等于查找值的最大最大值,或者大于等于查找值得最小值,以便方便的进行插入。 如在本个例子中L[mid]<=L[0],就是为了的到大于等于查找值得最小值,也就是最后的high值,为了方便记忆,我们可以说大于等于的最小值原创 2016-12-18 17:34:35 · 315 阅读 · 0 评论 -
Sorting Algorithm
堆排序#include <iostream> using namespace std; const int maxn = 100010; int a1[maxn]; int n,m; void g(int lo,int len) { int tmp = a1[lo]; int h = lo; int k=lo*2; while(k<=len) { i原创 2017-01-03 10:57:56 · 255 阅读 · 0 评论 -
Sorting Algorithm
#include <iostream> using namespace std; const int maxn = 100100; int data[maxn]; int ans[maxn]; int data1[maxn]; void merge(int lo,int m, int hi) ; void divid(int lo,int hi) { if (hi>lo) {原创 2016-12-15 20:11:05 · 261 阅读 · 0 评论 -
1351. Multi-key Sorting
在输入的序列中,如果输入的元素与列表中的元素相同,则将列表中的元素删除,并将该元素加在列表的末尾。不知道为什么我写的链表是错的。#include <iostream> #include <vector> #include <stack> #include <cstring> using namespace std; const int maxn = 3000000; int isv[maxn];in原创 2016-12-15 19:48:50 · 540 阅读 · 0 评论 -
统计数字
数组的话地址必须是连续的,那么会有许多的浪费,而且输出的时候也是极为不方便的。使用map容器可以极大的简化这个问题。 而且注意输出格式,每个样例之间需要有一个空白行但是最后一行却不需要,就用这种输出,上次弥补下次的换行符号。#include <iostream> #include <map> #include <stdio.h> //using namespace std; int main()原创 2016-12-08 19:07:53 · 390 阅读 · 0 评论 -
魔板[S]
好的分层思想会使代码简单许多。 用了康拓展开,再次感觉到了数学的力量。 bfs的判定边界条件的时候,一般可以分为在得到新的状态的时候判定是否重复,也可以在拿出来的时候判定。总体而言在得到的时候判定会减少一层判定树的高度,但是要额外注意最开始的初始情况。 在TSOj中由于不能用stl中的数据,即必须自己手写队列,保存状态等,但是可以用stl的时候用简单了不少。#include <stdio.h>原创 2017-03-01 16:50:54 · 374 阅读 · 0 评论