自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

转载 360春招笔试算法题题解

360春招笔试算法题题解A. 跑步(水)题目描述小明同学喜欢体育锻炼,他常常去操场上跑步。跑道是一个圆形,在本题中,我们认为跑道是一个半径为R的圆形,设圆心的坐标为原点(0,0)。 小明跑步的起点坐标为(R,0),他沿着圆形跑道跑步,而且一直沿着一个方向跑步。回到家后,他查看了自己的计步器,计步器显示他跑步的总路程为L。 小明想知道自己结束跑步时的坐标,但是他忘

2017-09-24 18:06:53 389

原创 距离的总和(搜狗2017秋招真题)

题目描述定义两个大于2的偶数之间的距离,为这两个数之间质数的个数。从小到大输入n个大于2的偶数,输出所有数两两之间距离的总和(应该有n*(n-1)/2个距离,输出总和就好)。输入第一行是输入偶数的个数,最小为2,最大可能到几万。之后每行为一个偶数,最小是4,最大可能是几百万,不重复的升序排列。输出输入数据两两间距离的总和,这应该是一个不小于0的整数。

2017-09-24 16:57:33 408

原创 一个字符串的最大回文前缀长度(搜狗2017秋招真题)

输入:一个文本文件,至少包含一个字节。每个字节是一个字符。最大长度可能有几十万字节。输出:最大回文前缀的长度。这题很简单,但是我没看到题目说最大回文前缀长度。直接贴代码:int main(){ string num; getline(cin, num); int len

2017-09-24 16:42:50 425

原创 简易计算器

描述编写一个程序可以完成基本的带括号的四则运算。其中除法(/)是整除,并且在负数除法时向0取整。(C/C++/Java默认的除法就是向0取整,python默认的是向负无穷取整。)例如计算 100 * ( 2 + 12 ) - (20 / 3) * 2, 结果是1388。 输入一个长度不超过100的字符串,代表要计算的算式。包含数字0-9以及+-*/()。输入

2017-09-24 09:38:35 454

原创 数路径

题目:现有一个m*n(m、n都小于100的网格),位于左上角A要去右下角B,A只能向右或向下,按照刚才的规则,A到达B需要多少种不重复的路径?不是迷宫问题(好像迷宫的话直接再判断是否有墙就可以吧)这一题一开始想的就是dfs+回溯每一条路径,然后再cnt++(也可以递归实现):(此处注意:当m==1 || n==1时,只有一条路径【要么一直向上,要么一直向左】,故直接retu

2017-09-23 10:20:32 359

原创 扩展二进制数

扩展二进制数我们都知道二进制数的每一位可以是0或1。有一天小Hi突发奇想:如果允许使用数字2会发生什么事情?小Hi称其为扩展二进制数,例如(21)ii = 2 * 21 + 1 = 5, (112)ii = 1 * 22 + 1 * 21 + 2 = 8。很快小Hi意识到在扩展二进制中,每个数的表示方法不是唯一的。例如8还可以有(1000)ii, (200)ii

2017-09-22 09:47:50 1026

原创 HDU3466——Proud Merchants

这是01背包问题(我觉得题目挺好的),但是问题在于在动态规划前一定要先排序,排序规则是按照q-p由小到大的顺序排列,至于为什么这样排列,有几个博主写了:HDU 3466 Proud Merchants DP 分享排序方式的证明HDU3466(背包先后顺序)先上代码:struct Ce{ int p,q,v;}ce[555];int cmp(Ce

2017-09-15 23:00:22 450

原创 PAT1103——Integer Factorization

DFS很简单的,lz只是想抒发感慨所以才po代码int num, k, p;int factor[400];vector ans, ans_temp;int Max = 0;void dfs(int tot, int sum, int index, int level){ if(level > k) return; if(level == k){ if(

2017-09-11 17:02:18 252

原创 PATB1030——完美数列

正解肯定是二分,懒癌的lz用multiset,最后不能直接相减得到两个迭代器的距离(红黑树啊摔),没有办法只能用distance( ),只是想试试会不会超时,哈哈哈,真的超时了,还是滚回去乖乖二分啊。int n, p;multiset num;int main(int argc, const char * argv[]) { cin>>n>>p; for(int

2017-09-11 00:10:30 315

原创 Leetcode315——Count of Smaller Numbers After Self

终于在bst标签下找到一个lz能用bst做的出来的题目,泪目跪谢感谢扶起了我的自尊心,直接上代码,很简单的,就是逆序对的求法。class Solution {public: struct node{ int num, count; node *l, *r; node(int num): num(num), count(0), l

2017-09-10 21:22:58 317

原创 Leetcode220——Contains Duplicate II

很容易可以想到用一个窗口[i , i+k],然后再在窗口内find,用mutiset这样对某个数的find的时间复杂度O(logN),这样循环之后复杂度为(NlogN),主要注意事项是不能用set,需要用到multiset,然后此处不能直接用find(可能find不到),用lower_bound去find就可以了很简单,直接上代码了class Solution {public:

2017-09-10 21:01:06 156

原创 Leetcode327——Count of Range Sum

最近写了好多分治算法的题目啊,总结如下就是找出数组第i位后面的某些符合条件的位的个数,这一类型都可以用sort&merge做出来(当然也可以用bst,因为这都是存在插入顺序,刚好可以用来筛选是否为第i位后面一位),当然这一题还有很多解法,譬如二叉树。用sum建树,然后在add的时候比较。参考资料有五种解法class Solution {public: i

2017-09-10 19:18:42 511

原创 Leetcode352——Data Stream as Disjoint Intervals

效率开始下降,实验室聚餐一开始推了,发现他们全都去了又开始怀疑是不是该去,看了看窗外的太阳然后又放弃了,纠结如我。这题很简单,二分查找输入(但我总觉得可以用bst做,但是想想,insert的时间复杂度O(h)+遍历复杂度O(n))比二分查找O(logN)多(当然这个不含有vector ans的erase、insert操作)(ps. insert也是O(n)的复杂度,大神说在里面插入用list好

2017-09-10 14:19:41 332

原创 Leetcode493——Reverse Pairs

垃圾如我,先mark一下吧,听说树状数组可以更简便,然而一直还没看之先mark一下吧既然不用树状数组,那就只能用merge&sort和bst了,大神说了bst会超时,只能用avl,然后我试了试bst还真的会超时:class Solution {public: int sum = 0; struct node{ node* r, *l;

2017-09-10 09:25:05 404

原创 Leetcode135——Candy

虽然我知道最好不要写垃圾答案,但是这个真的戳笑点。第一次写出有时候可以ac有时候会runtime error的解法,真是在生死线上徘徊啊:class Solution {public: int cand[1000] = {0}; int Most(int a, vector& ratings){ if(cand[a] != 0){

2017-09-07 11:25:01 169

原创 Leetcode316——Remove Duplicate Letters

这里找到更简单的一种做法class Solution {public: string removeDuplicateLetters(string s) { string a = s.substr(2).replace(0, 1, "q"); if(s.size() < 2) return s; int count[150] =

2017-09-07 08:47:04 178

原创 Leetcode659——Split Array into Consecutive Subsequences

写的很奇怪,一下子就写完了,但是感觉解法及其不规范QAQ逻辑连自己都说不清楚- -,大概就是以前打扑克凑顺子的思路吧,这都可以ac了也是有点纳闷class Solution {public: int Hash[10000] = {0}; bool isPossible(vector& nums) { int max = 0; sort(nu

2017-09-04 21:26:11 710

原创 Leetcode312——Burst Balloons

Remove Boxes由于对该题的理解不深,于是找了另外一道简单一点的题目来理解。int dp[500][500] = {0}; //dp[i][j]:i-j全部消掉能得到的最大数字int main(){ int num[4] = {3,1,5,8}; vector nums(num, num+4);

2017-09-04 19:07:19 259

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除