算法技术栈
广小辉
这个作者很懒,什么都没留下…
展开
-
数据结构算法--链表系列 1.判断链表是否有环及求环点
# coding: utf-8"""判断是否相交求交点,判断是否有环,求环点,都可以利用hashset的方法,"""from __future__ import print_functionclass LinkNode: def __init__(self, val): self.val = val self.next = Noneval_list = [5, 4, 9, 1, 0,4]node_list = [LinkNode(_)原创 2020-12-14 23:58:19 · 201 阅读 · 0 评论 -
数据结构算法--链表系列 1. 判断链表是否有交点
主要分两种:判断两个链表是否有交点在1的基础上,求两个链表的交点;1. 判断两个链表是否有交点总结了三种方法利用hashset的方法def has_insection_3(headA): """ 也可以使用hash_set, 如果 """ s = set() while headA: if headA not in s: s.add(headA) else:原创 2020-12-14 22:56:22 · 270 阅读 · 0 评论 -
数据结构算法--剑指offer-数组中重复的数字
题目描述题目1: 找出数组中重复的数字在一个长度为n的数组中,所有的数字都在0-n-1的范围内。数组中某些数字是重复的,但是不知道有几个数字是重复了,也不知道每个数组重复了几次,请找出数组中任意一个重复的数字import copyclass Solution(): def find_duplicate_1(self, nums): """ ...原创 2020-04-20 07:51:20 · 221 阅读 · 0 评论 -
数据结构算法--atoi 和两数相加
leetcode8atoi2addTwoNumbers1. atoi在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号, 选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。 如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 字符串可以在形成整数的字符后面包括多余的字符,...原创 2020-04-04 10:18:22 · 259 阅读 · 0 评论 -
数据结构算法--链表高频题精讲
提纲链表简介面试题精讲一些例题例1: 链表的插入与删除例2: 链表翻转例3: 单链表找环及起点和环长度例4: 复制带有随机指针的链表例5: 链表partition过程总结1. 链表简介链表: 一个元素和下一个元素靠指针连接(松散),不能O(1)直接访问到第k个元素单(向)链表: 只能找到下一个节点双向链表:能找到上一个和下一个节点循环(单、双)链表:首尾相...原创 2020-04-03 22:32:37 · 333 阅读 · 0 评论 -
数据结构算法--栈和队列高频题精讲
线性表简介面试题总体分析一些例题:例一:元素出入栈顺序合法性判断例二:两个队列实现一个堆栈例三:两个堆栈实现一个队列例四:支持查询最小值的堆栈例五:单调堆栈–最大直方图例六:单调队列–滑动窗口最大值总结1. 线性表简介堆栈和队列统称为线性表简单的线性表数组和链表可以实现的两种数据结构堆栈后进先出(Last In First Out)DFS思想...原创 2020-03-24 22:16:42 · 229 阅读 · 0 评论 -
数据结构算法--数组高频题目
提纲数组简介面试题总体分析选题原则难度经典新颖例题例1: 局部最小值例2: 第一个缺失的正整数例3: 元素间的最大距离例4: 只出现一次的数例5:众数问题例6:“前缀和”的应用总结1. 数组简介java: [] ArrayListC++:STL, vector, []C:只有[]输入的数组通常理解为集合,我们自己可以排序,查找注意:C+...原创 2020-03-21 10:21:34 · 526 阅读 · 0 评论 -
数据结构算法--字符串高频题目
字符串简介面试题总体分析一些例题:0-1串交换顺序字符的替换与复制交换星号子串变位词单词/字符串翻转总结1. 字符串简介尽量转化成字符数组[python中字符串是不可变类型]和数组相关–内容广泛概念相关:字典序简单操作:插入、删除字符、旋转规则判断: 罗马数字转换, 是否是合法的整数,浮点数数字运算:大数加法,二进制加法排序、交换(partition过...原创 2020-03-09 22:41:46 · 315 阅读 · 0 评论 -
数据结构算法--列表分割和序列化反向列表
1. Split numbersGiven an array of ints, for example [6, 4, -3, 0, 5, -2, -1, 0, 1, -9],implement in one of the following languagesto move all positive integers to the left, all negative integers to...原创 2020-02-24 00:14:33 · 771 阅读 · 2 评论 -
数据结构算法--二叉树--叶子节点查找
二叉树的结构:0 二叉树叶子节点class Node(object): def __init__(self, data, left=None, right=None): self.data = data self.left = left self.right = right def __str__(self):...原创 2020-02-22 12:51:34 · 1967 阅读 · 0 评论 -
数据结构算法--树--哈夫曼树(Huffman Tree)
1. 原理2. 在word2vec为什么能够简化计算?3. 代码from collections import OrderedDict# 建立Haffuman树节点class Node(object): def __init__(self, name, data): self.name = name self.data = data...原创 2020-02-22 00:29:38 · 262 阅读 · 0 评论 -
机器学习--删除字符串中出现次数最少的字符后的字符串
题目描述实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。输入描述:字符串只包含小写英文字母,不考虑非法输入,输入的字符串长度小于等于20个字节。输出描述:删除字符串中出现次数最少的字符后的字符串。while True: try: new = '' ...原创 2020-02-15 17:27:58 · 260 阅读 · 0 评论 -
机器学习---空汽水瓶
题目描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输...原创 2020-02-15 15:22:11 · 176 阅读 · 0 评论 -
数据结构算法--排序--希尔排序(shell sort)
希尔排序时间复杂度:平均O(n^1.3),最好为O(n),最坏为0(n ^ 2) 空间复杂度:O(1) 稳定性:不稳定算法解析:希尔排序是直接插入排序的一种改进,又称做缩小增量排序 希尔排序是把待排序集合计算出一个增量集合Tn 把待排序集合分成若干个子集,然后每个子集进行直接插入排序,知道Ti=1为止,排序结束实现原理:有一个集合如下图所示:计算增量:gap ...原创 2020-02-10 10:32:00 · 256 阅读 · 0 评论 -
数据结构算法--排序--归并排序(递归和非递归实现)
基本思想 归并排序是分治思想的一种运用【和快速排序的思想一样】,首先将一个序列分成一个个子序列,然后对子序列进行排序,最后将排好序的子序列进行合并;----所以需要写递归函数。将其不停的分为左边和右边两份,然后以此递归分下去。然后再将她们按照两个有序数组的样子合并起来。所以当将这左右两边分到不可分【也就是数组长度为1】,也就到了该合并的时候。这里显示了归并排序的第一步...原创 2020-02-09 17:38:15 · 360 阅读 · 0 评论 -
数据结构算法--排序--冒泡排序
冒泡排序是交换排序的一种,所以需要两两比较,在满足判定条件的情况下,进行交换操作;动图解释 算法分析假设数组中有N 个数字需要排序;1. 需要N-1轮排序【最后两个一次排序就可确定】,如果不设置 没轮里面,比较的次数,那么需要N-1词的,设置的话就是N-i次2. 冒泡排序中, 每进行一次排序,总是会把最大量找出来,放在最后一个位置;例:第一趟比较之后,排在最后的一个数...原创 2020-02-08 11:14:37 · 244 阅读 · 0 评论 -
机器学习 特征工程-特征选择
特征选择(FeatureSelection)\color{DodgerBlue}{特征选择(Feature Selection)}特征选择(FeatureSelection) 在机器学习流程中,前期获取“足量”的训练数据是至关重要的一个步骤。“足量”包括两个方面:一个是特征层面,另一个是训练数据量。但是并不是所有的特征都会用于模型训练,主要是因为不必要的特征不仅会降低训练速度、降低模型的可解释性...原创 2019-12-30 17:16:11 · 866 阅读 · 1 评论 -
scikit-leann 新版本【0.22】
目前,在pycharm中可以直接安装0.22版本的scikit-learn了:在python 或者 anacoda中,也可以直接升级:# pythonpip install --upgrade scikit-learn# condaconda install scikit-learn目录:stacking 模型融合特征处理中利用KNN近邻填充–KNNImputer便捷的ro...原创 2019-12-23 18:10:47 · 1266 阅读 · 0 评论 -
机器学习 7 XGBoost
1. 集成算法总结1.1 Bagging随机森林:多个基模型的构建是基于不同数据来构建的,各个模型是独立,不提提高准确度,但是可以降低过拟合;1.2 Boosting通过迭代的形式,基于之前构建好的模型,对样本数据做一定的修正【或者改变权重/标签值】然后影响之后模型的构建。不断迭代构建的目的是:让预测更加准确,提升准确度,降低偏差;Adaboost通过修正样本的权重GBD...原创 2019-12-19 21:14:09 · 334 阅读 · 0 评论 -
机器学习 6 GBDT(梯度提升决策树)
基本概念GBDT也是Boosting算法的一种,但是和Adaboost算法不同;如别如下:Adaboost算法是利用前一轮的弱学习器的预测误差率来更新样本权重,然后一轮一轮的迭代;GBDT也是迭代,但是GBDT要求的弱学习器必须是CART模型,而且GBDT在模型训练的时候,模型预测的样本损失尽可能小;GBDT底层只支持决策树,并且是回归决策树;别名:GBT(Gradient Bo...原创 2019-12-17 13:52:48 · 391 阅读 · 0 评论 -
机器学习 4 随机森林
目录随机森林提升算法GBDT(迭代决策树)Adaboost1. Bagging思想1.1 Bagging API参数参数值解释base_estimator基学习器可以采用其他算法,相对较为灵活n_estimators学习器的个数子模型的数目max_samples给定子模型训练时,用多少个样本训练,这个是总样本百分比max_fea...原创 2019-12-11 21:54:09 · 374 阅读 · 0 评论 -
机器学习 1回归算法
目录线性回归Logistic回归Softmax回归梯度下降特征抽取线性回归案例1. 回归算法综述回归算法是一种有监督的算法【有label】回归算法是一种比较常用的机器学习算法,用来建立“解释变量”(自变量x)和观测值(因变量Y)之间的关系;从机器学习的角度讲,用于构建一个算法模型,来做属性和标签之间的隐射关系,那么在算法训练过程中,寻找一个函数h:RdR^dRd->R...原创 2019-11-09 14:59:16 · 553 阅读 · 0 评论 -
Python 的正则匹配
国庆7天,没有追逐诗和远方, 在公司把python的前置知识理了一下。其中,正则 匹配这块忘记的差不多了,就重新学习了一下。1. 正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些字符、以及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串用来表达对字符串的一种过滤逻辑”,简单来说,就是提取字符串中的特定的内容。常见的正则语法:语法 ...原创 2019-10-06 15:18:41 · 872 阅读 · 0 评论