豆豆小游戏网

整理书包分类3种分法,二分法查找、归并排序、快速排序、背包贪婪算范实现

豆豆小游戏网 0

引:

二分法查找、归并排序、快速排序、背包贪婪算范实现

如何高效整理家务,主要是想能快速找到想要的东西?

刷完LeetCode是什么水平?能拿到什么水平的offer?

二分法查找、归并排序、快速排序、背包贪婪算范实现

1.二分法查找

  returnsearchinnerL,e,lenL-1,02.归并排序

  returnmergeleft,right3.快速排序

  '''快速排序'''

#建立递归终止条件

#low为序列左边要移动的游标

#last为序列右边要移动的游标

#将起始元素设为要寻找位置的基准元素

  #当low与last未重合,并且比基准元素要大,就将游标向左移动

  #如果比基准元素小,就跳出循环,并且把其放在基准元素左边

  #当low与last未重合,并且比基准元素要小,就将游标向右移动

  #如果比基准元素大,就跳出循环,并且把其放在基准元素右边

  #当low与last相等,就是mid_num的排序位置

  #然后对排序好的元素左右两边的序列进行递归

  QuickSortalist,start,low-1#对左边的序列进行递归

  QuickSortalist,low+1,end#对右边的序列进行递归4.贪婪算法

  我们考虑一个窃贼入室偷窃的行为。窃贼有一个固定容量的包,他在偷窃时需要决定偷走哪些物品才能保证自己获取了最高价值的物品!

  假设他的背包最多只能装20磅的物品,他潜入一家后发现有以下物品。很明显他无法拿走全部物品,那么窃贼该如何做出选择呢?

  对于这个问题,找出近似解的最简单方法就是贪婪算法。窃贼会根据自己的判断,首先选择最好的物品,然后是次好的,以此类推下去,直到背包被填满!

  问题就是窃贼要如何判断什么是最好的呢?这边可能会有这么几个定义:

  价值最高的;那么应该拿走电脑,总共200美元最轻的;应该依次带走书、花瓶、收音机和油画,一共价值170美元价值重量比值最高;花瓶、钟拿走书和收音机,价值255美元#定义Item类,每个Item用于name、value、weight属性

#判断方法

#贪婪算法的实现

  returnresult,totalValuekeyFunction是用来对Item进行排序的,但是会依赖我们自定义的规则。在这个问题中我们无非是选择以下三种中的一个进行排序:value、weight、density;reverse代表的是我们会从大到小进行排序!

  testGreedyitems,maxWeight,density三种取法的结果:

01背包问题的最优解5.01背包问题的最优解

  窃贼面临的问题恰好就是一种典型的优化问题,称为01背包问题。01背吧哦问题可以如下定义:

  每个物品都可以用一个值对价值,重量表示;背包能够容纳的物品总重量不能超过w;长度为n的向量I表示一个可用的物品集合,向量中的每个元素都代表一个物品;长度为n的向量V表示物品是否被窃贼带走。如果V[i]=1,则物品I[i]被带走;如果V[i]=0,则物品I[i]没有被带走;目标是找一个V,使得

的值最大,并满足一下约束条件:

#列举所有组合可能性

  #去掉所有超过背包允许重量的物品组合,在余下的物品组合中,选出任意一个价值最大的组合

printitem结果输出:

6.斐波那契数列实现

普通递归:

效率极差,复杂度为Ofibn。

利用动态规划:

  对于从0到n的每一个整数,它都只计算一次数列值。因此,基于字典查找可以在常数时间内完成这一假设,复杂度为On。

如何高效整理家务,主要是想能快速找到想要的东西?

在我心中,整理,是个心理活动。

  对于我这种酷爱整理的人来说,你家简直是个宝库

  对于你来说,你能到知乎上求助,你已经成功地迈出了第一步,也是最重要的一步。

没有整理的欲望是不可能动起来的。

夸奖完毕。开始具体建议

  一,首先是分类,先把全部的物品根据你自己的习惯按类分放。

  例如书一堆,纸巾一堆,喝水的杯子一堆,茶叶一堆,日用品一堆,厨具一堆,花草一堆等等

  二,下一步,扔一些东西吧,从完全用不上的开始

  例如烂掉的不能再利用的纸箱、泡沫、塑料袋(扔之前可以装垃圾)

  再例如我看到你的保温杯至少就有5个。一个人用不上这么多保温杯吧,没用过的闲鱼出掉

  三,再下一步,看到你有很多纸箱没扔,清理出干净整洁的纸箱,用记号笔写上大大的字分类,例如“日用品”“纸巾”等等

  纸箱可以垒放,轻的放上面,或者最常用的东西放上面

  四,本身有的铁盒,都贴上白纸,写上分类装细碎的东西。

  五,等以上这些都不够了,再去买一些瓦楞箱(比普通纸箱结实可以装重一点的)

  还有小纸箱抽屉(如图,是我家的纸抽屉,我记得小的一个2块钱?)可以装小物件,都标注,东西就会好找了。这些费用都不贵。

先试试这些吧,希望对你有用

刷完LeetCode是什么水平?能拿到什么水平的offer?

02.05.2020,更新一下刷题顺序的文章,文章把之前的两个高赞文章合到一起了,更方便大家阅读:

  LeetCode按照怎样的顺序来刷题比较好?这个总结对应于这门课程:

  GrokkingtheCodingInterview:PatternsforCodingQuestions该课程是一个算法总结提高的课程,它把算法面试中可能遇到的题分成了各种模式,每类题各个击破。

如果你需要上面的算法课程,那么你可以使用

  的折扣码获得网站所有课程的额外15%off!上面的折扣码针对单独购买所有课程有效。

  如果想买订阅(Subscriptions)的小伙伴,则可以用

  的couponcode来获取额外九折的优惠

按年和按月均适用)

  这种模式应该更划算一些他家最最出名的还是这门GrokkingtheSystemDesignInterview,但凡提到准备系统设计,这门课都上入门必推的:

  GrokkingtheSystemDesignInterview-LearnInteractively以及OOD:GrokkingtheObjectOrientedDesignInterview

  如果你在北美,如果你想进入大厂。那么恭喜你,你可以干好一件事情就能有很大把握进这些大厂了。

干啥呢?刷题。

刷啥呢?LeetCode。

  刷完肯定行,但刷完的意思是题目你都得知道题目的来龙去脉,还能回答上来follow-ups,这样的选手,基本没有找不到工作的,偶尔会看到刷了四五遍Leetcode,但是没有上岸的小伙伴。但是,很重要的但是,最后也都上岸了。

  所以题目是肯定要刷的,而且大部分都要刷完,至少,每种题型你得刷五题吧!

  再转折一下吧。题目其实是刷不完的,太多了。1000多道,都快赶上要你命三千了,还记得当然GRE单词怎么背的不,就几千个单词,背得死去活来。这么多的题,刷完,刷完估计OPT都过期了。

说了这么多,怎么办?

精刷!

怎么精刷呢?

  答案在这里,你们自己看吧。就不复制粘贴太多了。反正都是我写的。

  LeetCode按照怎样的顺序来刷题比较好?九章算法|七月算法|包子IT面试培训哪个好?

如果你觉得有帮助的话,

  我发现我的回答,收藏是赞的三四倍。你的支持是我进一步创造的动力,先谢谢大家啦!

11.04.2019更新!激动得日期都忘记了。

特别感谢大家!短短一个星期给了我千赞!

  真的是受宠若惊,希望大家都能有一个美好的前程!

  很开心,也祝大家开开心心,快快乐乐,每天多刷五道LeetCode!

  他家最最出名的还是这门GrokkingtheSystemDesignInterview,但凡提到准备系统设计,这门课都上入门必推的:

  GrokkingtheSystemDesignInterview还有这门算法课:

  GrokkingtheCodingInterview:PatternsforCodingQuestions这门课程是一个算法总结提高的课程,它把算法面试中可能遇到的题分成了各种模式,每类题各个击破。

  如果你需要上面的算法课程,那么你可以使用awesome-developer的折扣码获得网站所有课程的额外15%off!上面的折扣码针对单独购买所有课程有效。

  如果想买订阅(Subscriptions)的小伙伴,则可以用

  的couponcode来获取额外九折的优惠

按年和按月均适用)

  比如有最经典的slidingwindow模式,Twopointers模式,快慢指针模式,合并intervals模式,cyclicsort模式,in-place翻转链表模式,树上的BFS,树上的DFS,双Heaps模式,subsets模式,二分法变种,TopK模式,多路模式(K-ways),01背包,拓扑排序。

需要的小伙伴就去来一波吧!

以上。

标签: 整理书包分类3种分法

留言与评论(共有 条评论)
验证码: