- 博客(66)
- 收藏
- 关注
原创 数学建模之主成分分析
主成分分析基本概念:主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息。一般来说,当研究的问题涉及到多变量且变量之间存在很强的相关性时,我们可考虑使用主成分分析的方法来对数据进行简化。数据降维及其作用:降维是将高维度的数据(指标太多)保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用
2020-07-15 21:48:38
4094
原创 数学建模之聚类模型
聚类模型基本概念:“物以类聚,人以群分”,所谓的聚类,就是将样本划分为由类似的对象组成的多个类的过程。聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计、分析或预测;也可以探究不同类之间的相关性和主要差异。聚类和分类的区别:分类是已知类别的,聚类未知。K-means聚类算法:流程:一、指定需要划分的簇[cù]的个数K值(类的个数);二、随机地选择K个数据对象作为初始的聚类中心(不一定要是我们的样本点);三、计算其余的各个数据对象到这K个初始聚类中心的距离,把数据对象划归到距离它最近的
2020-07-14 22:59:42
3826
原创 数学建模之时间序列分析
时间序列分析基本概念:时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分,分别是描述过去、分析规律和预测未来,本讲将主要介绍时间序列分析中常用的三种模型:季节分解、指数平滑方法和ARIMA模型,并将结合spss软件对时间序列数据进行建模。组成要素:1、时间要素;2、数值要素;时间序列数据:对同一对象在不同时间连续观察所取得的数据。时间序列分类:1、时期时间序列数值要素反映现象在一定时期内发展的结果。2、时点时间序列数值要素反映现象在一
2020-07-14 22:37:13
10640
原创 数学建模之图论最短路径问题
图论基本概念及如何作图无向图的权重邻接矩阵有向图的权重邻接矩阵狄杰斯特拉算法和贝尔曼福特算法求解最短路径狄杰斯特拉算法模板:visited:是否访问过;distance:最短距离;parent:上一节点;主要思想:确定起点后寻找下一联接点,不断更新最短路径,以未访问过点的最短路径为下一联接点,继续更新,循环直至到终点;缺点:不能处理负权重问题;解决方法:贝尔曼福特算法贝尔曼福特算法负权回路:matlab计算最短路径:[P,d] = shortestpath(G
2020-07-10 21:44:07
3769
原创 建模之数学规划
数学规划定义:数学规划是运筹学的⼀个分⽀,其⽤来研究在给定的条件下(约束条件),如何按照某⼀衡量指标(⽬标函数)来寻求计划、管理⼯作中的最优⽅案,即求⽬标函数在⼀定约束条件下的极值问题。分类:1. 线性规划(Linear programming)如果⽬标函数和和约束条件均是决策变量的线性表达式, 那么此时的数学规划问题就属于线性规划。2. ⾮线性规划(nonlinear programming)当⽬标函数和或者约束条件中有⼀个是决策变量X的⾮线性表达式, 那么此时的数学规划问题就属于⾮线性
2020-07-08 16:15:46
676
1
原创 数学建模之蒙特卡罗模型
蒙特卡罗模型定义:蒙特卡罗⽅法⼜称统计模拟法,是⼀种随机模拟⽅法,以概率和统计理论⽅法为基础的⼀种计算⽅法,是使⽤随机数(或更常⻅的伪随机数)来解决很多计算问题的⽅法。将所求解的问题同⼀定的概率模型相联系,⽤电⼦计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这⼀⽅法的概率统计特征,故借⽤赌城蒙特卡罗命名。原理:由⼤数定理可知,当样本容量⾜够⼤时,事件的发⽣频率即为其概率。PS:蒙特卡罗不是算法,它只是一种方法;蒙特卡罗与计算机仿真;计算机仿真(模拟)早期称为蒙特卡罗⽅法,是⼀
2020-07-08 16:13:58
5312
1
原创 课程表
C++代码:vector<vector<int>>num(numCourses); vector<int>indegree(numCourses); queue<int>que; int i,res=0; for(i=0;i<prerequisites.size();i++) { indegree[prerequisites[i][0]]++; num[prerequisites[
2020-05-17 01:07:47
270
原创 课程表2
C++代码:vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) { vector<vector<int>>num(numCourses); vector<int>indegree(numCourses); queue<int>que; vector<int>nums;
2020-05-17 01:05:43
204
原创 二叉树的最近公共祖先
C++代码:if(root==NULL||root==p||root==q) return root; else { TreeNode*left=lowestCommonAncestor(root->left,p,q); TreeNode*right=lowestCommonAncestor(root->right,p,...
2020-05-03 23:06:13
126
原创 格雷编码
C++代码:vector<int>num; for(int i=0;i<pow(2,n);i++) { num.push_back((i>>1)^i); } return num;i>>1,位运算,右移一个位置。a^b,异或运算,二进制相同为0,不同为1。...
2020-04-18 22:57:15
131
原创 子集
C++代码:vector<vector<int>>num; for(int z:nums) { int s=num.size(); for(int i=0;i<s;++i) { num.push_back(num[i]); num[i].push_back...
2020-04-18 22:52:23
197
原创 只出现一次的数字
C++代码:int i,len=nums.size(),num; sort(nums.begin(),nums.end()); for(i=0;i<len;i+2) { num=nums[i]; if(i==len-1) return nums[len-1]; if(num!=nums[i+1]...
2020-04-07 16:55:57
117
原创 反转字符串
C++代码: stack<char>str; if(s.size()==0) return; for(int i=s.size()-1;i>=0;i--) { str.push(s[i]); } for(int i=s.size()-1;i>=0;i--) { s[i]=str...
2020-04-01 17:37:06
118
原创 通配符匹配
C++代码:int i,j,istar=-1,jstar=-1,num=0; if(s.size()==0&&p.size()==0) return true; else if(s.size()!=0&&p.size()==0) return false; else if(s.size()==0&&a...
2020-03-30 18:13:59
290
原创 加油站
C++代码:int i,j,leave=0,s; s=gas.size(); vector<int>num; if(s==1) { if(gas[0]>=cost[0]) return 0; else return -1; } for(i=0;i<...
2020-03-29 20:30:01
179
1
原创 跳跃游戏
C++代码:if(nums.size()<=1) { return true; } else { int i,end; end=nums.size()-1; for(i=nums.size()-2;i>=0;i--) { if(nums[i]+i&g...
2020-03-28 19:54:26
144
原创 分发饼干
C++代码:int i=0,j=0,res=0; if(g.size()==0||s.size()==0) return 0; sort(g.begin(),g.end()); sort(s.begin(),s.end()); for(;i<s.size();) { for(;j<g.size();) ...
2020-03-27 17:53:50
200
原创 滑动窗口的最大值
C++代码:vector<int>num; vector<int>num1; int i,j,x,y,z,num0; if(k>=nums.size()) { num0=nums[0]; for(i=1;i<nums.size();i++) { if(num...
2020-03-26 17:40:53
112
原创 判断子序列
C++代码:if(s.size()>t.size()) { return false; } int s_size=s.size(),i=0,j=0; for(i=0;i<s.size();i++) { for(;j<t.size();j++) { if(s[i]==t...
2020-03-26 16:41:35
287
原创 设计循环双端队列
C++代码:int*myCircularDeque; int head,end,myCircularDeque_size; int longestsize; /** Initialize your data structure here. Set the size of the deque to be k. */ MyCircularDeque(int k) {...
2020-03-25 22:53:06
110
原创 买卖股票的最佳时机2贪心算法
C++代码:int i,pri=0,num; if(prices.size()<=1) return 0; for(i=0;i<prices.size()-1;i++) { num=prices[i+1]-prices[i]; if(num>0) { pri=pri+...
2020-03-25 18:09:12
329
原创 整数反转
C++代码:int res=0; while(x!=0) { if(res>INT_MAX/10) { return 0; } if(res<INT_MIN/10) { return 0; } else ...
2020-03-24 23:18:09
72
原创 恢复二叉搜索树
C++代码:class Solution {public: TreeNode*firstmis; TreeNode*secondmis; TreeNode*pre; void result(TreeNode*root) { if(root==NULL) { return; } ...
2020-03-24 17:30:05
71
原创 不同的二叉搜索树2
C++代码:vector<TreeNode*>res; if(n<=0) { return res; } else { res=result(1,n); return res; } } vector<TreeNode*>result(int begin,i...
2020-03-23 22:06:43
106
原创 二叉树的中序遍历
C++代码:if(root) { if(root->left) { inorderTraversal(root->left); } num.push_back(root->val); if(root->right) { i...
2020-03-22 00:32:07
150
原创 二叉树的最大深度
C++代码:if(root==NULL) { return 0; } int l=maxDepth(root->left)+1; int r=maxDepth(root->right)+1; return l>r?l:r;递归
2020-03-21 21:46:19
70
原创 逆波兰表达式求值
C++代码:stack<int>num; if(tokens.size()==0) { return 0; } else { for(int i=0;i<tokens.size();i++) { if(tokens[i]=="+"||tokens[i]=="-"||t...
2020-03-20 22:16:06
117
原创 对称二叉树
C++代码:if(root==NULL) { return true; } else { return isittrue(root->left,root->right); } } bool isittrue(TreeNode*l1,TreeNode*l2) { if(l1=...
2020-03-20 16:46:01
64
原创 最小栈
C++代码:MinStack() { } void push(int x) { sta1.push(x); if(sta2.size()==0) { sta2.push(x); } else { if(sta2.top()<x) { sta2....
2020-03-19 22:55:50
57
原创 相同的树
C++代码:if(p==NULL&&q==NULL) { return true; } else if(p==NULL&&q!=NULL) { return false; } else if(p!=NULL&&q==NULL) { return ...
2020-03-19 21:37:11
71
原创 正则表达式匹配
C++代码:if(p.size()==0&&s.size()==0) { return true; } else if(p.size()==0&&s.size()!=0) { return false; } else { bool dp[s.size()+1][...
2020-03-18 22:45:16
72
原创 最长回文子串
C++代码:if(s.size()==0) { return ""; } else if(s.size()==1) { return s; } else { vector<string>str; int i,j,num,len=0; vector&l...
2020-03-17 22:44:11
79
原创 无重复字符的最长子串
C++代码:int i,j,num=0; char a; vector<char>str; if(s.size()==0) { return 0; } else if(s.size()==1) { return 1; } else { for(i=0;i&l...
2020-03-16 23:23:44
87
原创 有效的括号
C++代码:int i; char a; stack<char>str; if(s.size()==0) { return true; } else if(s.size()%2==1) { return false; } else { str.push('0...
2020-03-15 18:15:36
136
原创 最长公共前缀
C++代码:string str; string str1; int a,i,j,b=0,c; if(strs.size()==0) { return ""; } else if(strs.size()==1) { return strs[0]; } else { a=...
2020-03-14 21:10:42
173
原创 罗马数字转整数
C++代码:if(s.size()==0) { return 0; } else if(s.size()==1) { char a=s[0]; int num0; switch(a) { case'I':num0=1;break; cas...
2020-03-13 18:17:56
123
原创 合并k个有序链表
C++代码:if(lists.size()==0) { return NULL; } int i; vector<int>num; for(i=0;i<lists.size();i++) { ListNode*p=lists[i]; while(p!=NULL) {...
2020-03-12 20:15:48
120
原创 删除链表倒数第n个节点
C++代码:int length=0,a=0,b; ListNode*ptr=head; if(head==NULL) { return head; } while(ptr->next!=NULL) { length++; ptr=ptr->next; } if(lengt...
2020-03-11 20:25:30
116
原创 两数之和
C++代码:if(l1==NULL) { return l2; } else if(l2==NULL) { return l1; } else { ListNode*l3=l1; while(l1->next!=NULL&&l2->next!=NUL...
2020-03-10 22:33:12
78
原创 环形链表
C++代码:if(head==NULL) { return false; } else { ListNode*fast=head; ListNode*slow=head; while(fast!=NULL&&fast->next!=NULL) { ...
2020-03-09 21:29:21
126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人