刷题笔记
未读136. 只出现一次的数字
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例 1 :
12输入:nums = [2,2,1]输出:1
示例 2 :
12输入:nums = [4,1,2,1,2]输出:4
示例 3 :
12输入:nums = [1]输出:1
提示:
1 <= nums.length <= 3 * 104
-3 * 104 <= nums[i] <= 3 * 104
除了某个元素只出现一次以外,其余每个元素均出现两次。
解法1:使用哈希表利用 Hash 表,Time: O(n) Space: O(n)
123456789101112131415class Solution { public int singleNumber(int[] nums) { Map<Integer, Integer> map = new HashMap< ...
141. 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。
示例 1:
1234输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
123输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:
123输入:head = [1], pos = -1输出:false解释:链表中没有环。
提示:
链表中节点的数目范围是 [0, 104]
-105 <= Node.val <= 105
pos 为 -1 或者链表中的一个 有效索引 。
进阶:你能用 O(1)(即,常量)内存解决此问题吗? ...
20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
12>输入:s = "()">输出:true
示例 2:
12>输入:s = "()[]{}">输出:true
示例 3:
12>输入:s = "(]">输出:false
提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成
解法一:使用堆栈
这个思考的过程其实就是栈的实现过程。因此我们考虑使用栈,当遇到匹配的最小括号对时,我们将这对括号从栈中删除(即出栈),如果最后栈为空,那么它是有效的括号,反 ...
21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
12输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]
示例 2:
12输入:l1 = [], l2 = []输出:[]
示例 3:
12输入:l1 = [], l2 = [0]输出:[0]
解法1:递归法
根据以上规律考虑本题目:
终止条件:当两个链表都为空时,表示我们对链表已合并完成。如何递归:我们判断 l1 和 l2 头结点哪个更小,然后较小结点的 next 指针指向其余结点的合并结果。(调用递归)
1234567891011121314class Solution { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { if (list1==null)return list2; if (list2==null)return list1; if (lis ...
刷题笔记
未读假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例 1:
12345输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶
示例 2:
123456输入:n = 3输出:3解释:有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶
提示:
1 <= n <= 45
解法1:使用递归(容易超时)
123456class Solution { public int climbStairs(int n) { if (n <= 2)return n; return climbStairs(n-1) + climbStairs(n-2); }}
解法2:模拟法
相当于每次提升一个台阶都会让总体方法加一
12345678910111213class Solution { public int climbStair ...
79. 单词搜索
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
示例 1:
12输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"输出:true
示例 2:
12输入:board = [["A","B","C","E"],["S","F",&q ...
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
示例 1:
12输入:root = [1,null,2,3]输出:[1,3,2]
示例 2:
12输入:root = []输出:[]
示例 3:
12输入:root = [1]输出:[1]
提示:
树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100
解法1:递归
直接使用递归进行操作比较简单,但是同样地也会消耗较多资源
12345678910111213141516class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> temp = new ArrayList<Integer>(); inorder(root,temp); return temp; } public void inorder(TreeNode node, L ...
此笔记为阿里云天池机器学习训练营笔记,学习地址:https://tianchi.aliyun.com/s/1fc36a7e103eb9948c974f638e83a83b感谢教程及阿里云提供平台
1.学习知识点概要XGBoost是什么XGBoost是2016年由华盛顿大学陈天奇老师带领开发的一个可扩展机器学习系统。严格意义上讲XGBoost并不是一种模型,而是一个可供用户轻松解决分类、回归或排序问题的软件包。它内部实现了梯度提升树(GBDT)模型,并对模型中的算法进行了诸多优化,在取得高精度的同时又保持了极快的速度,在一段时间内成为了国内外数据挖掘、机器学习领域中的大规模杀伤性武器。
优点:
简单易用。相对其他机器学习库,用户可以轻松使用XGBoost并获得相当不错的效果。
高效可扩展。在处理大规模数据集时速度快效果好,对内存等硬件资源要求不高。
鲁棒性强。相对于深度学习模型不需要精细调参便能取得接近的效果。
XGBoost内部实现提升树模型,可以自动处理缺失值。
缺点:
相对于深度学习模型无法对时空位置建模,不能很好地捕获图像、语音、文本等高维数据。
在拥有海量训练数据,并能找 ...
此笔记为阿里云天池机器学习训练营笔记,学习地址:https://tianchi.aliyun.com/s/1fc36a7e103eb9948c974f638e83a83b感谢教程及阿里云提供平台
1.学习内容概括lightGBM是什么
LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由2014年首届阿里巴巴大数据竞赛获胜者之一柯国霖老师带领开发。它是一款基于GBDT(梯度提升决策树)算法的分布式梯度提升框架,为了满足缩短模型计算时间的需求,LightGBM的设计思路主要集中在减小数据对内存与计算性能的使用,以及减少多机器并行计算时的通讯代价。
LightGBM可以看作是XGBoost的升级豪华版,在获得与XGBoost近似精度的同时,又提供了更快的训练速度与更少的内存消耗。正如其名字中的Light所蕴含的那样,LightGBM在大规模数据集上跑起来更加优雅轻盈,一经推出便成为各种数据竞赛中刷榜夺冠的神兵利器。
优点:
简单易用。提供了主流的Python\C++\R语言接口,用户可以轻松使用LightGBM建模并获得相当不错的效果。
高效可 ...
此笔记为阿里云天池机器学习训练营笔记,学习地址:https://tianchi.aliyun.com/s/1fc36a7e103eb9948c974f638e83a83b感谢教程及阿里云提供平台
一、赛题说明赛题使用公开数据的问卷调查结果,选取其中多组变量,包括个体变量(性别、年龄、地域、职业、健康、婚姻与政治面貌等等)、家庭变量(父母、配偶、子女、家庭资本等等)、社会态度(公平、信用、公共服务等等),来预测其对幸福感的评价。
二、数据说明考虑到变量个数较多,部分变量间关系复杂,数据分为完整版和精简版两类。先从精简版入手熟悉赛题后,使用完整版挖掘更多信息。complete文件为变量完整版数据,abbr文件为变量精简版数据。index文件中包含每个变量对应的问卷题目,以及变量取值的含义。survey文件是数据源的原版问卷,作为补充以方便理解问题背景。
总计共有6个文件,[点击查看](Happinese_survey | Kaggle)
这里我们就直接上手完整版数据集了
三、 数据预处理将测试集连接在一起
12# 将train和test连在一起data = pd.concat([train ...