摘要: 最简单粗暴的思路,sort后比较当前数和后一个数是否相同。但是耗时,O(nlogn) 用set优化,放入一个数,如果已经在set中,那么return true 然而set更慢了…… 把set改为unordered_set会快一些,但是仍没有sort快。 阅读全文
posted @ 2016-03-20 17:00 co0oder 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 注:质数从2开始,2、3…… 改进过程: 一、常规思路是对小于n的每一个数进行isPrime判断,isPrime(int x)函数中for(int i = 2; i <= x /2; ++i),如果x%i==0,return false。 二、将isPrime(int x)中i的范围改为i * i 阅读全文
posted @ 2016-03-20 16:32 co0oder 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 与H-Index思路相同,因为输入已经sort了,所以原来的代码去掉了sort,但是会TLE,于是把citation.size()放入一个变量中,这样就不用每次都调用一遍函数了,AC但是82test cases 1038ms,之前H-Index 81test cases 4ms。 看了别人的代码,发 阅读全文
posted @ 2016-03-20 15:46 co0oder 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 结果小数点后面如果是循环的话,要用括号把循环出现的部分括起来。 找出循环部分的思路: 维护一个unordered_map<long, long>dict,对应关系是余数及其在res中的位置。每次计算小数点后的每一位结果时,查找是否已经在dict中,如果已经在了,那么说明已经找到了重复的部分(如结果0 阅读全文
posted @ 2016-03-20 15:40 co0oder 阅读(251) 评论(0) 推荐(0) 编辑
摘要: N个数中有h个数>=于h,其余的<h。 在纸上写出后便易得,当N个数排序后,在citation[i]的右边(包括它本身),共有N-i个数,这些数均>=citation[i],即有N-i个数>=citation[i],使h=N-i,如果此时citation[i]>=N-i,那么必定有N-i个数>=N- 阅读全文
posted @ 2016-03-19 21:37 co0oder 阅读(578) 评论(0) 推荐(0) 编辑
摘要: happy number的定义:不断的将每一位平方并相加,最后能得到1的数字。 核心思想:如果不是happy number的话,那么这个数会陷入死循环,即每位平方和的结果会和之前的结果重复。略微带点动态规划的思想(?) 注:set.insert(x)返回的是一个pair,first是一个指向x的迭代 阅读全文
posted @ 2016-03-16 20:42 co0oder 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 最初思路,也是最简单的思路,维护一个string res,保留当前的不重复的字符串。string s一位位读进,读进每一位时和res中的每一位进行比较,没有重复就加入res;重复了的话,res就只保留与s[i]重复的那个char右边的部分,并加上s[i],在对res进行截取操作之前更新maxLen。 阅读全文
posted @ 2016-03-16 20:22 co0oder 阅读(143) 评论(0) 推荐(0) 编辑
摘要:   阅读全文
posted @ 2016-03-15 19:16 co0oder 阅读(132) 评论(0) 推荐(0) 编辑
摘要:   阅读全文
posted @ 2016-03-15 18:33 co0oder 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 注意标记了!!的两行代码不能调换,否则RE.因为如果输入是[1,2], k = 3,那么在while循环里num=1时,end=NULL,end->next引起RE.   思路:先通过while循环得到要翻转的起始和末尾节点start、end,进行翻转,并和上一段节点的末尾prev,下一段节点的起始 阅读全文
posted @ 2016-03-14 22:25 co0oder 阅读(130) 评论(0) 推荐(0) 编辑