随笔分类 -  OJ练习

OJ练习49——T16 3Sum Closest
摘要:找一个序列中三个数,其和与给定的target最接近。【思路】还是练习48中总结的,将题目变成2sum。【my code】int threeSumClosest(vector& num, int target) { int result=0; int sub=INT_MAX... 阅读全文

posted @ 2015-05-13 09:34 EmmaLi 阅读(243) 评论(0) 推荐(0)

OJ练习48——T15 3Sum
摘要:找一列整数中和为0的三个数,要求返回结果按序排列,且返回的序列之间互不相同。例如:array S = {-1 0 1 2 -1 -4},A solution set is:(-1, 0, 1) (-1, -1, 2)【思路】(看来的,自己真是没有一点算法头脑)对于每一个当前数,用2sum算法求剩下的... 阅读全文

posted @ 2015-05-12 11:34 EmmaLi 阅读(264) 评论(0) 推荐(0)

OJ练习47——T12 Integer to Roman
摘要:把整数转换成罗马数字。数字不超过3999.罗马数字规律:1-I,5-V,10-X,50-L,100-C,500-D,1000M【对比回顾】罗马数字到整数:基本规律,当左边数字大于右边,是和的关系,如VI=5+1=6,XII=10+2=12;当左边数字小于右边,是差的关系,如IV=5-1=4,IX=1... 阅读全文

posted @ 2015-05-11 14:50 EmmaLi 阅读(155) 评论(0) 推荐(0)

OJ练习46——T11 Container With Most Water
摘要:一串非负整数,和其序号构成数对(i,v[i]),每条垂直线段的两个端点由(i,0),(i,v[i])两个点构成,两条线段与x轴形成一个容器,求最大容器的储水量。(容器不能倾斜)【思路】1.O(n^2)法:即一个对角线为0的上三角矩阵,求每条线段与其后面的所有线段组成容器的容量(其实就是面积)。该法l... 阅读全文

posted @ 2015-05-11 10:01 EmmaLi 阅读(120) 评论(0) 推荐(0)

OJ练习45——T10 Regular Expression Matching
摘要:正则表达式匹配的判定函数。Some examples:isMatch(“aa”,”a”) → falseisMatch(“aa”,”aa”) → trueisMatch(“aaa”,”aa”) → falseisMatch(“aa”, “a*”) → trueisMatch(“aa”, “.*”) ... 阅读全文

posted @ 2015-05-08 16:47 EmmaLi 阅读(159) 评论(0) 推荐(0)

OJ练习44——T5 Longest Palindormic Substring
摘要:求字符串的最长回文子串。【思路】1.从两边开始向中间发展2.从中间开始向两边发展3.从中间开始的变体,较为复杂,详见http://articles.leetcode.com/2011/11/longest-palindromic-substring-part-ii.html【other code1-... 阅读全文

posted @ 2015-05-07 10:30 EmmaLi 阅读(214) 评论(0) 推荐(0)

OJ练习43——T4 Median of Two Sorted Arrays
摘要:两个有序数列A B,长度分别为m,n,求它们的中位数,要求时间复杂度是O(log(m+n)).解读:即求两数列按序合并后的中位数。【思路】1.mine:两个指针i,j分别指向两列的头,当a[i] n) return findKth(b, n, a, m, k); if (m ==... 阅读全文

posted @ 2015-05-06 10:36 EmmaLi 阅读(187) 评论(0) 推荐(0)

Oj练习42——T3 Longest Substring Without Repeating Characters
摘要:求一个字符串中不含重复字母的最大子串的长度。【思路】1.用临时tmp记录长度,遇到重复字母把tmp当前值赋给要返回的length,tmp归零比较tmp和length,当tmp>length时,更新length。2.每个字母向前遍历是否有重复字母,用哈希表。3.反复提交代码不能通过后看了题目tag,知... 阅读全文

posted @ 2015-05-05 16:51 EmmaLi 阅读(156) 评论(0) 推荐(0)

OJ练习41——T2 Add Two Numbers
摘要:每个链表表示一个数,从前向后,每个节点是该数的从低到高每一个十进制位的值,将两个链表相加,返回一个新链表。【思路】每次分别取两链的一个节点相加,有进位则累计到下一位。思路简单,实现起来有很多细节要处理。【my code】ListNode* addTwoNumbers(ListNode* l1, Li... 阅读全文

posted @ 2015-05-05 10:39 EmmaLi 阅读(123) 评论(0) 推荐(0)

OJ练习40——T1 Two Sum
摘要:练习1-39是简单题目,练习40开始做中级题目。找到一个序列中的两个序号,要求该序号对应的两个数和为指定值。【思路】1.暴力解决:大循环遍历作为左数,小循环从下一个开始遍历作为右数,时间复杂度是O(n^2)。——竟然不让我通过%>_实现,序号(左值)是原序列中的值,保存的值(右值)是原序列的序号,每... 阅读全文

posted @ 2015-05-04 16:43 EmmaLi 阅读(138) 评论(0) 推荐(0)

OJ练习39——T202 Happy Number
摘要:判断一个数是否是开心数。定义happy number:循环求各位数的平方和,直到结果是1,则是开心数,否则不是。eg:19是开心数——12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1【思路】看似简单的一道题,循环求各位的平方和很好写出,但是循... 阅读全文

posted @ 2015-05-04 10:39 EmmaLi 阅读(153) 评论(0) 推荐(0)

OJ练习38——T198 House Robber
摘要:抢劫一排沿街的房子,每一家有不同的财富值,一夜之内抢了连续两家就会拉响报警。给出每家的财富值,求最多能抢到多少?【思路】动态规划求最优解。解题关键:递推式——maxV[i]=max{maxV[i-2]+nums[i], maxV[i-1]};【other code】int rob(vector& n... 阅读全文

posted @ 2015-05-04 09:02 EmmaLi 阅读(95) 评论(0) 推荐(0)

OJ练习37——T190 Reverse Bits
摘要:把一个32位无符号整数按位翻转,For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary... 阅读全文

posted @ 2015-04-30 09:45 EmmaLi 阅读(134) 评论(0) 推荐(0)

OJ练习36——T189 Rotate Array
摘要:把数组做给定次数的rotate操作。rotate一次:即把末尾的元素放到开头,将其他的元素循环右移一个单位。【思路】1.再开个空间,将末尾的k个元素按从前到后的顺序放在新数组的开头,再将原数组剩下的元素按从前到后的顺序赋给新数组剩下的空间。节省了时间复杂度,增加了空间复杂度。2.顺向思维,每次处理一... 阅读全文

posted @ 2015-04-29 15:23 EmmaLi 阅读(107) 评论(0) 推荐(0)

OJ练习35——T169 Majority Element
摘要:得到一串整数的主元素。主元素即出现次数多于n/2(下界)的数。【思路】1.用map类型,记录每个数据出现的次数。2.用博主陆草纯的算法,当连续两数不同时,就把两者抵消掉,剩下的就是主元素。【my code】int majorityElement(vector& nums) { mapm... 阅读全文

posted @ 2015-04-29 09:42 EmmaLi 阅读(127) 评论(0) 推荐(0)

OJ练习34——T165 Compare Version Numbers
摘要:比较版本高低。版本的格式:1.1.1可能有多个分隔符。相等则返回0, 大于返回1, 小于返回-1.【思路】分别比较分隔符的每段,转换成十进制后的大小;相等则继续比较下一段,不等则返回相应的结果。【my code】int compareVersion(string version1, string v... 阅读全文

posted @ 2015-04-28 10:30 EmmaLi 阅读(144) 评论(0) 推荐(0)

OJ练习33——T172 Factorial Trailing Zeroes
摘要:求n!末尾有多少个0.【思路】1.发现规律2*5会产生1个0,4*25会产生2个0,8*125会产生3个0,……又偶数都包含因子2,所以只要有5,25,125(5^i)出现,就会有配套的2^i出现,所以最终算法是,看n中包含多少个5的次幂。2.笨办法,先算出n!,再循环除以10,计算次数。【othe... 阅读全文

posted @ 2015-04-28 10:25 EmmaLi 阅读(129) 评论(0) 推荐(0)

OJ练习32——T160 Intersection of Two Linked Lists
摘要:找两个链表的交叉节点,像这样:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3没有交叉返回null;第一个相同的节点就是交叉开始的地方(经验证,该题系统是这样,见后)【思路】1.从后向前遍历,遇到第一个不相同的就停止,但是链表不支持逆序,drop。... 阅读全文

posted @ 2015-04-27 16:30 EmmaLi 阅读(135) 评论(0) 推荐(0)

OJ练习31——T155 Min Stack
摘要:设计栈,要求支持pop,push,top,以及返回栈中最小值的功能。【思路】首见题型。要用两个stack,其中一个保留最小值。每次选择比minstack.top小的值push进去,这样就能保持top始终是最小值。【other code】class MinStack {private: stac... 阅读全文

posted @ 2015-04-27 10:07 EmmaLi 阅读(147) 评论(0) 推荐(0)

OJ练习30——T125 Valid Palindrome
摘要:判断字符串是否是回文。字母、数字都算在内;空串也是回文。【思路】经典回文,两个指针,一个从前向后遍历,一个从后向前,遇到不是要求字符的就跳过。前后指针位置交叉(i>j),则遍历结束。特殊的地方在于,包含字母和数字,如果一一排除,代码很繁琐。【my code】bool isPalindrome(str... 阅读全文

posted @ 2015-04-27 08:57 EmmaLi 阅读(138) 评论(0) 推荐(0)

导航