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 ...
随机推荐
- jmeter压力测试值之配置JDBC Connection Configuration(一)
一.下载mysql jar包 下载mysql jar包 http://dev.mysql.com/downloads/connector/j/ 网盘下载地址:mysql-connector-java- ...
- uC/OS-II 函数之内存管理相关函数
上文主要介绍了邮箱管理相关的函数,本文介绍内存管理相关的函数:OSMemCreate()内存块创建函数,OSMemGet()函数,OSMemPut()函数,OSMemQuery()函数.以前用过的uC ...
- windows本地搭建nginx+php+mysql+redis环境详细步骤
1.mysql的下载和安装 这个可参考我另外一篇文章:http://www.cnblogs.com/myIvan/p/9265645.html 2.php的下载和配置修改 下载地址:https://w ...
- P1979华容道(神仙题)
题目描述 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时间. 小 B 玩的华容道 ...
- linux的sed(增删改查)使用方法
sed的增删改查的基本操作 参考:https://www.cnblogs.com/0zcl/p/6855740.html 01:增(a) 2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 ...
- 1. JavaScript学习笔记——JS基础
1. JavaScript基础 1.1 语法 严格区分大小写 标识符,第一个字符可以是 $,建议使用小驼峰法, 保留字.关键字.true.false.null不能作为标识符 JavaScript是用U ...
- java--浅谈线程
一.线程基础: 1.CPU核心数和线程数的关系 线程数:是同一时刻设备能并行执行的程序个数,线程数=cpu个数 * 核数,及程数=cpu个数(2) * 核数(2)=4: 使用了超线程技术后---> ...
- Java中String与Date格式之间的转换
转自:https://blog.csdn.net/angus_17/article/details/7656631 经常遇到string和date之间的转换,把相关的内容总结在这里吧: 1.strin ...
- iview modal对话框的一个小知识点
我在做一个项目的一个页面的时候有两个弹窗,发现点击一个弹窗的右上角关闭按钮后,打开另一个弹窗的时候,另一个弹窗里面带有上一个弹窗里的样式内容,说明上一个弹窗并没有被销毁. 后来发现modal源码里的c ...
- Angular 2 升级到 Angular 5
Angular 2 升级到 Angular 5 ts文件最上面的import语句里不要添加 .ts 后缀 , 不然 npm start 编译会失败 . 虽然浏览器能打开项目的URL , 但是内容会丢失 ...