
leetcode
小羊哈利
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2016年应届生求职日记
开篇总得唠叨几句废话,为什么写这篇文章了,一方面在求职季得到了很多热心人的点滴帮助,不能总是汲取而不懂得回馈,另外一方面,总觉得需要对人生的十字路口进行总结回顾,以免自己迷失了方向。最终拿到的offer:百度IDL小sp,360sp、小米、搜狐、招行卡中心、拼多多、杭州华为,海康威视研究院ssp,美图深度学习实验室、普联。申明一下,10月份以前我一个offer都没有,所以面试了很多,10月开始就陆续原创 2017-01-07 16:28:44 · 1231 阅读 · 7 评论 -
8. String to Integer (atoi)
8. String to Integer (atoi) Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what a原创 2016-05-24 19:04:58 · 237 阅读 · 0 评论 -
338. Counting Bits
Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1’s in their binary representation and return them as an array.Example: For num = 5 you sh原创 2016-05-24 21:16:25 · 283 阅读 · 0 评论 -
104. Maximum Depth of Binary Tree
104. Maximum Depth of Binary Tree 容易想到两种思路,深度优先搜索(DFS)和广度优先搜索(BFS): 思路一(DFS):struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL),原创 2016-04-19 10:31:32 · 283 阅读 · 0 评论 -
234. Palindrome Linked List
234. Palindrome Linked List Given a singly linked list, determine if it is a palindrome.Follow up: Could you do it in O(n) time and O(1) space?思路:首先定义快指针和慢指针,找到中间节点。然后将中间节点和尾节点之间的节点进行翻转。判断是否为回文节点。原创 2016-05-15 13:43:46 · 275 阅读 · 0 评论 -
257. Binary Tree Paths
257. Binary Tree Paths Given a binary tree, return all root-to-leaf paths.For example, given the following binary tree: All root-to-leaf paths are:[“1->2->5”, “1->3”]/** * Definition for a binary t原创 2016-05-15 12:50:47 · 505 阅读 · 0 评论 -
1035. 插入与归并(25)
1035. 插入与归并(25)根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成N个只包含1个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下1个有序的序列。现给定原始序列和由某排序算法产生的中间序列,请你判原创 2015-12-23 10:42:14 · 467 阅读 · 0 评论 -
Reverse Linked List
206. Reverse Linked List虽然在leetcode上,这题标记为easy。但是确实让我有点发懵,题目建议递归和循环两种做法。 首先我参照《剑指offer》里的方法写一下循环:struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} };clas原创 2016-04-16 10:42:59 · 325 阅读 · 0 评论 -
1008. 数组元素循环右移问题 (20)
1008. 数组元素循环右移问题 (20)一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1……AN-1)变换为(AN-M …… AN-1 A0 A1……AN-M-1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N原创 2015-11-21 16:40:22 · 468 阅读 · 0 评论 -
1014. 福尔摩斯的约会 (20)
1014. 福尔摩斯的约会 (20) 大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母’D’,代表星期四;第2对相同的字符是’E’,那是第原创 2015-11-24 18:04:27 · 379 阅读 · 0 评论 -
1015. 德才论 (25)
1015. 德才论 (25)宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入格式:输入第1行给出3个正整数,分别为:N(<=105),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不原创 2015-11-25 15:58:38 · 353 阅读 · 0 评论 -
1018. 锤子剪刀布 (20)
1018. 锤子剪刀布 (20)大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入格式:输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方原创 2015-11-25 19:21:21 · 365 阅读 · 0 评论 -
1019. 数字黑洞 (20)
1019. 数字黑洞 (20)给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。例如,我们从6767开始,将得到7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 12原创 2015-11-28 18:11:23 · 365 阅读 · 0 评论 -
1020. 月饼 (25)
1020. 月饼 (25)月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全原创 2015-11-28 18:48:31 · 424 阅读 · 0 评论 -
1001. 害死人不偿命的(3n+1)猜想 (15)
害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想:对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴原创 2015-11-17 22:41:48 · 544 阅读 · 0 评论 -
1002. 写出这个数 (20)
写出这个数 (20)读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。 输入样例:1234567890987654321123456789输出样例:yi san wu#include<io原创 2015-11-17 22:46:43 · 447 阅读 · 0 评论 -
1003. 我要通过!(20)
得到“答案正确”的条件是:字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。 现在就请你为PAT写一个自动裁判程序,判定哪些字符串是原创 2015-11-18 22:09:39 · 1030 阅读 · 0 评论 -
1011. A+B和C (15)
1011. A+B和C (15)给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。输入格式:输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开原创 2015-11-23 19:10:58 · 296 阅读 · 0 评论 -
[编程题] 比较重量
小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。 给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为一次比较中较重的钻石的编号,第二个元素为较轻的钻石的编号。最后给定之前的比较次数n。请返回这原创 2016-08-02 18:53:40 · 689 阅读 · 0 评论 -
最长公共子串(LCS)
(1) 找出两个字符串的最长公共子串题目:输入两个字符串,找出两个字符串中最长的公共子串。找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。#include<iostream>#include<string>using namespace std;int main(){ string s1 = "GCCCTAGCCAGDE"; string s2 = "GCGCC原创 2016-09-11 12:29:28 · 433 阅读 · 0 评论 -
1010. 一元多项式求导 (25)
1010. 一元多项式求导 (25)设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。 输入样例:3 4 -原创 2015-11-23 17:15:43 · 373 阅读 · 0 评论 -
1009. 说反话 (20)
1009. 说反话 (20)给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。 输入样例:Hello World Here原创 2015-11-23 14:09:59 · 305 阅读 · 0 评论 -
1017. A除以B (20)
1017. A除以B (20) 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。输入格式:输入在1行中依次给出A和B,中间以1空格分隔。输出格式:在1行中依次输出Q和R,中间以1空格分隔。 输入样例:123456789050987654321 7输出样例:17636684150141093474 3#includ原创 2015-11-25 17:24:00 · 263 阅读 · 0 评论 -
1016. 部分A+B (15)
1016. 部分A+B (15)正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA、B、DB,请编写程序计算PA + PB。输入格式:输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。输出格式:在一行中输出PA + PB的值。原创 2015-11-25 16:50:17 · 469 阅读 · 0 评论 -
1013. 数素数 (20)
1013. 数素数 (20)令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。输入格式:输入在一行中给出M和N,其间以空格分隔。输出格式:输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。 输入样例:5 27输出样例:11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73原创 2015-11-23 20:56:35 · 290 阅读 · 0 评论 -
1012. 数字分类 (20)
1012. 数字分类 (20)给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中最大数字。输入格式:每个输入包含1个测原创 2015-11-23 20:27:31 · 329 阅读 · 0 评论 -
1007. 素数对猜想 (20)
素数对猜想 (20) 时间限制 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N (< 10510^5),请计算不超过N的满足猜想的素数对的个数。输入格式:每个测试输入包含1个测试用例,给出正整数N。输出格式:每个测试用例的输出占一行,不超过N的原创 2015-11-20 21:49:59 · 307 阅读 · 0 评论 -
1006. 换个格式输出整数 (15)
换个格式输出整数 (15)让我们用字母B来表示“百”、字母S表示“十”,用“12…n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出n。 输入样例1:234输出样例1:原创 2015-11-20 21:16:21 · 355 阅读 · 0 评论 -
1005. 继续(3n+1)猜想 (25)
继续(3n+1)猜想 (25)卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我原创 2015-11-20 20:43:57 · 293 阅读 · 0 评论 -
1004. 成绩排名 (20)
成绩排名 (20) 读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含1个测试用例,格式为第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 … … … 第n+1行:第n个学生的姓名 学号 成绩其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在原创 2015-11-20 15:57:59 · 723 阅读 · 0 评论 -
1021. 个位数统计 (15)
1021. 个位数统计 (15)给定一个k位整数N = dk-1*10k-1 + … + d1*101 + d0 (0<=di<=9, i=0,…,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。输入格式:每个输入包含1个测试用例,即一个不超过1000位的正整数N。输出格式:对N中每一种不同的个位数字,以D:M的格式原创 2015-11-28 20:03:54 · 413 阅读 · 0 评论 -
1022. D进制的A+B (20)
1022. D进制的A+B (20) 输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。输入格式:输入在一行中依次给出3个整数A、B和D。输出格式:输出A+B的D进制数。 输入样例:123 456 8输出样例:1103#include<iostream>#include<vector>using namespace std;int main原创 2015-11-28 20:40:24 · 336 阅读 · 0 评论 -
1040. 有几个PAT(25)
1040. 有几个PAT(25)字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。现给定字符串,问一共可以形成多少个PAT?输入格式:输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。输出格式:在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1原创 2016-03-31 16:58:05 · 299 阅读 · 0 评论 -
1041. 考试座位号(15)
1041. 考试座位号(15)每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。输入格式:输入第一行给出一个正整数N(<=1000),随后N行原创 2016-03-31 18:17:11 · 267 阅读 · 0 评论 -
3. Longest Substring Without Repeating Characters
3. Longest Substring Without Repeating Characters Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters fo原创 2016-04-02 11:15:44 · 293 阅读 · 0 评论 -
1042. 字符统计(20)
1042. 字符统计(20) 请编写程序,找出一段给定文字中出现最频繁的那个英文字母。输入格式:输入在一行中给出一个长度不超过1000的字符串。字符串由ASCII码表中任意可见字符及空格组成,至少包含1个英文字母,以回车结束(回车不算在内)。输出格式:在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。原创 2016-04-02 12:01:35 · 245 阅读 · 0 评论 -
1043. 输出PATest(20)
1043. 输出PATest(20)给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按“PATestPATest….”这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按PATest的顺序打印,直到所有字符都被输出。输入格式:输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。输出格式:在一原创 2016-04-02 12:57:37 · 260 阅读 · 0 评论 -
100. Same Tree
100. Same Tree/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {}原创 2016-04-19 11:06:56 · 242 阅读 · 0 评论 -
169. Majority Element
169. Majority Element 两种思路:一种是先对数组进行排序,然后取中位数;另外一种比较巧妙,设置两个变量,一个计数器count,一个变量值num,然后从前往后遍历,遇到和num相同的count++,遇到不同的count–,当count==0时更新num。思路1:class Solution {public: int majorityElement(vector<int原创 2016-04-19 11:33:04 · 252 阅读 · 0 评论 -
235. Lowest Common Ancestor of a Binary Search Tree
235. Lowest Common Ancestor of a Binary Search Tree Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.According to the definition of LCA on Wikipedi原创 2016-04-19 15:13:52 · 280 阅读 · 0 评论