leetcode编程练习源码
发布leetcode上边编程题目的解答,保证发布可以AC的源码。
axiaochong
这个作者很懒,什么都没留下…
展开
-
leetcode——Evaluate Reverse Polish Notation 求算式值(AC)
Evaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operators are +, -, *, /. Each operand may be an integer or another expression.Some examples: ["2", "1",原创 2014-07-17 22:14:27 · 1171 阅读 · 0 评论 -
leetcode——Insertion Sort List 对链表进行插入排序(AC)
Sort a linked list using insertion sort.class Solution {public: ListNode *insertionSortList(ListNode *head) { if(head == NULL || head->next == NULL) return head; Lis原创 2014-07-14 22:05:05 · 1178 阅读 · 0 评论 -
leetcode——Search a 2D Matrix 二维有序数组查找(AC)
如果直接对矩阵元素进行二分查找的话,时间复杂度是O(m*n),其实很容易想到先通过查找找到对应可能存在于哪一行,然后再在那行中查找是否存在,采用最简单的直接查找这样时间复杂度仅有O(m+n),如果这两次查找再分别采用二分查找的话,时间复杂度更可以降低到O(logm+logn),下面是O(m+n)的代码:原创 2014-07-13 17:07:17 · 1690 阅读 · 0 评论 -
leetcode——Best Time to Buy and Sell Stock III 买卖股票最大收益(AC)
需要注意的是,可以操作两次买卖,但是第二次买入必须在第一次卖出之后才能操作。所以思路就是先正序使用贪心计算每一天之前买入卖出可能达到的最大收益,拿数组记录下来。再逆序计算每一天对应的之后买入卖出可能达到的最大收益,拿数组记录下来。然后将两个数组中每一天对应的两种情况可以实现的收益之和,得到最大值即为可以实现的最大收益。code如下:原创 2014-06-27 20:16:59 · 1970 阅读 · 0 评论 -
leetcode——Search for a Range 排序数组中寻找目标下标范围(AC)
Given a sorted array of integers, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of O(log n).If the target is not found原创 2014-06-19 14:58:07 · 1226 阅读 · 0 评论 -
leetcode——Reverse Linked List II 选择链表中部分节点逆序(AC)
处理这个问题还是挺复杂的,需要考虑很多边界的测试用例。我总体的思路是先用循环标记m前一个节点和n后边一个节点,把n后边的节点首先作为当前逆转节点的pre,然后循环n-m次完成所选节点部分的逆序,然后将标记的m节点前一个节点指向逆序后部分的头节点即可。要考虑各种特殊情况,另外考虑即可。code如下:原创 2014-06-15 12:46:46 · 1425 阅读 · 0 评论 -
leetcode——Remove Duplicates from Sorted List II 删除排序字符串中重复字符(AC)
没什么太多讲的,可以使用递归和迭代两种方法来做,要仔细考虑各种输入情况。code如下:原创 2014-06-15 09:02:46 · 1774 阅读 · 0 评论 -
leetcode——Implement strStr() 实现字符串匹配函数(AC)
这个题考查的是KMP算法,先求特征向量,然后再进行匹配,确实可以大大提高效率。code如下:原创 2014-06-10 21:50:08 · 1265 阅读 · 0 评论 -
leetcode——Divide Two Integers 不用乘除取余操作求除法(AC)
题目只有简单的一句话,看起来可真简单啊,呵呵,假象。这个题目的难点在于对时间效率的限制和边界值的测试。第一印象肯定是循环一个个把因子从被除数中减去不久行了么,可是对于比如INT_MAX/1或者INT_MIN/1之类的执行时间长的可怕,会超出时间限制。改善时间效率的思路是参考网上别人代码,将因子不断乘以2(可以通过移位实现,同时结果也从1开始不断移位加倍),然后和被除数比较,等到大于被除数一半了,就从被除数中减去,将因子个数叠加入结果中。然后在剩下的被除数中采用同样的方法减去小于其一半的因子和,循环往复。我在原创 2014-06-09 20:19:43 · 4257 阅读 · 0 评论 -
leetcode——Letter Combinations of a Phone Number 手机按键字母组合(AC)
乍看貌似不难,第一印象采用循环,可是循环用起来很麻烦,因为输入的按键组合中按键个数不确定。比较直观的思路是采用递归来做,思路是循环输出每一个按键上的所有字母,每输出一个字母,在将下个按键上的字符依次与其配对,在进行下一个按键的字符循环配对。。。便是递归的思路,在实际执行的时候,每次将按键组合第一个按键去除,然后进行下一次递归调用,这样每次进行循环配对的都是按键组合中第一个键对应的字符串。代码如下:原创 2014-06-09 15:19:15 · 1885 阅读 · 0 评论 -
leetcode——Longest Common Prefix 最长公共前缀(AC)
其实做起来会感觉很简单,需要注意的是要考虑效率的问题,毕竟可能是很长的字符串数组,所以可以考虑选取所有字符串中最短的那个来首先进行比较,因为最长公共子串肯定不会大于其长度,这样避免了字符串之间长度差异很大造成的效率损失,然后每次比较之后最长公共子串的长度也永远不会大于最短的那个字符串,只会不变或相等,只要遍历字符串数组,挨个对比、更改最短公共字符串记录即可,code如下:原创 2014-06-08 16:19:31 · 1488 阅读 · 0 评论 -
leetcode——Swap Nodes in Pairs 旋转链表中相邻成对数字(AC)
这个题目我使用了下递归,把自己绕死了,而且被各种指针指空导致的问题烦死了,各种补洞出来的AC代码,如下:原创 2014-06-08 11:08:17 · 1049 阅读 · 0 评论 -
leetcode——Palindrome Number 判断整数数字是否为回文(AC)
这道题加了不能使用额外空间的限制,如果没有这个限制的话,我们大可以开辟一个字符串数组把整数的各位数字存储起来,然后使用指针进行判断。在这道题目的要求之下,我们只能每次把首尾的两个数字提取出来进行比较,然后再把这两个数字从原数字钟剔除,继续比较。。。直到所有数字比完,就可得出是回文的结论。个位数提取只需对10取余即可,最高位提取需要将原数字除以10^n次方即可。还有需要注意的是题目要求负数不存在回文。code如下:原创 2014-06-08 09:38:03 · 1472 阅读 · 0 评论 -
leetcode——Reverse Integer 反转整数数字(AC)
这个题比较简单,考虑特殊情况如12000,注意检查反转后数字是否会越界溢出。原创 2014-06-06 23:09:27 · 1292 阅读 · 0 评论 -
leetcode——String to Integer (atoi) 字符串转换为整型数(AC)
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 are the possible input ca原创 2014-06-06 22:04:56 · 1303 阅读 · 0 评论 -
leetcode——Longest Substring Without Repeating Characters 求链表中无重复字符的最大字串长度(AC)
Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. Fo原创 2014-06-06 21:03:54 · 1303 阅读 · 0 评论 -
leetcode——Add Two Numbers 两个链表表示的正整数对其求和(AC)
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a link原创 2014-06-06 17:48:08 · 1391 阅读 · 0 评论 -
leetcode——Reverse Words in a String 旋转字符串中单词顺序(AC)
题目如下:Given an input string, reverse the string word by word.For example,Given s = "the sky is blue",return "blue is sky the".click to show clarification.Clarification:What co原创 2014-06-05 23:20:27 · 1898 阅读 · 0 评论 -
leetcode——Two Sum 两数之和(AC)
Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, whe原创 2014-06-05 16:32:39 · 1354 阅读 · 2 评论