12 2014 档案
leetcode[171] Excel Sheet Column Number
摘要:果然是陆续出新题的节奏啊。看不见的题就坐等其他大神分享了。先做released的。之前是将数字转为excel的列,这里是给定列返回对应的数字。就是进制的转换,很简单的。需要注意的是从1开始的。不是0.class Solution {public: int titleToNumber(strin... 阅读全文
posted @ 2014-12-29 11:10 higerzhang 阅读(329) 评论(0) 推荐(0)
leetcode[167] Two Sum II - Input array is sorted
摘要:给定数组排好序了,然后给一个目标,找到两个数相加等于目标的两个数的下标。蛮简单感觉,就是左右两边往里,比目标大就右边减,小就左边加。一样就输出。 vector twoSum(vector &numbers, int target){ vector ans; int ... 阅读全文
posted @ 2014-12-27 23:38 higerzhang 阅读(2675) 评论(4) 推荐(2)
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"]... 阅读全文
posted @ 2014-12-27 23:12 higerzhang 阅读(549) 评论(0) 推荐(0)
leetcode[161] One Edit Distance
摘要:判断两个字符串的编辑距离是不是1.关于编辑距离可以参见之前有一题leetcode[72] Edit Distance思路:如果字符串相差2个以及以上长度,那么肯定不止1,直接false如果字符串长度相等,那么判断对应位置不同的字符数是不是1即可。如果字符串长度相差1,那么肯定是要在长的那个串删掉一个... 阅读全文
posted @ 2014-12-26 00:01 higerzhang 阅读(4649) 评论(1) 推荐(0)
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要一... 阅读全文
posted @ 2014-12-25 21:35 higerzhang 阅读(804) 评论(0) 推荐(0)
leetcode[158] Read N Characters Given Read4 II - Call multiple times
摘要:想了好一会才看懂题目意思,应该是:这里指的可以调用更多次,是指对一个文件多次操作,也就是对于一个case进行多次的readn操作。上一题是只进行一次reandn,所以每次返回的是文件的长度或者是n,并且将相应的字符存在buf里。现在调用多次的话就可能存在以下的例子:例如文件case是:1,2,3,4... 阅读全文
posted @ 2014-12-25 11:08 higerzhang 阅读(1741) 评论(0) 推荐(0)
leetcode[157] Read N Characters Given Read4
摘要:题目意思是给你一个read4的函数,实现一个readn的函数。一开始题目一直没搞懂,原来,read4(buf) 是指,读4个字符存到buf,或者读剩下的不足四个的字符,返回的数字是存到buf里的字符数。没有买书,只能网上看看别人分享的代码:// Forward declaration of the ... 阅读全文
posted @ 2014-12-24 23:13 higerzhang 阅读(797) 评论(0) 推荐(0)
leetcode[169] Majority Element
摘要:在一个数组中找到主要的元素,也就是出现次数大于数组长度一半的元素。我想到的方法是1. 排序,然后扫描一次就知道了。总共nlgn2. 哈希,记录每个次数,O(n)的时间和空间。class Solution {public: int majorityElement(vector &num) { ... 阅读全文
posted @ 2014-12-23 23:42 higerzhang 阅读(1680) 评论(0) 推荐(0)
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,... 阅读全文
posted @ 2014-12-23 00:09 higerzhang 阅读(1003) 评论(0) 推荐(0)
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, ... 阅读全文
posted @ 2014-12-22 00:33 higerzhang 阅读(347) 评论(0) 推荐(0)
leetcode[165] Compare Version Numbers
摘要:比较两个版本大小。思路:用点分隔,判断相应间隔的大小。因为存在长短的问题,还有0的存在,所以如果一个到末尾了,另一个没有的话,不妨假设到末尾的那个版本之后的间隔的值都为“0”。其中用到了stoi()函数。如果间隔中的版本相同,并且都已经到了末尾之后了,那么就是相等。否则,一直判断直到两个版本都结束为... 阅读全文
posted @ 2014-12-21 12:31 higerzhang 阅读(528) 评论(0) 推荐(0)
leetcode[164] Maximum Gap
摘要:梅西刚梅开二度,我也记一题。在一个没排序的数组里,找出排序后的相邻数字的最大差值。要求用线性时间和空间。如果用nlgn的话,直接排序然后判断就可以了。so easyclass Solution {public: int maximumGap(vector &num) { if (... 阅读全文
posted @ 2014-12-21 01:03 higerzhang 阅读(2686) 评论(0) 推荐(0)
leetcode[162] Find Peak Element
摘要:给定一个数组,假设下标0左边的为负无穷,下标size的也为负无穷。找到峰值所在。峰值是一定存在的,因为下标0大于左边了,如果不存在那么下标1就要大于0的,一次类推下一个都要大于上一个的。那么知道size-1的时候还是大于size-2,又因为size是负无穷,那么size-1就是峰值了。所以峰值一定存... 阅读全文
posted @ 2014-12-20 18:29 higerzhang 阅读(522) 评论(0) 推荐(0)
leetcode[160] Intersection of Two Linked Lists
摘要:那几题要15刀才能测试的就先放着了。先吧可以在线测试的刷了。这题是找到零个链表的相交的那个节点。如果没有相交,那就返回NULL。思路一:如果有相交,那么他们相交点之后的节点肯定都是共有的,然后两个链表有长有短的话,就先把长的读到和短的一样长,然后两个人在同时走,走到第一个相同的点就是答案了。如果相同... 阅读全文
posted @ 2014-12-20 10:24 higerzhang 阅读(434) 评论(0) 推荐(0)
leetcode[156] binary tree upside down
摘要:这题要收费了。只能网上看题目,我等屌丝也没法OJ测试了。网上看了后发现其实并非独创,其他的方也有类似的题。例如在这里,CareerCup上先用了递归的想法, TreeNode *ans; TreeNode *helper156(TreeNode *root) { if... 阅读全文
posted @ 2014-12-19 11:31 higerzhang 阅读(270) 评论(0) 推荐(0)
leetcode[155] Min Stack
摘要:实现一个堆,可以push,pop,top,和getMin主要的应该是getMin,如何找到最小的数。如果每次要找最小的数遍历一边,那貌似没什么意义了。做法是,用两个堆,一个用来正常的操作,另一个是记录到当前最小值,如果来一个数字,比最小值的那个对的top还小那就,两个堆都要push,如果pop的时候... 阅读全文
posted @ 2014-12-18 17:43 higerzhang 阅读(198) 评论(0) 推荐(0)
leetcode Find Minimum in Rotated Sorted Array II
摘要:和上题一样,这里要求可以重复数字。那么需要考虑的就比较多一步了。如果中间的值和左边的值相等的话,并且中间下标不等于左边下标的话,那么就存在问题了,因为我们不知道最小的到底会出现在哪里。那么就只能left++,继续判断了,所以最坏情况还是O(n)只要在上题基础上,稍微修改一下就行了。class Sol... 阅读全文
posted @ 2014-12-18 12:20 higerzhang 阅读(176) 评论(0) 推荐(0)
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 Rota... 阅读全文
posted @ 2014-12-18 12:09 higerzhang 阅读(185) 评论(0) 推荐(0)
leetcode Maximum Product Subarray
摘要:之前好像做过这样的,以前是加法,现在是乘法。一开始我也傻逼得用n方的试了下,肯定是TLE的。那显然就是可以O(n)解决了用两个dp数组,一个存最大值,一个存最小值,因为可能是负数再乘以负数就很大了,所以每次更新需要借助最小值一同更新最大值。最后遍历一边dp大的数组就有答案了。class Soluti... 阅读全文
posted @ 2014-12-18 11:20 higerzhang 阅读(196) 评论(0) 推荐(0)
leetcode Reverse Words in a String
摘要:将句子的词反转,例如:Given s = "the sky is blue",return "blue is sky the".思路:就是从后面往前,找到非空格的长度,然后取到另一个串中。遍历一次就可以了。如下:class Solution {public: void reverseWords... 阅读全文
posted @ 2014-12-18 09:32 higerzhang 阅读(163) 评论(0) 推荐(0)
leetcode[150] Evaluate Reverse Polish Notation
摘要:逆波兰表示法,在维基百科here一不小心就看到了维基上有说用栈处理。然后就用栈处理了。需要注意的是,操作数前后不要弄错,stoi可以调用。它应该是在stdlib.h的头文件里,不过我在codeblock上试了不行。class Solution {public: int evalRPN(vect... 阅读全文
posted @ 2014-12-17 23:25 higerzhang 阅读(149) 评论(0) 推荐(0)
leetcode Max Points on a Line
摘要:在一个平面内有很多点,返回在同一条直线上的最多点数。用map来记录通过某点的,和其他点构成的斜率有几个点。因为斜率有不存在的情况,另外用一个数记录。还有,因为可能会有重复的点,所以重复的点也是要另外记录的。最后返回最大值。用迭代器遍历map,找出最大的数。因为map可能是零,因为如果所有的点够成的斜... 阅读全文
posted @ 2014-12-17 22:17 higerzhang 阅读(266) 评论(0) 推荐(0)
leetcode Sort List
摘要:实现链表的nlgn时间排序,常数空间。想了想,符合那个时间复杂度的也就快排,堆,归并。一想到快排的最坏也是n方,就放弃了,堆的话貌似起码要组成堆要左右两个指针构建才比较方便。然后就觉得应该是要用归并了。还是看了JustDOIT大神的。自己也敲了一下。利用快慢指针找到中间,分成两个链表,然后递归,然后... 阅读全文
posted @ 2014-12-16 22:30 higerzhang 阅读(232) 评论(0) 推荐(0)
leetcode Insertion Sort List
摘要:利用插入排序,对链表进行排序。插入排序点here。居然初次想用unordered map来存每个节点,然后根据下标就可以访问了,再更新下班,也就是n方的方法了。但是不知为什么超时了。插入排序不就是n方吗。/** * Definition for singly-linked list. * struc... 阅读全文
posted @ 2014-12-15 22:27 higerzhang 阅读(241) 评论(0) 推荐(0)
vs 中一些快捷键
摘要:本文用于记录一些vs中快捷键,以便提高编程效率。首先小坦克的博客介绍的十几个快捷键挺不错的,还有动画演示。可以跳过去看看。自己也记录一些自己想用的吧:1. ctr + W + E 出现error list2. ctr + W + S 出现Solution Explorer3. ctr + W +... 阅读全文
posted @ 2014-12-15 11:53 higerzhang 阅读(728) 评论(0) 推荐(0)
leetcode LRU Cache
摘要:题目链接。实现一个数据结构用于LRU,最近最少使用,O(1)插入和删除。关于LRU的基本知识可参考here。先推荐JustDoIT的。下面是我自己实现的。class LRUCache{public://146LRU Least Recently Used int LRUsize; str... 阅读全文
posted @ 2014-12-14 23:46 higerzhang 阅读(172) 评论(0) 推荐(0)
leetcode[145] Binary Tree Postorder Traversal
摘要:实现后序遍历递归:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(... 阅读全文
posted @ 2014-12-13 22:45 higerzhang 阅读(189) 评论(0) 推荐(0)
leetcode Binary Tree Preorder Traversal
摘要:实现前序遍历。可参见中序遍历Binary Tree Inorder Traversal递归:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode... 阅读全文
posted @ 2014-12-13 21:48 higerzhang 阅读(200) 评论(0) 推荐(0)
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,依次类推。果然超时。/**... 阅读全文
posted @ 2014-12-13 20:55 higerzhang 阅读(157) 评论(0) 推荐(0)
leetcode Linked List Cycle II
摘要:给定一个链表,如果有环,返回环的起点,如果没环,则返回空指针。法一:unordered_set存做过的节点,一旦出现重复,那么它就是起点了。O(n)空间/** * Definition for singly-linked list. * struct ListNode { * int val... 阅读全文
posted @ 2014-12-13 15:33 higerzhang 阅读(164) 评论(0) 推荐(0)
leetcode Linked List Cycle
摘要:判断链表中有没有环。一个指针跑一次,一个指针跑两次,相遇就是有环/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x... 阅读全文
posted @ 2014-12-12 21:41 higerzhang 阅读(158) 评论(0) 推荐(0)
leetcode[140] Word Break II
摘要:这题是上一题的加强版,这里需要返回的是所有可能的分割词。例如:s="catsanddog",dict=["cat", "cats", "and", "sand", "dog"].A solution is["cats and dog", "cat sand dog"].先用dp求得每个起点到终点是否... 阅读全文
posted @ 2014-12-12 21:21 higerzhang 阅读(592) 评论(0) 推荐(0)
leetcode[139] Word Break
摘要:给一个字符串,判断是否能够分为若干个部分,并且每个部分都能在字典dict里面找到。有的话就返回true。例如:For example, givens="leetcode",dict=["leet", "code"].Return true because"leetcode"can be segmen... 阅读全文
posted @ 2014-12-12 15:13 higerzhang 阅读(1024) 评论(0) 推荐(0)
leetcode[138] Copy List with Random Pointer
摘要:这里是复制带有一个random指针的链表。是不是很熟悉啊。之前有做过克隆无向图的。那就借助leetcode Clone Graph的思路。分两次遍历链表,一次先复制普通的含next的,另一次就是复制random了。利用map记录,可以一次就找到想要的点。/** * Definition for si... 阅读全文
posted @ 2014-12-12 11:52 higerzhang 阅读(485) 评论(0) 推荐(0)
leetcode[137] Single Number II
摘要:题目和上题类似,这里给的数组仅有一个数出现一次,其他的出现3次。返回那个出现一次的数。这题还是比较难想到的。不想上一题只要异或一下就可以了,不用额外操作。法一:还是用map方法class Solution {public:int singleNumber(int A[], int n){ un... 阅读全文
posted @ 2014-12-12 11:21 higerzhang 阅读(3129) 评论(0) 推荐(0)
leetcode[136] Single Number
摘要:给定一个数组,里面有一个数只出现一次,其他的出现两次,找出出现一次的数。法一:map(但利用额外空间)class Solution {public: int singleNumber(int A[], int n) { unordered_map umap; for... 阅读全文
posted @ 2014-12-12 00:29 higerzhang 阅读(1071) 评论(0) 推荐(0)
leetcode[135] Candy
摘要:最少糖果问题。一排小孩,每个孩子有一个优先级,每个孩子至少要发给一个糖果,优先级高的比周围的孩子的糖果要多。需要注意的是,优先级一样的没有要求说一样多糖果!先初始化,每人一糖。为了保证优先级大的比相邻的且优先级小的要糖果多。所以我们分两次处理,一次处理比左边的多,一次处理兼顾左边的多的情况下比右边的... 阅读全文
posted @ 2014-12-11 23:41 higerzhang 阅读(1207) 评论(0) 推荐(0)
leetcode Gas Station
摘要:gas[i]表示第i个站点可以加的油,cost[i]表示到下一个站点要消耗的油,一开始油箱空,假设油箱可以装无限的油。然后在一个环中。那个起点开始可以绕一圈回到原点,有且仅有一个答案。如果没有则返回-1.There areNgas stations along a circular route, w... 阅读全文
posted @ 2014-12-11 00:13 higerzhang 阅读(266) 评论(0) 推荐(0)
leetcode Clone Graph
摘要:复制一个无向图。图的结构时有一个label,一个vector存和他想接的节点。可以自循环,就是vector中可以存在自己。例如:Nodes are labeled uniquely.We use#as a separator for each node, and,as a separator for... 阅读全文
posted @ 2014-12-10 21:42 higerzhang 阅读(304) 评论(0) 推荐(0)
leetcode Palindrome Partitioning II
摘要:题目和上题一样leetcode Palindrome Partitioning,这里需要求的是最小的分割数,也就是上一题的所有可能里面最少的一个分割。例如:For example, givens="aab",Return1since the palindrome partitioning["aa",... 阅读全文
posted @ 2014-12-09 23:40 higerzhang 阅读(379) 评论(0) 推荐(0)
leetcode Palindrome Partitioning
摘要:把一个字符串划分成几个回文子串,枚举所有可能的划分例如For example, givens="aab",Return[ ["aa","b"], ["a","a","b"] ]写一个子函数判断是否为回文。然后dfs,这个dfs比之前的稍微难理解一些。dfs函数每次输入的起点代表之前已经处理好了,从这... 阅读全文
posted @ 2014-12-08 00:31 higerzhang 阅读(231) 评论(0) 推荐(0)
leetcode[130] Surrounded Regions
摘要:给定一个类似棋盘,有X和O,把X圈住的O变为X例如:For example,X X X XX O O XX X O XX O X XAfter running your function, the board should be:X X X XX X X XX X X XX O X X其实这题的思路... 阅读全文
posted @ 2014-12-07 00:47 higerzhang 阅读(1814) 评论(0) 推荐(0)
leetcode[129] Sum Root to Leaf Numbers
摘要:给定一个数,从根节点到叶节点是一个值,返回所有的值的和。例如:For example, 1 / \ 2 3The root-to-leaf path1->2represents the number12.The root-to-leaf path1->3represents the ... 阅读全文
posted @ 2014-12-06 20:25 higerzhang 阅读(168) 评论(0) 推荐(0)
leetcode 128 Longest Consecutive Sequence
摘要:给定一个数组,找出里面连续的子序列的最长长度。例如:Given[100, 4, 200, 1, 3, 2],The longest consecutive elements sequence is[1, 2, 3, 4]. Return its length:4.思路一:排序,然后count一下就o... 阅读全文
posted @ 2014-12-06 19:44 higerzhang 阅读(425) 评论(0) 推荐(0)
leetcode Word Ladder II
摘要:和上题Word Ladder I题目差不多,不过这里是要记录所有最段路径的可能。不同点在于,我们不能再BFS每层的时候把相距一个字符的字符串在dict中删除,因为hot -> hit 的话其他的例如 jit -> hit 就是hit可以出现在两条路径里头。所以不能立马删除。但是我们发现我们可以删除的... 阅读全文
posted @ 2014-12-05 23:30 higerzhang 阅读(200) 评论(0) 推荐(0)
leetcode Word Ladder
摘要:给定两个字符串start和end,和一个字符串字典dict,判断从start到end 要经过几次变化,每次变化只能取字典里的词,且相邻的变化只有一个字符不同。例如:For example,Given:start="hit"end="cog"dict=["hot","dot","dog","lot",... 阅读全文
posted @ 2014-12-04 20:48 higerzhang 阅读(355) 评论(0) 推荐(0)
leetcode[125] Valid Palindrome
摘要:判断一个字符串是不是回文,忽略其中的非数字和非字母,例如符号和空格不考虑。For example,"A man, a plan, a canal: Panama"is a palindrome."race a car"isnota palindrome.Note:Have you consider ... 阅读全文
posted @ 2014-12-03 23:39 higerzhang 阅读(310) 评论(0) 推荐(0)
leetcode Binary Tree Maximum Path Sum
摘要:给定一颗数,然后任意的起点或者终点,找到最大的路径和。例如:Given the below binary tree, 1 / \ 2 3Return6.一看到是标hard的题目就觉得要吃力才能搞出来。果然,经过不懈奋斗,成功从Time Limited到AC。我看到这... 阅读全文
posted @ 2014-12-03 22:48 higerzhang 阅读(204) 评论(0) 推荐(0)
leetcode 123 Best Time to Buy and Sell Stock III
摘要:是之前两道题leetcode Best Time to Buy and Sell Stock和leetcode Best Time to Buy and Sell Stock II的加强版。这里要求只能买两次股票。做了一个多小时,试了好多次,终于AC了。思路:找到有可能为断点的地方,也就是出现递减的... 阅读全文
posted @ 2014-12-02 23:39 higerzhang 阅读(361) 评论(0) 推荐(0)
leetcode Best Time to Buy and Sell Stock II
摘要:和上一题类似Best Time to Buy and Sell Stock,这里还是用一个数组存每天股票价格,你有很多次买入卖出的机会,但是每次买入要在前一次卖出前。Say you have an array for which theithelement is the price of a giv... 阅读全文
posted @ 2014-12-02 21:45 higerzhang 阅读(239) 评论(0) 推荐(0)
leetcode Best Time to Buy and Sell Stock
摘要:有一个价格数组,对应的位置代表改天股票的价格,你有一次买入和卖出的机会,你如何使得收益最大化。也就是返回profit。Say you have an array for which theithelement is the price of a given stock on dayi.If you ... 阅读全文
posted @ 2014-12-02 21:38 higerzhang 阅读(488) 评论(0) 推荐(0)
leetcode[120] Triangle
摘要:给定一个三角数组,找从上到下的最小和,例如:For example, given the following triangle[ [2], [3,4], [6,5,7], [4,1,8,3]]The minimum path sum from top to bottom is11... 阅读全文
posted @ 2014-12-02 12:28 higerzhang 阅读(276) 评论(0) 推荐(0)
leetcode Pascal's Triangle II
摘要:和Pascal's Triangle类似,这里是不需要记录所有的,而是给定一个行号,返回那一行的数据就可以了。例如:For example, givenk= 3,Return[1,3,3,1].所以给0的时候返回[1].题目要求O(k)空间,也就是除了要返回的空间外,其他是常数空间。那就用一个tmp... 阅读全文
posted @ 2014-12-02 11:41 higerzhang 阅读(172) 评论(0) 推荐(0)
leetcode Populating Next Right Pointers in Each Node II
摘要:这题和上一题Populating Next Right Pointers in Each Node的不一样了,这里要求的是普通的树,难度就比较大了。之前是简单的找到左边的最后,和右边的最左链接就可以了。现在存在的问题是可能右边的左右一层不是在最左或者长度不一等等。 1 / ... 阅读全文
posted @ 2014-12-02 00:51 higerzhang 阅读(784) 评论(0) 推荐(0)
leetcode Populating Next Right Pointers in Each Node
摘要:看图就知道想要做什么事了。Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }Given the fo... 阅读全文
posted @ 2014-12-01 00:02 higerzhang 阅读(285) 评论(0) 推荐(0)