- 博客(249)
- 收藏
- 关注
原创 n个数求第k大
借用快排的思想,每次选取一个参考值,把区间分成两块,左边都小于参考值,右面都大于参考值(中间如果有剩下就是和参考值相同),然后根据k再去选择排左面还是排右面def select(a,l,r,k): i = l j = r print 'bg',i,j,k key = a[(l+r)>>1] while i<=j: while a[i]<key: i += 1 while a[
2016-02-29 00:39:16
604
原创 leetcode 15. 3Sum
给一个数组,找出所有的不相同的三元组相加为0.先排序,然后循环最小值,剩下两个值用two point从两侧向中间跑一遍,求出所有结果即可,复杂度o(n^2)。注意处理下重复class Solution(object): def threeSum(self, nums): """ :type nums: List[int] :rtype: Li
2016-02-27 23:48:51
445
原创 leetcode 14. Longest Common Prefix
给n个字符串,求最长公公前缀。直接逐位扫判断就行。class Solution(object): def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ lenS = len(strs) i
2016-02-27 01:12:39
414
原创 leetcode 13. Roman to Integer
给一个罗马数字,转化成整数。这个就简单点了,直接从前往后扫,只需要注意一个规则,如果小单位在大单位前,小单位位负,小单位在大单位后,小单位为正。class Solution(object): def cov(self,s): if s == 'I': return 1 elif s == 'V': return 5 elif s == '
2016-02-27 01:11:39
383
原创 leetcode 12. Integer to Roman
给一个整数(1-3999),转化成落马数字。直接模拟吧,注意特盘4和9的情况。罗马数字的规则参考http://zhidao.baidu.com/link?url=aFXj4HeKQCT1gv38YE7jjHz2f0KUiGS2E2yoCMRV4c3KDa9HnWo1FOIJR6l1MthPHSsEKMLp08VfkhiZ7wh3KK大致以下几条: (1)基本数字Ⅰ、X 、C 中的任何
2016-02-27 01:08:50
390
原创 leetcode 11.Container With Most Water
给一个数组a[],整数对(i,ai)表示一个立在x轴上的隔板,求两个隔板使得隔板见可以存储最大容积的水。因为一对隔板存储的水量取决于低的板子,所以维护两个指针lp,rp如果a[lp]>a[rp],lp向后推的话得到的结果不可能比原来大,而rp向左推则可能会得到更大的答案,所以维护两个指针从两头向中间推一遍就好。class Solution(object): def maxArea(se
2016-02-27 01:06:46
355
原创 leetcode 9. Palindrome Number
判断一个数是否为回文数,直接循环判断class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """ s = str(x) lenS = len(s) f
2016-02-27 00:59:00
352
原创 leetcode 8. String to Integer (atoi)
手写字符串转整数函数。细节好多,首先要处理掉前导空格,然后处理正负号,接下来往后处理时,处理到非数字字符时,立即结束返回前面得到的整数,最后如果溢出的话,返回离它最近的一个整数class Solution(object): def myAtoi(self, str): """ :type str: str :rtype: int
2016-02-27 00:58:02
338
原创 leetcode 7. Reverse Integer
给一个数,求各位翻转后的结果。还是模拟,处理下正负号就行import mathclass Solution(object): def reverse(self, x): """ :type x: int :rtype: int """ flag = 0 if (x < 0) :
2016-02-27 00:54:48
332
原创 leetcode 6. ZigZag Conversion
给一串N型排列,把它转换成行排列。直接模拟,可以注意到,第一行和最后一行,间距都是2*step-2,第二行开始两个间距为2*step-4,2然后第一个间距依次+2,第二个间距依次-2class Solution(object): def convert(self, s, numRows): """ :type s: str :type n
2016-02-27 00:53:29
354
原创 leetcode 5. Longest Palindromic Substring
给一个字符串求最长公共字串。直接上o(n)的Manacher,方法网上很多讲的都挺详细,需要的自行百度吧class Solution(object): def pre(self,s): lenS = len(s) i = 0 res = [] while i < lenS: res.append('
2016-02-26 00:28:43
375
原创 leetcode 3
给一个字符串,求出最长的没有重复字符出现的字串。two point直接推就好,右侧指针无法后移时更新一下答案class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ i
2016-02-25 01:35:18
392
原创 leetcode 2
给两个数值域小于10的单链表,按头对齐后对应位置相加,超过10要进位,够造成一个新的单链表。。。直接相加,然后构造链表,处理下进位就行了# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# sel
2016-02-25 01:33:08
350
原创 leetcode 1
最近在学python,正好拿leetcode的题来练练基本语法也顺便补补代码量。。。好久没写代码了。。。题意大概是给一个数组和一个数,求两个下标使得这两个下标的数之和等于目标数。直接循环一个数,然后检查另一个数在不在数组里并且不能是第一个数本身,用py自带的函数解决就行了class Solution(object): def twoSum(self, nums, target)
2016-02-25 01:29:19
328
原创 hdu4735 Little Wish~ lyrical step~ DLX重复覆盖
给一棵树,每个节点上有一个男孩或女孩,要求每个女孩节点都有一个距离不超过d的nan
2014-09-05 14:05:53
631
原创 spoj7258 Lexicographical Substring Search(SUBLEX) 后缀自动机
给一个字符串S,若干个查询,每个查询k输出字典序第k小的S的子串
2014-06-22 18:13:47
734
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人