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]

最新文章

  1. 怎样在Redis通过StackExchange.Redis 存储集合类型List
  2. PyCharm 代码完成/代码提示
  3. MHA+Atlas+mysql一主一从开启gtid安装配置与实验
  4. Oracle指定运行变量
  5. Android 开发环境搭建以及编译
  6. iOS App 转移
  7. 用fiddler工具做接口测试
  8. linux/win7下安装websphere application server
  9. 剑指offer-面试题10:二进制中1的个数
  10. SQL Server 查看正在运行的事务信息的 2 种方法。
  11. 转: angular编码风格指南
  12. 第二章 IoC Setter注入
  13. SQL AUTO INCREMENT 字段
  14. 虚拟机中安装完Lunix系统后,开机黑屏,只显示一个-,解决方法
  15. 项目出现 The superclass &quot;javax.servlet.http.HttpServlet&quot; was not found on the Java Build Path 解决方法
  16. 解决rpm conflicts with file from package的两个方法
  17. 洛谷P4486 Kakuro
  18. Oracle 11g DRCP配置与使用
  19. HDU 6156 Palindrome Function
  20. QT4.8.5 QComboBox 增加选择菜单记录

热门文章

  1. redis 3.0 集群__故障测评
  2. POJ2259 Team Queue (JAVA)
  3. POJ-3126-Prime Path(BFS)
  4. Angular material mat-icon 资源参考_Warning
  5. Go语言包和文件
  6. HDU 5442 后缀自动机(从环字符串选定一个位置 , 时针或顺时针走一遍,希望得到字典序最大)
  7. ACM-素数专题(持续更新)
  8. 【实战分享】安卓app测试的一些记录
  9. PIE SDK Command&amp;&amp;Tool工具命令一览表
  10. Comparaci&#243;n para 2019 Nueva Lonsdor K518S y K518ISE