lintcode题目记录4
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]
lintcode题目记录4的更多相关文章
- lintcode 题目记录3
Expression Expand Word Break II Partition Equal Subset Sum Expression Expand 字符串展开问题,按照[]前的数字展开字符 ...
- lintcode 题目记录2
判断字符串是否是互为置换,类似 替换字符串之类的遍历就行了.. class Solution: # @param {string} A a string # @param {string} B a s ...
- 牛客OI周赛9-提高组题目记录
牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...
- lincode 题目记录6
the Duplicate Number 132 PatternFind 找重复的数字··直接暴力枚举是不行的···又超时提示·· 暴力枚举的写法· res=0 def findDuplicate( ...
- lincode 题目记录5
Course Schedule 安排课表 Frog Jump 最长回文字符串长度 Course Schedule 选课方案问题,题目说的很清楚了就是bfs或者dfs,然后加个字典优化,弄了好久没 ...
- 2019-中小型公司PHP面试题目记录(附带答案)
博主是三线省会城市的苦逼技术开发,主攻PHP方向,平时前后端语言也都有涉及,因为都是自学,上手就是框架,工作五年来基础补的不稳,换工作的时候苦不堪言,感觉一上来就问Ngnix的运行机制,php的被编译 ...
- 剑指offer题目记录
1.如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString { public: CMyString(char* pData = NULL); CMyStri ...
- 二分查找总结及部分Lintcode题目分析 4
二分法不只能像之前的记录,可以找到index~第二种类型是找到二分答案.有以下几个例子,都是之前二分法的扩展,不再赘述,只记录下忽略的点,以后回顾多注意~ 1. wood cut class Solu ...
- 二分查找总结及部分Lintcode题目分析 3
Search in rotated sorted array,题目中也给出了相应的例子,就是在sorted array某个节点发生了翻转(ie.0 1 2 4 5 6 7 might become 4 ...
随机推荐
- mac配置虚拟机的net模式
a.点击PD的偏好设置进入 1)选择net模式(shared)(相当于VM的V8虚拟机) 2)勾选将mac连入当前的网络 3)勾选在网络系统偏好设置中显示网络连接 b.点击mac的网络系统偏好设置,可 ...
- 博弈论教程(A Course in Game Theory)摘录
P4 在我们所研究的模型中,决策主体往往要在不确定条件下进行决策.参与人可能: 不能确定环境的客观因素: 对博弈中发生的事件不很清楚: 不能确定别的不确定参与人的行动: 不能确定别的参与人的推理. 为 ...
- 976 AlvinZH想回家(背包DP大作战T)
976 AlvinZH想回家 思路 如果在第i小时有一些飞机延误,那么一架飞机的c值越大,这一小时产生的损失也越大.而使这一小时产生的损失尽可能的小并不会导致接下来时间产生的损失增大.因此应当每一小时 ...
- spring IOC的实现原理
姓名:陈中娇 班级:软件151 1. IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应 ...
- mysql5.1解压版安装
1.如果已经安装别的版本先卸载干净,cmd管理员权限登录,mysql\bin目录:mysqld -remove 2.环境变量 MYSQL:path 3.my.ini [mysqld]port=3306 ...
- 进阶篇:2.2)DFMA运用实例
本章目的:摘录一些DFMA运用的实例,可做参考. 1.DFMA的运用实例 DFMA提供了一个从装配和制造的角度去分析已给定设计的系统方法.采用这种方法可以使得产品结构更简单.性能更可靠.装配和制造的成 ...
- 解决kvm虚拟机启动之后,网卡eth0变为eth1问题
2018-12-19 故障前提 kvm虚拟机迁移到其他服务器上之后,重新启动网卡会出现问题 例如原网卡名称为eth0,迁移重启之后会自动变为eth1 为什么eth0会变成eth1? 很多Linux d ...
- 最受欢迎的5款Node.js端到端测试框架
测试,尤其是自动化测试在现代 WEB 工程中有着非常重要的角色,与交付过程集成良好的自动化测试流程可以在新版发布时帮你快速回归产品功能,也可以充当产品文档.测试因粒度不同又可以分为单元测试.接口测试. ...
- ASP.NET中类的多语言编译
App_Code 文件夹中同时使用多种语言编程的方法 在web.config文件里,加入如下的配置 <configuration> <system.web> <comp ...
- 小白详细解析C#反射特性实例
套用MSDN上对于反射的定义:反射提供了封装程序集.模块和类型的对象(Type 类型).可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性.如果代 ...