手把手从0实现一颗决策树

这是我2019-09-24在知乎上面写的文章,原文跳转点这里,今天面试java不知道为什么面试官感兴趣被提起,提起于是搬运到博客上,纯python实现,除numpy外无第三方库

前段时间数学建模我和我的小伙伴们划了个水,几个没有建模经验的小伙伴临时抱佛脚最后通了个宵,在此感谢我的队友们。抱佛脚的时候笔者对决策树起了兴趣(可惜没有用上),之前看过一点点理论相关的知识,但是没有自己实现过,这几天空下来决定自己从0撸一颗简单的ID3决策树。

40-组合总和II

力扣40

https://leetcode-cn.com/problems/combination-sum-ii/

无脑套回溯模板就vans了

这题能评中等,大概率是因为去重的方式吧

131-分割回文串

力扣131

https://leetcode-cn.com/problems/palindrome-partitioning/

回溯问题,一开始看到样例的结果是单个的在最后面,导致想复杂了

70-爬楼梯以及进化版

力扣70

https://leetcode-cn.com/problems/climbing-stairs/

动态规划经典题,没有之一

还是那三句话

  1. 定义动态规划数组的含义
  2. 找出关系式
  3. 找初始值

JS从url中获取请求参数工具类

这是一个从URL中获取参数值的工具

例如URL为http://localhost/index.html?id=5&name=张三

那么在html中引入该头文件

<script src="js/getParameter.js"></script>

后就可以通过js代码传入参数获得参数值了

1
var id = getParameter("id");

63-不同路径II

力扣63

https://leetcode-cn.com/problems/unique-paths-ii/submissions/

dp题,不同路径加入了障碍物,但影响不了多少,只多了判断条件:

  • 如果当前为障碍,dp[i][j]为0
  • 如果左边为障碍,dp[i][j] = 上面
  • 如果上面为障碍,dp[i][j] = 左边
  • 否则才是dp[i][j] = 左边 + 上面

901-股票价格跨度

力扣901

https://leetcode-cn.com/problems/online-stock-span/

单调栈题目,我也不清楚力扣的输入样例是什么,但是直接return 1的话可以测试一下
看到已经返回了null, 1, 1…因此可以判断只需要完成这个类的next方法即可

496-下一个更大元素I

力扣496

https://leetcode-cn.com/problems/next-greater-element-i/

单调栈简单题,找下一个最大值,因此用递减栈遍历nums2,因为nums1要定位查,所以将结果放入map中

这题没什么好讲的了,所谓简单题,模板一套就vans了

邮件工具类

邮件工具类,使用java发送邮件,常用于邮箱激活场景,用于发送的账号需要进行以下配置:

  • 以QQ邮箱为例,需要在设置->账户下打开POP3和IMAP服务(也可以直接全开),这样才能第三方登录邮箱(Java中登录也算第三方)
  • 开启的时候会获取一个授权码(没记下来就再次关闭打开,每次都不一样的,但是每个都有效)
  • 直接复制即可食用,就只有一个静态方法调用即可,参数已注明在注释中

字符串中的成对括号问题处理技巧

1. 前言

遇到成对括号问题,我相信大家第一个想到的就是栈,因为我们自从翻开严蔚敏的《数据结构》开始,就习惯于将“栈”和“成对括号”联系起来。

其实还是挺麻烦的,遍历一遍,遇到(入栈,)出栈,最后判断栈是否为空,中间还夹杂着一些其他技巧(栈底是)就直接结束之类的)。诚然,这是一个好方法,但是做题的时候讲究快速编写,研究的时候才讲究快速运行,而且通常题目不仅仅考括号匹配,括号只是题目的一部分,这时候,我们写起来就比较复杂。看我这新思路!

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×