lintcode题目记录4
2024-08-31 04:44:30
Russian Doll Envelopes Largest Divisible Subset Two Sum - Input array is sorted
Russian Doll Envelopes
俄罗斯玩偶嵌套问题,这个是典型的dp问题···强行遍历会提示超时,然而整了好久也没整明白怎么整,网上搜了下 把问题归结为求最长递增子序列问题··然而本人愚钝还是想不明白为啥可以这样做··虽然出来的结果是对的·····
先把数据排序, 用python内建的排序函数进行排序,但是因为当x相等时,y要按从大到小拍,所以要传一个cmp进去,python3.x不支持cmp了 所以 用了一个转换,转换成key,如果直接key设置为x默认y会按从小到大拍
这样算的结果是对的·但是那个迭代的dp不是一个有效的序列···但是长度是对的···
class Solution:
# @param {int[][]} envelopes a number of envelopes with widths and heights
# @return {int} the maximum number of envelopes
def maxEnvelopes(self, envelopes):
# Write your code here
import functools
nums = sorted(envelopes,key= functools.cmp_to_key(lambda x,y:x[0]-y[0] if x[0] != y[0] else y[1] - x[1]))
size = len(nums)
dp = []
for x in range(size):
low, high = 0, len(dp) - 1
while low <= high:
mid = (low + high)//2
if dp[mid][1] < nums[x][1]:
low = mid + 1
else:
high = mid - 1
if low < len(dp):
dp[low] = nums[x]
else:
dp.append(nums[x])
return len(dp)
Largest Divisible Subset
标签写的是动态规划 ·感觉没啥规划还是直接强行遍历的··
class Solution:
# @param {int[]} nums a set of distinct positive integers
# @return {int[]} the largest subset
def largestDivisibleSubset(self, nums):
# Write your code here
n=len(nums)
nums= sorted(nums,reverse=True)
res=[]
res.append([nums[0]])
for i in range(1,n):
cur=nums[i]
for r in res:
if r[-1] % cur== 0:
r.append(cur)
if i==1:res.append([nums[0]])
res.append([nums[i]])
res=sorted(res,key=lambda x:len(x),reverse=True)
return res[0]
Two Sum - Input array is sorted
有序数组,找出一个组合之和是给定目标值,题目写的有序基本就是说用二分查找吧···,而且还要求index2>index1相当简单了··,遍历一遍就可以了··
class Solution:
"""
@param nums {int[]} n array of Integer
@param target {int} = nums[index1] + nums[index2]
@return {int[]} [index1 + 1, index2 + 1] (index1 < index2)
"""
def twoSum(self, nums, target):
# Write your code here
index1=0
index2=-1
for i in range(len(nums)-1):
index1 = i
index2 = -1
start = i+1
end = len(nums)-1
st = target - nums[index1]
while start <= end:
mid = (start + end) // 2
if nums[mid] < st:
start = mid + 1
elif nums[mid] > st:
end = mid - 1
else:
index2 = mid
return [index1 + 1, index2 + 1]
最新文章
- 怎样在Redis通过StackExchange.Redis 存储集合类型List
- PyCharm 代码完成/代码提示
- MHA+Atlas+mysql一主一从开启gtid安装配置与实验
- Oracle指定运行变量
- Android 开发环境搭建以及编译
- iOS App 转移
- 用fiddler工具做接口测试
- linux/win7下安装websphere application server
- 剑指offer-面试题10:二进制中1的个数
- SQL Server 查看正在运行的事务信息的 2 种方法。
- 转: angular编码风格指南
- 第二章 IoC Setter注入
- SQL AUTO INCREMENT 字段
- 虚拟机中安装完Lunix系统后,开机黑屏,只显示一个-,解决方法
- 项目出现 The superclass ";javax.servlet.http.HttpServlet"; was not found on the Java Build Path 解决方法
- 解决rpm conflicts with file from package的两个方法
- 洛谷P4486 Kakuro
- Oracle 11g DRCP配置与使用
- HDU 6156 Palindrome Function
- QT4.8.5 QComboBox 增加选择菜单记录
热门文章
- redis 3.0 集群__故障测评
- POJ2259 Team Queue (JAVA)
- POJ-3126-Prime Path(BFS)
- Angular material mat-icon 资源参考_Warning
- Go语言包和文件
- HDU 5442 后缀自动机(从环字符串选定一个位置 , 时针或顺时针走一遍,希望得到字典序最大)
- ACM-素数专题(持续更新)
- 【实战分享】安卓app测试的一些记录
- PIE SDK Command&;&;Tool工具命令一览表
- Comparaci&#243;n para 2019 Nueva Lonsdor K518S y K518ISE