二分查找总结 1.二分查找又称折半查找2.优点:比较次数少;查找速度快;平均性能好3.缺点:待查表为有序数组(若为无序数组,分成两份查找无意义,排序本身也耗费时间);插入删除困难(增删需要移动大量的节点)4.思想:在一个有序数组中,取数组的中间值与要查找的数进行比较;若要查找的数等于中间值,查找成功;若要查找的数大于中间值,则在右半区间继续取中间值与要查找的数进行比较;若要查找的数小...
最大子数组之和 一个整数数组中的元素有正有负,在该数组中找出一 个连续子数组,要求该连续子数组中各元素的和最大,这个连续子数组便被称作最大连续子数组。比如数组{2,4,-7,5,2,-1,2,-4,3}的最大连续子数组为{5,2,-1,2},最大连续子数组的和为5+2-1+2=8。问题输入就是一个数组,输出该数组的“连续子数组的最大和”方法一:枚举法枚举所有的子数组并求出他们的和,长度为n的数组,有n(n...
句子/文档相似度计算 句子/文档相似度计算1.计算两个句子的相似性分词à列出所有词à计算词频à列出词频向量à两个向量的相似程度通过夹角的大小,来判断向量的相似程度。夹角越小,代表越相似(夹角越小,余弦值越大)2.计算两篇文档的相似性使用特征选择(TF-IDF)算法,找出两篇文章的关键词; 每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长...
特征选择----TF*IDF TF*IDFTF 称为词频,表示词在一篇文档中出现的频率=词在该文档中出现的次数 / 该文档中单词的总数---TF越大,表示该词对文档越重要DF称为文档频率,一个词在多少篇文章中出现过IDF 称为逆文档频率=Ln(总文档数/出现该次的文档数)反映了一个词在所有文档中出现的频率,如果一个词在很多文档中出现,那么它的IDF值较低;如果一个词在比较少的文档中出现,那么它的IDF值较高。如...
算法分析与设计----动态规划 动态规划的原理基本思想:将待求问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。基本要素: 最优子结构 重叠子问题设计动态规划算法的步骤:找出最优解的性质,并刻画其结构特征;递归地定义最优值;以自底向上的方式计算最优值;根据计算最优值时得到的信息构造最优解。动态规划与分治法的异同共同点:将待求解的问题分解成若干子问题,先求解子问题,...
机器学习----正则化 L1和L2是正则化项,又叫做罚项,是为了限制模型的参数,防止模型过拟合而加在损失函数后面的一项。L0正则:模型参数中非零参数个数;L1正则:模型各参数绝对值之和;L2正则:模型各个参数的平方和的开方值。L1和L2的区别:L1是模型各个参数的绝对值之和。L2是模型各个参数的平方和的开方值。使用L1可以得到稀疏的权值;用L2可以得到平滑的权值L1会趋向于产生少量的特征,而其...
机器学习----过拟合和欠拟合 过拟合(1)什么是过拟合?模型学习能力太强,以至于把噪声数据的特征也学习到了,导致模型泛化能力下降,在训练集上表现很好,但是在测试集上表现很差。(2)过拟合出现的原因:训练集的数量级和模型的复杂度不匹配。训练集的数量级要小于模型的复杂度; 训练集和测试集特征分布不一致; 样本里的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系; 权值学习迭代次数...
C语言实现----快速排序 1.快速排序是一种交换排序2.基本思想: 选取一个基准数; 然后将大于和小于基准的元素分别放置于基准数两边; 继续分别对按此方法分治基准数的两侧,直至整个序列有序。3. 注意问题 基准数的选择(通常选取头元素或者尾元素) 元素的查找(一组一组的查找需要交换的元素) 递归调用(终止递归...
二分查找 1. 二分查找又称折半查找2. 优点: 比较次数少 查找速度快 平均性能好3. 缺点: 待查表为有序数组(若为无序数组,分成两份查找无意义,排序本身也耗费时间) 插入删除困难(增删需要移动大量的节点)4.思想: 在一个有序数组中,取数组的中间值与要查找的数进行比较; ...
Python下LDA的基础用法 """第一部分:载入数据"""import numpy as npimport ldaimport lda.datasets # document-term matrixX = lda.datasets.load_reuters()print("type(X): {}".format(type(X)))print("shape: {}".format(X.shape))...
华为历年笔试面试机考试题在线练习----输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。 #include <iostream>#include <string>using namespace std;int main(){ string str; while(getline(cin,str)){ int num1=0,num2=0,num3=0,num4=0,i,n; n=str.size(); ...
华为历年笔试面试机考试题在线练习----取近似值 题目描述写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。输入描述:输入一个正浮点数值输出描述:输出该数值的近似整数值示例1输入复制5.5输出复制6#include<stdio.h>int main(){ float n; scanf("%f",&n); int N; N = ...
华为历年笔试面试机考试题在线练习----提取不重复的整数 题目描述输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。输入描述:输入一个int型整数输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数示例1输入复制9876673输出复制37689#include<stdio.h>int main(){ int n; scanf("%d",&n); int arr[10]=...
华为历年笔试面试机考试题在线练习----字符个数统计 题目描述编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。输入描述:输入N个字符,字符在ACSII码范围内。输出描述:输出范围在(0~127)字符的个数。示例1输入复制abc输出复制3#include<stdio.h>#include<string.h>int main(){ int c; in...
华为历年笔试面试机考试题在线练习----计算字符个数 题目描述写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。输入描述:输入一个有字母和数字以及空格组成的字符串,和一个字符。输出描述:输出输入字符串中含有该字符的个数。示例1输入复制ABCDEF A输出复制1#include<stdio.h>#include<string.h>int main(){ ...
华为历年笔试面试机考试题在线练习----字符串最后一个单词的长度 题目描述计算字符串最后一个单词的长度,单词以空格隔开。 输入描述:一行字符串,非空,长度小于5000。输出描述:整数N,最后一个单词的长度。示例1输入复制hello world输出复制5#include<stdio.h>#include<string.h>int main(){ char str[5005]; gets(str); int c...
程序员面试金典----翻转子串 假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。测试样例:"Hello world","worldhello "返回:...
程序员面试金典----原串翻转 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。测试样例:"This is nowcoder"返回:"redocwon si sihT"class Reverse {public: string reverseStri...
剑指offer----数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数。class Solution {//数组有序-----> 借助二分查找法//找到第一个key 与 最后一个key//利用两者下标的差+1 即求得key出现的次数public: int GetNumberOfK(vector<int> data ,int k) { int len = data.size(); ...
剑指offer----和为S的连续正数序列 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列内按照从小至...