数据压缩的重要组成部分---位操作

数据压缩描述 数据压缩是一个减少数据存储空间的过程。 数据压缩包括两个过程:一个过程是,压缩或编码数据,数据大小减小;另一个过程是,解压缩或解码数据,还原到数据本身的状态。 根据信息的内容,所有的数据都会表现出一定的特性,称为熵(从热力学借用的一个术语)。压缩是可能的,因为绝大多数数据所表现出来的容 ... »

算法之八皇后问题的解决方法

问题描述: 在国际象棋棋盘上,棋盘是8*8的,皇后可以吃掉其同一行列以及斜线方向的棋子,在这张棋盘上可以有多少种8个皇后的摆放方法,能够让各个皇后都不能吃掉其他皇后。 求解思路:回溯与递归算法 python 1.确定并调试检测函数,检测函数的作用是检查当前加入的新皇后是否符合要求 2.递归回溯 判断 ... »

Leetcode第1题至第10题 思路分析及C++实现

笔者按照目录刷题,对于每一道题,力争使用效率最高(时间复杂度最低)的算法,并全部通过C++代码实现AC。(文中计算的复杂度都是最坏情况复杂度) 因为考虑到大部分读者已经在Leetcode浏览过题目了,所以每道题都按照 解题思路 实现代码 问题描述 的顺序进行讲解。 (笔者目前已刷 40 题,已更新解 ... »

动态规划--流水作业调度问题

n个作业{1,2,3,4....n} 要在 2 台机器M1 M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工完毕后 再在M2上加工,M1和M2加工作业i 分别需要时间为 ai 和 bi。 1<=i<=n; 流水作业调度问题要求确定这n个作业的最优加工顺序,最优条件是(从第一个作业在M ... »

使用“牛顿迭代法”求解方程

使用牛顿迭代法求解方程 尽管通过因式分解和利用求根公式可以很方便的得出多项式方程的根,但大多数时候这个多项式的次数都很高,计算将变得非常复杂,因此,我们必须转向一些近似解法。 牛顿迭代法是其中最好的方法之一。从根本上说,牛顿迭代法通过一系列的迭代操作使得到的结果不断逼近方程的实根。 首先,要选择一个 ... »

Two Sum [easy] (Python)

由于题目说了有且只有唯一解,可以考虑两遍扫描求解:第一遍扫描原数组,将所有的数重新存放到一个dict中,该dict以原数组中的值为键,原数组中的下标为值;第二遍扫描原数组,对于每个数nums[i]查看target-nums[i]是否在dict中,若在则可得到结果。 当然,上面两遍扫描是不必要的,一遍 ... »

数据结构与算法 —— 二叉树 01

上节介绍了二叉树的一些基本概念,这篇文章开始,我们开始学习二叉树的一些算法问题,今天先看一些层次遍历的题目。 二叉树的层次遍历 题目 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历 ... »

LeetCode算法扫题系列19

原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9104677.html LeetCode算法第19题(难度:中等) 题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。(English:Given a linked l ... »

被算法阴影支配的我——算是什么鬼

什么是算法? 现在,作为一个小白的我(曾小白),思考讨论这个问题并把它写成这篇随笔,应该是一个不自量力,很狂妄的行为。 虽然写出来的东西可能有不少谬误,会让人贻笑大方,但是要深入的去探究一下算法,还是要思考一下算法的本质是什么。 对于这个问题主要有这么几个说法: 1.算法就是解决问题的步骤 2.算法 ... »

图解 欧几里德算法

把整数看成保持面积不变,可以重排为长宽为整数的矩阵 取两个整数的最大公因子,可以看作把两个整数重排后保持一端对齐,求对齐端的最大长度 当两个整数一端对齐时,他们的差也保持对其。所以原问题问题gcd(m,n)能归结为gcd(m-n,n) 最终其中的一者成为长=1,宽=gcd(m,n)的矩形,算法终结 ... »

五大经典算法之动态规划

一、概念起源   动态规划,又名DP算法(取自其Dynamic Programming的缩写),最初是运筹学的一个分支,是用来求解决策过程最优化的数学方法。 二、基本思想   把 多阶段过程 转化为一系列单阶段过程,利用各阶段之间的关系,逐个求解。那什么叫多阶 ... »

Java基础系列--基础排序算法

原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9082138.html 一、概述 基础排序算法包括:桶排序、冒泡排序、选择排序、插入排序等 二、桶排序 2.1 算法介绍 桶排序可以算是最简单快速的排序算法了,只是限定条件要多一点,需要事先 ... »

多线程动态规划算法求解TSP(Traveling Salesman Problem) 并附C语言实现例程

TSP问题描述: 旅行商问题,即TSP问题(Travelling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要 ... »

五大经典算法之回溯法

一、基本概念   回溯法,又称为试探法,按 选优条件 向前不断搜索,以达到目标。但是当探索到某一步时,如果发现原先选择并不优或达不到目标,就会退回一步重新选择,这种达不到目的就退回再走的算法称为回溯法。 与穷举法的区别和联系: 相同点:它们都是基于试探的。 区别:穷举法要将一个解 ... »

朴素贝叶斯分类——理论与实践

对于给定的训练数据,首先基于特征条件独立假设学习输入/输出的联合概率分布,然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。 条件概率: 条件概率应该比较熟悉,P(A|B) 表示事件B已经发生的条件下,事件A发生的概率。计算公式如下: 贝叶斯定理: 独立性 事件的独立性: 假设 ... »

Java基础系列--冒泡排序

原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9064218.html 1、算法简介 冒牌排序是很耳熟的排序方式,虽然它使用的很少,但是经常会出现在面试中,冒泡的意思是渐进式的意思,即渐进式排序。 2、算法原理 冒泡排序就是通过相邻元素的 ... »

监督学习——K邻近算法及数字识别实践

K-近邻(k-Nearest Neighbor,KNN)是分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。 ... »

Java基础系列--桶排序

原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/9045967.html 1、算法简介 桶排序可以算是最简单快速的排序算法了,只是限定条件要多一点,需要事先知晓待排序列的极限值或范围来准备足够的桶。 2、算法原理 桶排序的原理就是准备足够数量 ... »

Java程序算法设计视频分享,需要的来

每年都会有人说,IT行业饱和了,根本就找不到工作,其实,我想说的是,不是工作难找,而是你自己不够好! 前几天看到一CEO在微博上吐槽: 前几天招一算法工程师我们给了8万月薪*14+奖金,人家去阿里拿5万月薪。今天这个,直接不给谈薪酬机会。前几天在网易挖个人,原来年薪80万,我给了140+期权,网易直 ... »