lintcode 简单篇(二)
1、(41) 最大子数组
描述:给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。
注意事项:子数组最少包含一个数
样例:给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6
挑战 :要求时间复杂度为O(n)
标签 :贪心 领英 子数组 数组 LintCode 版权所有 枚举法
def maxSubArray(self, nums):max_number = nums[0]sum = 0for i in nums:sum += imax_number = max(max_number, sum)sum = max(sum, 0)return max_number
2、(167)链表求和
描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。
样例:给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null
标签:链表 Cracking The Coding Interview 高精度
def addLists(self, l1, l2):add=0cur1,cur2=l1,l2l3 = ListNode(-1)pre = l3while cur1 or cur2:if cur1 and cur2:temp = (cur1.val + cur2.val +add)cur1=cur1.nextcur2 =cur2.nextelif cur1:temp = (cur1.val+add)cur1 = cur1.nextelse:temp = (cur2.val+add)cur2 = cur2.nextadd = temp//10pre.next = ListNode(temp%10)pre = pre.nextif add==1:pre.next = ListNode(1)return l3.next
3、(413)反转整数
(http://blog.csdn.net/guoziqing506/article/details/51563779)
描述:将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。
样例:
给定 x = 123,返回 321
给定 x = -123,返回 -321
def reverseInteger(self, n):max_int = 2147483647 temp = abs(n) result = 0 while temp > 0: result *= 10 result += temp % 10 if result > max_int: return 0 temp = temp // 10 #整数除法,‘/’浮点型return result if n >= 0 else -result
4、(46)主元素
描述:给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。
样例:给出数组[1,1,1,1,2,2,2],返回 1
def majorityNumber(self, nums):nums.sort()index = 0value = nums[0]count = 0while index<len(nums):if nums[index]==value:count+=1index+=1if count > len(nums)/2:return valueelse:value=nums[index]index+=1count= 1#判断出不相等,已经有一个计数了
别人的,果然不是我这种菜鸟能比的呀。但是我觉得我的简洁明了,哈哈哈
http://blog.csdn.net/guoziqing506/article/details/51434299
def majorityNumber(self, nums): ele = nums[0] count = 0 for i in nums: if ele == i: count += 1 else: count -= 1 if count <= 0: ele = i return ele
5、407. 加一
描述:给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。
样例: 给定 [1,2,3] 表示 123, 返回 [1,2,4].
给定 [9,9,9] 表示 999, 返回 [1,0,0,0].
index = -1count =0if digits[-1]!=9:digits[-1]+=1return digitselse:while digits[index]==9 and abs(index)<=len(digits)+1:count += 1index-=1if count==len(digits):digits.append(0)digits[0]=1for i in range(1,len(digits)-1):digits[i]=0else:digits[index] += 1for j in range(index+1,0,1):digits[j]=0return digits
感觉特别的繁琐
result = []n = len(digits) - 1add1 = 1while n >= 0:temp = digits[n] + add1result.insert(0, temp % 10)add1 = temp // 10n -= 1if add1 == 1:result.insert(0, 1)return result
这是别人的,不看不知道,一秒成渣啊
6、35. 翻转链表
描述:翻转一个链表
样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
挑战 :在原地一次翻转完成
标签 :链表 优步 脸书
分析:题目要求原地翻转,如果不做要求,我们可以建一个空链,依次摘链,添加
原地翻转,依次摘链,链接
"""
Definition of ListNodeclass ListNode(object):def __init__(self, val, next=None):self.val = valself.next = next
"""class Solution:"""@param: head: n@return: The new head of reversed linked list."""def reverse(self, head):if head == None:return headdummy=ListNode(0)dummy.next = headpre =headcur =head.nextwhile cur:temp = curpre.next=cur.nextcur = cur.nexttemp.next = dummy.nextdummy.next = tempreturn dummy.next
123,从2开始摘链,依次向前添加
7、165. 合并两个排序链表
描述:将两个排序链表合并为一个新的排序链表
样例:给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。
标签 : 领英 链表
分析:两个指针遍历,(1)如果l1>l2,添加,改变pre,next节点,两个指针都要移动。(2)else,移动l2的指针,接着比较。如果l1遍历完了,l2还有数据,直接接上就行
def mergeTwoLists(self, l1, l2):dummy=ListNode(0)cur1,cur2=l1,l2pre = dummydummy.next=l1while cur1 and cur2:if cur1.val>=cur2.val:temp = cur2cur2=cur2.nextpre.next = temppre = temptemp.next = cur1else:pre = pre.nextcur1 = cur1.nextif cur2:#如果l2还有数据,直接链表连接pre.next = cur2return dummy.next
8、(491) 回文数
描述:判断一个正整数是不是回文数。
回文数的定义是,将这个数反转之后,得到的数仍然是同一个数。
注意事项:给的数一定保证是32位正整数,但是反转之后的数就未必了。
样例:
11, 121, 1, 12321 这些是回文数。
23, 32, 1232 这些不是回文数。
标签 :字符串处理 整数
分析:现将数字按列表存放
判断中位之前和之后的数字是否对应相等
def isPalindrome(self, num):a = []while num>0:temp = num%10a.insert(0,temp)num = num//10n = len(a)-1index = 0while index<=n//2:if a[index]==a[n-index]:index+=1else:breakif index-1==n//2:return True#注意注意 不知道怎么改简洁else:return False
lintcode 简单篇(二)相关推荐
- iOS开发UI篇—Quartz2D简单使用(二)
iOS开发UI篇-Quartz2D简单使用(二) 一.画文字 代码: // // YYtextview.m // 04-写文字 // // Created by 孔医己 on 14-6-10. // ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
<高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- 一台电脑怎么接两个显示器_电脑数码类目显示器 篇二:11.11抄作业,个人消费级显示器怎么选--20款好价显示器推荐_显示器...
2020-11-09 21:56:2572点赞390收藏91评论 想攒一台电竞主机.家用主机.酷炫主机无从下手?想省钱又怕性能不达标?值得买帮你打造定制化DIY装机工具,自助全网比价装机,提供最适合的 ...
- 【word2vec】篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型
文章目录 CBOW 模型 基本结构 目标函数 梯度计算 Skip-gram 模型 基本结构 梯度计算 优缺点分析 系列文章: [word2vec]篇一:理解词向量.CBOW与Skip-Gram等知识 ...
- 【转】java提高篇(二)-----理解java的三大特性之继承
[转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...
- 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二)
涤生_Woo 2017年11月11日阅读 15544 关注 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二) 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍. 一图看完本文 一. 计算机 ...
- WebSocket简单使用(二) - 客户端
WebSocket简单使用(二) - 客户端 原文 http://www.oseye.net/user/kevin/blog/79 关于WebSocket我打算分如下几篇博文来探探路: WebSock ...
- 国内外物联网平台初探(篇二:阿里云物联网套件)
国内外物联网平台初探(篇二:阿里云物联网套件) ------ [导读]------ 物联网智库将于本周开始,在每周五下午的第二篇文章推送由马智先生研究撰写的系列文章--<国内外物联网平台初探&g ...
- 【专栏】国内外物联网平台初探(篇二:阿里云物联网套件)
[专栏]国内外物联网平台初探(篇二:阿里云物联网套件) 作者:马智 物联网智库 整理发布 转载请注明来源和出处 ------ [导读]------ 物联网智库将于本周开始,在每周五下午的第二篇文章推送 ...
最新文章
- JAVA之门面模式概述
- 【LeetCode】two num 利用comparable接口 对对象进行排序
- iOS - 让view触发点击事件
- STM32——库函数开发小结
- EF – 8.多对多关联
- 数据挖掘引入:基础知识
- django 文件上传 研究
- python 检查代码规范_Python代码规范检测
- 【Loss】深度学习的多个loss如何平衡?
- 修复Mac上的“ Safari无法找到服务器”错误的解决方法
- SQLPro Studio mac如何链接MYSQL?
- PHP接口报错:Malformed UTF-8 characters, possibly incorrectly encoded
- 长文解读:迟到的Libra与即将到来的Commodity 2.0
- 使用Spider提取数据(爬取起点中文网)
- 二分图最大匹配(最大流)
- smart原则_目标管理:OKR与SMART原则的异同
- 一级计算机脚注怎么加,word怎么插入脚注 word添加脚注图文教程
- Orcle中Database Control - orcl打开错误或者打不开的解决办法
- MP4文件格式详解——元数据moov(一)mvhd box
- AutoCAD2012从入门到精通中文视频教程 第24课 路径阵列(个人收藏)