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不是一个有效的序列···但是长度是对的···

  1. class Solution:
  2. # @param {int[][]} envelopes a number of envelopes with widths and heights
  3. # @return {int} the maximum number of envelopes
  4. def maxEnvelopes(self, envelopes):
  5. # Write your code here
  6. import functools
  7. 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]))
  8. size = len(nums)
  9. dp = []
  10. for x in range(size):
  11. low, high = 0, len(dp) - 1
  12. while low <= high:
  13. mid = (low + high)//2
  14. if dp[mid][1] < nums[x][1]:
  15. low = mid + 1
  16. else:
  17. high = mid - 1
  18. if low < len(dp):
  19. dp[low] = nums[x]
  20. else:
  21. dp.append(nums[x])
  22. return len(dp)

Largest Divisible Subset

标签写的是动态规划 ·感觉没啥规划还是直接强行遍历的··

  1. class Solution:
  2. # @param {int[]} nums a set of distinct positive integers
  3. # @return {int[]} the largest subset
  4. def largestDivisibleSubset(self, nums):
  5. # Write your code here
  6. n=len(nums)
  7. nums= sorted(nums,reverse=True)
  8. res=[]
  9. res.append([nums[0]])
  10. for i in range(1,n):
  11. cur=nums[i]
  12. for r in res:
  13. if r[-1] % cur== 0:
  14. r.append(cur)
  15. if i==1:res.append([nums[0]])
  16. res.append([nums[i]])
  17. res=sorted(res,key=lambda x:len(x),reverse=True)
  18. return res[0]

Two Sum - Input array is sorted

有序数组,找出一个组合之和是给定目标值,题目写的有序基本就是说用二分查找吧···,而且还要求index2>index1相当简单了··,遍历一遍就可以了··

  1. class Solution:
  2. """
  3. @param nums {int[]} n array of Integer
  4. @param target {int} = nums[index1] + nums[index2]
  5. @return {int[]} [index1 + 1, index2 + 1] (index1 < index2)
  6. """
  7. def twoSum(self, nums, target):
  8. # Write your code here
  9. index1=0
  10. index2=-1
  11. for i in range(len(nums)-1):
  12. index1 = i
  13. index2 = -1
  14. start = i+1
  15. end = len(nums)-1
  16. st = target - nums[index1]
  17. while start <= end:
  18. mid = (start + end) // 2
  19. if nums[mid] < st:
  20. start = mid + 1
  21. elif nums[mid] > st:
  22. end = mid - 1
  23. else:
  24. index2 = mid
  25. return [index1 + 1, index2 + 1]

lintcode题目记录4的更多相关文章

  1. lintcode 题目记录3

    Expression Expand  Word Break II Partition Equal Subset Sum  Expression Expand  字符串展开问题,按照[]前的数字展开字符 ...

  2. lintcode 题目记录2

    判断字符串是否是互为置换,类似 替换字符串之类的遍历就行了.. class Solution: # @param {string} A a string # @param {string} B a s ...

  3. 牛客OI周赛9-提高组题目记录

    牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...

  4. lincode 题目记录6

    the Duplicate Number  132 PatternFind 找重复的数字··直接暴力枚举是不行的···又超时提示·· 暴力枚举的写法· res=0 def findDuplicate( ...

  5. lincode 题目记录5

    Course Schedule 安排课表   Frog Jump  最长回文字符串长度 Course Schedule 选课方案问题,题目说的很清楚了就是bfs或者dfs,然后加个字典优化,弄了好久没 ...

  6. 2019-中小型公司PHP面试题目记录(附带答案)

    博主是三线省会城市的苦逼技术开发,主攻PHP方向,平时前后端语言也都有涉及,因为都是自学,上手就是框架,工作五年来基础补的不稳,换工作的时候苦不堪言,感觉一上来就问Ngnix的运行机制,php的被编译 ...

  7. 剑指offer题目记录

    1.如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString { public: CMyString(char* pData = NULL); CMyStri ...

  8. 二分查找总结及部分Lintcode题目分析 4

    二分法不只能像之前的记录,可以找到index~第二种类型是找到二分答案.有以下几个例子,都是之前二分法的扩展,不再赘述,只记录下忽略的点,以后回顾多注意~ 1. wood cut class Solu ...

  9. 二分查找总结及部分Lintcode题目分析 3

    Search in rotated sorted array,题目中也给出了相应的例子,就是在sorted array某个节点发生了翻转(ie.0 1 2 4 5 6 7 might become 4 ...

随机推荐

  1. swift 的基本类型之字符串

    一:创建字符串 //字符串的创建有两种 //不可变字符串 let str = "I'm a string" //可变字符串 var string = "I'm a mut ...

  2. ubuntu14.04搭建ftp服务器

    一,搭建匿名FTP服务器 实现ftp匿名登录,上传,下载,重命名文件. 1. 首先安装vsftpd:sudo apt-get install vsftpd,装好之后,默认的ftp根目录是在 /srv/ ...

  3. C#获取当前程序集的完整路径

    //获取当前程序集的完整路径加上EXE的名称 string binPath = Assembly.GetExecutingAssembly().Location; Console.WriteLine( ...

  4. 九校联考(DL24凉心模拟) 整除(中国剩余定理+原根性质)

    题意简述 给定 \(n, m\),求 \(n|x^m - x\) 在满足 \(x \in [1, n]\) 时合法的 \(x\) 的数量.答案模 \(998244353\).单个测试点包含多组数据. ...

  5. C#集合之不变的集合

    如果对象可以改变其状态,就很难在多个同时运行的任务中使用.这些集合必须同步.如果对象不能改变器状态,就很容易在多个线程中使用. Microsoft提供了一个新的集合库:Microsoft Immuta ...

  6. Jedis timeout

    处理Jedis timeout 异常 Jedis rClient = new Jedis("localhost"); 解决步骤 关闭linux防火墙 systemctl stop ...

  7. egg

    简介 阿里的   红色的是项目名字 egg-init --type simple First && cd First  egg-init --type simple Second &a ...

  8. jstack Dump 日志文件中的线程状态(转)

    jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注)  执行中,Runnable 等待资源,Waiting on conditio ...

  9. Python+Selenium之常用模块

    要用webdriver:from selenium import webdriver eg: driver = webdriver.Chrome()      driver.maximize_wind ...

  10. APP开发的三种技术对比

    目前来说主流的App开发方式有三种:Native App .Web App.Hybird App.下面我们来分析一下这三种App开发方式的优劣对比: 一 :Native App 即 原生App开发 优 ...