- 博客(176)
- 收藏
- 关注
转载 leetcode[172] Factorial Trailing Zeroes
Given an integern, return the number of trailing zeroes inn!.给定n,求n!的末尾有几个零。能组成零的末尾的莫过于2*5,和本身就是0结尾的,如10,20,。。。可以注意到以0结尾的也是可以分解成2*5的,所以目标就转化为求几个2*5因子了,又注意到,明显的5的因子个数比2的个数要少,例如n为6的时候只有一个5,但是...
2015-01-14 10:07:00
190
转载 leetcode[171] Excel Sheet Column Number
果然是陆续出新题的节奏啊。看不见的题就坐等其他大神分享了。先做released的。之前是将数字转为excel的列,这里是给定列返回对应的数字。就是进制的转换,很简单的。需要注意的是从1开始的。不是0.class Solution {public: int titleToNumber(string s) { int ans = 0; ...
2014-12-29 11:10:00
202
转载 leetcode[167] Two Sum II - Input array is sorted
给定数组排好序了,然后给一个目标,找到两个数相加等于目标的两个数的下标。蛮简单感觉,就是左右两边往里,比目标大就右边减,小就左边加。一样就输出。 vector<int> twoSum(vector<int> &numbers, int target){ vector<int> ans; in...
2014-12-27 23:38:00
205
转载 leetcode[163] Missing Ranges
给定一个排好序的数组,和一个区间[lower, upper], 返回丢失的区间范围。例如:For example, given [0, 1, 3, 50, 75], lower = 0 and upper = 99, return ["2", "4->49", "51->74", "76->99"].在这里才发现c++版本的。string& ...
2014-12-27 23:12:00
82
转载 leetcode[161] One Edit Distance
判断两个字符串的编辑距离是不是1.关于编辑距离可以参见之前有一题leetcode[72] Edit Distance思路:如果字符串相差2个以及以上长度,那么肯定不止1,直接false如果字符串长度相等,那么判断对应位置不同的字符数是不是1即可。如果字符串长度相差1,那么肯定是要在长的那个串删掉一个,所以两个字符串一起加加,一旦遇到一个不同,那么剩下的子串就要是一样,...
2014-12-26 00:01:00
102
转载 leetcode[159] Longest Substring with At Most Two Distinct Characters
找到最多含有两个不同字符的子串的最长长度。例如:eoeabc,最长的是eoe为3,其他都为2.思路:用p1,p2表示两种字符串的最后一个出现的下标位置。初始p1为0. p2为-1.start初始化为0,表示两种字符串的开头。只要遍历一次string就可以得到结果了。首先我们要确定p2的值,那么i要一直到不等于s[p1]的值为止,那么位置就是p2了。然后继续往后如果来一...
2014-12-25 21:35:00
82
转载 leetcode[158] Read N Characters Given Read4 II - Call multiple times
想了好一会才看懂题目意思,应该是:这里指的可以调用更多次,是指对一个文件多次操作,也就是对于一个case进行多次的readn操作。上一题是只进行一次reandn,所以每次返回的是文件的长度或者是n,并且将相应的字符存在buf里。现在调用多次的话就可能存在以下的例子:例如文件case是:1,2,3,4,5,6,7如果要实现read5,先用read4读四个到buf,再用read4...
2014-12-25 11:08:00
95
转载 leetcode[157] Read N Characters Given Read4
题目意思是给你一个read4的函数,实现一个readn的函数。一开始题目一直没搞懂,原来,read4(buf) 是指,读4个字符存到buf,或者读剩下的不足四个的字符,返回的数字是存到buf里的字符数。没有买书,只能网上看看别人分享的代码:// Forward declaration of the read4 API.int read4(char *buf);...
2014-12-24 23:13:00
94
转载 leetcode[169] Majority Element
在一个数组中找到主要的元素,也就是出现次数大于数组长度一半的元素。我想到的方法是1. 排序,然后扫描一次就知道了。总共nlgn2. 哈希,记录每个次数,O(n)的时间和空间。class Solution {public: int majorityElement(vector<int> &num) { unorde...
2014-12-23 23:42:00
82
转载 leetcode[168] Excel Sheet Column Title
给定一个数,求出在excel中的列标题。例如 1 对应 A,2 对应 B,. .. , 26对应Z, 27 对应AA在没看别人解法之前,我是这样做的:观察数学规律,每次求一个字母,假设只有AB的情况的话,应该是这样的:我们列举前面3大种A,B,AA,AB,BA,BB,AAA,AAB,ABA,ABB,BAA,BAB,BBA,BBB第一种只有一个字母的是两个,如果是26个字...
2014-12-23 00:09:00
79
转载 leetcode[166] Fraction to Recurring Decimal
For example,Given numerator = 1, denominator = 2, return "0.5".Given numerator = 2, denominator = 1, return "2".Given numerator = 2, denominator = 3, return "0.(6)".按照上例子实现结果。主要就是如何处理...
2014-12-22 00:33:00
70
转载 leetcode[165] Compare Version Numbers
比较两个版本大小。思路:用点分隔,判断相应间隔的大小。因为存在长短的问题,还有0的存在,所以如果一个到末尾了,另一个没有的话,不妨假设到末尾的那个版本之后的间隔的值都为“0”。其中用到了stoi()函数。如果间隔中的版本相同,并且都已经到了末尾之后了,那么就是相等。否则,一直判断直到两个版本都结束为止。class Solution {public: int ...
2014-12-21 12:31:00
82
转载 leetcode[164] Maximum Gap
梅西刚梅开二度,我也记一题。在一个没排序的数组里,找出排序后的相邻数字的最大差值。要求用线性时间和空间。如果用nlgn的话,直接排序然后判断就可以了。so easyclass Solution {public: int maximumGap(vector<int> &num) { if (num.size() &...
2014-12-21 01:03:00
87
转载 leetcode[162] Find Peak Element
给定一个数组,假设下标0左边的为负无穷,下标size的也为负无穷。找到峰值所在。峰值是一定存在的,因为下标0大于左边了,如果不存在那么下标1就要大于0的,一次类推下一个都要大于上一个的。那么知道size-1的时候还是大于size-2,又因为size是负无穷,那么size-1就是峰值了。所以峰值一定存在。最挫的就是:每个词和左右的比较,符合就输出下标。边界条件判断一下。大概比较2n...
2014-12-20 18:29:00
79
转载 leetcode[160] Intersection of Two Linked Lists
那几题要15刀才能测试的就先放着了。先吧可以在线测试的刷了。这题是找到零个链表的相交的那个节点。如果没有相交,那就返回NULL。思路一:如果有相交,那么他们相交点之后的节点肯定都是共有的,然后两个链表有长有短的话,就先把长的读到和短的一样长,然后两个人在同时走,走到第一个相同的点就是答案了。如果相同的点是NULL了,那就是没有相交点。/** * Definitio...
2014-12-20 10:24:00
78
转载 leetcode[156] binary tree upside down
这题要收费了。只能网上看题目,我等屌丝也没法OJ测试了。网上看了后发现其实并非独创,其他的方也有类似的题。例如在这里,CareerCup上先用了递归的想法, TreeNode *ans; TreeNode *helper156(TreeNode *root) { if (!root -> left && !ro...
2014-12-19 11:31:00
108
转载 leetcode[155] Min Stack
实现一个堆,可以push,pop,top,和getMin主要的应该是getMin,如何找到最小的数。如果每次要找最小的数遍历一边,那貌似没什么意义了。做法是,用两个堆,一个用来正常的操作,另一个是记录到当前最小值,如果来一个数字,比最小值的那个对的top还小那就,两个堆都要push,如果pop的时候pop的数和最小值的那个堆的top一样,那就最小值的那个堆也要pop。在getMi...
2014-12-18 17:43:00
90
转载 leetcode Find Minimum in Rotated Sorted Array II
和上题一样,这里要求可以重复数字。那么需要考虑的就比较多一步了。如果中间的值和左边的值相等的话,并且中间下标不等于左边下标的话,那么就存在问题了,因为我们不知道最小的到底会出现在哪里。那么就只能left++,继续判断了,所以最坏情况还是O(n)只要在上题基础上,稍微修改一下就行了。class Solution {public: int findMin(vec...
2014-12-18 12:20:00
101
转载 leetcode Find Minimum in Rotated Sorted Array
一个有序数组,没有重复数字,向右推进了几次,找出最小值。例如(i.e.,0 1 2 4 5 6 7might become4 5 6 7 0 1 2).直接遍历一次找到答案就没有意义了。之前做过类似的题目,不过我找不到具体的题号了。所以就随便搜了下Garnker的,知道是Search in Rotated Sorted Array,那题是找目标值。这里是找最小值。我是这...
2014-12-18 12:09:00
125
转载 leetcode Maximum Product Subarray
之前好像做过这样的,以前是加法,现在是乘法。一开始我也傻逼得用n方的试了下,肯定是TLE的。那显然就是可以O(n)解决了用两个dp数组,一个存最大值,一个存最小值,因为可能是负数再乘以负数就很大了,所以每次更新需要借助最小值一同更新最大值。最后遍历一边dp大的数组就有答案了。class Solution {public: int maxProduct(i...
2014-12-18 11:20:00
128
转载 leetcode Reverse Words in a String
将句子的词反转,例如:Given s = "the sky is blue",return "blue is sky the".思路:就是从后面往前,找到非空格的长度,然后取到另一个串中。遍历一次就可以了。如下:class Solution {public: void reverseWords(string &s) { if (s....
2014-12-18 09:32:00
68
转载 leetcode[150] Evaluate Reverse Polish Notation
逆波兰表示法,在维基百科here一不小心就看到了维基上有说用栈处理。然后就用栈处理了。需要注意的是,操作数前后不要弄错,stoi可以调用。它应该是在stdlib.h的头文件里,不过我在codeblock上试了不行。class Solution {public: int evalRPN(vector<string> &tokens) ...
2014-12-17 23:25:00
68
转载 leetcode Max Points on a Line
在一个平面内有很多点,返回在同一条直线上的最多点数。用map来记录通过某点的,和其他点构成的斜率有几个点。因为斜率有不存在的情况,另外用一个数记录。还有,因为可能会有重复的点,所以重复的点也是要另外记录的。最后返回最大值。用迭代器遍历map,找出最大的数。因为map可能是零,因为如果所有的点够成的斜率为无穷大,那么就可能木有map了,所以斜率无穷大作为另外记录的要注意。还有是...
2014-12-17 22:17:00
107
转载 leetcode Sort List
实现链表的nlgn时间排序,常数空间。想了想,符合那个时间复杂度的也就快排,堆,归并。一想到快排的最坏也是n方,就放弃了,堆的话貌似起码要组成堆要左右两个指针构建才比较方便。然后就觉得应该是要用归并了。还是看了JustDOIT大神的。自己也敲了一下。利用快慢指针找到中间,分成两个链表,然后递归,然后合并。如下:/** * Definition for sing...
2014-12-16 22:30:00
72
转载 leetcode Insertion Sort List
利用插入排序,对链表进行排序。插入排序点here。居然初次想用unordered map来存每个节点,然后根据下标就可以访问了,再更新下班,也就是n方的方法了。但是不知为什么超时了。插入排序不就是n方吗。/** * Definition for singly-linked list. * struct ListNode { * int val;...
2014-12-15 22:27:00
49
转载 vs 中一些快捷键
本文用于记录一些vs中快捷键,以便提高编程效率。首先小坦克的博客介绍的十几个快捷键挺不错的,还有动画演示。可以跳过去看看。自己也记录一些自己想用的吧:1. ctr + W + E 出现error list2. ctr + W + S 出现Solution Explorer3. ctr + W + A 出现command window4. ctr + W + ...
2014-12-15 11:53:00
59
转载 leetcode LRU Cache
题目链接。实现一个数据结构用于LRU,最近最少使用,O(1)插入和删除。关于LRU的基本知识可参考here。先推荐JustDoIT的。下面是我自己实现的。class LRUCache{public://146LRU Least Recently Used int LRUsize; struct LRUNode { ...
2014-12-14 23:46:00
98
转载 leetcode[145] Binary Tree Postorder Traversal
实现后序遍历递归:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL)...
2014-12-13 22:45:00
65
转载 leetcode Binary Tree Preorder Traversal
实现前序遍历。可参见中序遍历Binary Tree Inorder Traversal递归:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int...
2014-12-13 21:48:00
104
转载 Leetcode Reorder List
实现链表如下所示:Given a singly linked listL:L0→L1→…→Ln-1→Ln,reorder it to:L0→Ln→L1→Ln-1→L2→Ln-2→…一开始想到一个n方的,就是每次找最后一个回调到相应位置,然后倒数第二个的next置为NULL,依次类推。果然超时。/** * Definition for singly-linke...
2014-12-13 20:55:00
108
转载 leetcode Linked List Cycle II
给定一个链表,如果有环,返回环的起点,如果没环,则返回空指针。法一:unordered_set存做过的节点,一旦出现重复,那么它就是起点了。O(n)空间/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...
2014-12-13 15:33:00
115
转载 leetcode Linked List Cycle
判断链表中有没有环。一个指针跑一次,一个指针跑两次,相遇就是有环/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} *...
2014-12-12 21:41:00
53
转载 leetcode[140] Word Break II
这题是上一题的加强版,这里需要返回的是所有可能的分割词。例如:s="catsanddog",dict=["cat", "cats", "and", "sand", "dog"].A solution is["cats and dog", "cat sand dog"].先用dp求得每个起点到终点是否...
2014-12-12 21:21:00
58
转载 leetcode[139] Word Break
给一个字符串,判断是否能够分为若干个部分,并且每个部分都能在字典dict里面找到。有的话就返回true。例如:For example, givens="leetcode",dict=["leet", "code"].Return true because"leetcode"can be segmented as"leet code"....
2014-12-12 15:13:00
51
转载 leetcode[138] Copy List with Random Pointer
这里是复制带有一个random指针的链表。是不是很熟悉啊。之前有做过克隆无向图的。那就借助leetcode Clone Graph的思路。分两次遍历链表,一次先复制普通的含next的,另一次就是复制random了。利用map记录,可以一次就找到想要的点。/** * Definition for singly-linked list with a random pointe...
2014-12-12 11:52:00
57
转载 leetcode[137] Single Number II
题目和上题类似,这里给的数组仅有一个数出现一次,其他的出现3次。返回那个出现一次的数。这题还是比较难想到的。不想上一题只要异或一下就可以了,不用额外操作。法一:还是用map方法class Solution {public:int singleNumber(int A[], int n){ unordered_map<int , int> ...
2014-12-12 11:21:00
75
转载 leetcode[136] Single Number
给定一个数组,里面有一个数只出现一次,其他的出现两次,找出出现一次的数。法一:map(但利用额外空间)class Solution {public: int singleNumber(int A[], int n) { unordered_map<int, int> umap; for (int i = 0; i ...
2014-12-12 00:29:00
59
转载 leetcode[135] Candy
最少糖果问题。一排小孩,每个孩子有一个优先级,每个孩子至少要发给一个糖果,优先级高的比周围的孩子的糖果要多。需要注意的是,优先级一样的没有要求说一样多糖果!先初始化,每人一糖。为了保证优先级大的比相邻的且优先级小的要糖果多。所以我们分两次处理,一次处理比左边的多,一次处理兼顾左边的多的情况下比右边的多。(如果优先级满足多的前提)那么第一次从左到右,if (ratings[...
2014-12-11 23:41:00
54
转载 leetcode Gas Station
gas[i]表示第i个站点可以加的油,cost[i]表示到下一个站点要消耗的油,一开始油箱空,假设油箱可以装无限的油。然后在一个环中。那个起点开始可以绕一圈回到原点,有且仅有一个答案。如果没有则返回-1.There areNgas stations along a circular route, where the amount of gas at stationiisga...
2014-12-11 00:13:00
85
转载 leetcode Clone Graph
复制一个无向图。图的结构时有一个label,一个vector存和他想接的节点。可以自循环,就是vector中可以存在自己。例如:Nodes are labeled uniquely.We use#as a separator for each node, and,as a separator for node label and each neig...
2014-12-10 21:42:00
80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人