机器学习 机器学习的几种学习方法统计学习:监督学习,无监督学习,半监督学习,强化学习。这里引入统计学习和机器学习的区别:1.统计学习是theory-driven,对数据分布进行假设,以强大的数学理论支撑解释因果,注重参数推断(Inference);机器学习是data-driven,依赖于大数据规模预测未来,弱化了收敛性问题,注重模型预测(Prediction);2.机器学习建立在统计学习基础之上。...
leetcode_35.搜索插入位置 搜索插入位置:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], ...
leetcode_9.移除元素 移除元素:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。示例 2:给定 nums = [0...
leetcode_8.删除排序数组中的重复项 删除排序数组中的重复项:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 示例 2:给定 nums = [...
leetcode_7.合并两个有序链表 合并两个有序链表:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4一.递归法:首先处理链表 l1和 l2是否为空的情况因为l1和l2是有序链表,比较它们的第一个数,若l1<l2,则递归调用mer...
leetcode_6.有效的括号 有效的括号:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]...
leetcode_5.最长公共前缀 最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明: 所有输入只包含小写字母 a-z 。自己写了一个多小时写好了,但提交总...
leetcode_4.罗马数字转整数 罗马数字转整数:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,...
leetcode_3.回文数 回文数:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文...
leetcode_2.整数反转 整数反转:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例2:输入: -123输出: -321示例3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。我...
刷leetcode的说明 我昨天做了leetcode简单题目的第一题,花了一个多小时,做起来觉得题目并不复杂却很吃力,开始怀疑自己觉得自己是不是挺笨,心态有点炸裂。好在上网冲浪发现许多小伙伴都是比较吃力,也看到了很多好的解答,对自己刷leetcode也想划分一下任务。我看到有龟系刷题,兔系刷题,结合我目前的状态想了想,我选择兔系刷题。从2019.7.7号开始每天刷3道easy,每题一个小时以内写完并总结成博客,只要10...
leetcode_1.两数之和 两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例:给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]/**...
哈夫曼编码和译码的实现 哈夫曼编码和译码的实现#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;/*哈夫曼树的应用----哈夫曼编码*///哈夫曼树的结点结构typedef struct HuffmanTree{ in...
哈夫曼树的搭建 哈夫曼树的实现先放代码,明天补充完整。今天心累的我…#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;/*哈夫曼树的应用----哈夫曼编码*//*根据哈夫曼算法:1.若给定n个权值的结点构造n棵二叉树, 其中n棵二叉树的根结点分别为这n个...
哈夫曼树及哈夫曼编码的概念 一.哈夫曼树给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。话不多说,直接上图:求出三个二叉树的带权路径长度WPL,其中WPL( c )最短,c为哈夫曼树。那么如何构造哈夫曼树?哈夫曼给出了哈夫曼算法:①.根据给定的n个权值构造成...
树的3种常用链表结构 树的3种常用链表结构双亲表示法typedef struct{ elemType data; int parent;}TNode;typedef struct{ TNode T[100]; int r,n; //根的位置和结点数}Tree;对应结构如下图:(显然很容易进行Parent操作,缺点是不容易进行Child操作)孩子表示法typedef struct C...
线索二叉树的中序遍历线索化实现 先码着,明天添加文字说明#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;typedef enum Tag{ Ptr,Thread}PointerTag;//Ptr=0:指针,Thread=1:线索 //二叉链表的结点结构 typede...
中序遍历二叉树的非递归实现(利用栈) 先待补充文字,以下是完整代码#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;#define STACK_INIT_SIZE 100 //栈的初始化容量 #define STACK_INC_SIZE 10 //栈的分配增量 typed...
线索二叉树的讨论 线索二叉树前面谈到了遍历二叉树,遍历二叉树是以一定规则(先序,中序或后序)将二叉树中的结点排列成一个线性序列。这实际上是对非线性化结构进行线性化操作,使每个结点(除第一个和最后一个外)在这些序列中有且仅有一个前驱或后继。但当以二叉链表作为存储结构时,只能找到结点左右孩子的信息,并不能得到结点的前驱和后继信息。一种比较简单的方法当然是在每个结点结构中再加入两个指针域,前驱指针域保存其前驱...
遍历二叉树及其递归实现 遍历二叉树在二叉树的应用中,常常要求在树中查找具有某种特征的结点,或者对树中的结点逐一进行某种处理,这就出现了一个如何遍历二叉树的问题。我们希望能按照某条搜索路径访问树中的每一个结点,并使得每个结点有且仅被访问一次。“访问”的含义很多,可以是对结点作各种处理,如输出结点的信息等。遍历对线性结构来说是一个容易解决的问题,而对于二叉树则不然,由于二叉树是一种非线性结构,它的每个结点都可能有0~2...