
算法
WhereIsMyChair
努力吸收新知识
展开
-
机器学习的十大经典算法
-C4.5(分类)C4.5算法详解(非常仔细)_张张的专栏-优快云博客_c4.5算法 信息熵:某件事情发生的不确定性度,-plog2(p),信息熵越大,不确定性越大 类别信息熵:类别信息熵表示的是所有样本中各种类别出现的不确定性之和,公式:label_info =-p1log2(p1)-p2log2(p2)-p3log2(p3),(p1+p2+p3=1) 属性信息熵:每个属性的信息熵相当于一种条件熵。他表示的是在某种属性的条件下,各种类别出现的不确定性之和。属性的信息熵越大.原创 2021-09-29 18:04:31 · 326 阅读 · 0 评论 -
LSTM模型后增加Dense(全连接)层的目的是什么?
https://www.zhihu.com/question/324942751/answer/692299327转载 2021-06-01 22:53:12 · 5677 阅读 · 0 评论 -
使用LSTM进行文本情感分析
NLP入门(十)使用LSTM进行文本情感分析 https://www.jianshu.com/p/b5f03ece4e50转载 2021-05-31 22:43:33 · 343 阅读 · 0 评论 -
LeetCode 494 : 数学公式转化为0-1背包问题
解题思路这个题所有 正数 之和居然是 固定的数 所有负数 之和 也居然是 固定的数; a: 所有取正号的数之和和, b:所有取负号的数之,和;a+b = sum_nums【数组元素之和】, a-b = 目标值,代码class Solution {public: int findTargetSumWays(vector<int>& nums, int S) { int n = nums.size(), sum_nums = 0; ...原创 2021-03-30 17:28:14 · 198 阅读 · 0 评论 -
leetcode 10. 正则表达式匹配
解题思路dp[0][0] = true; //主串前0个字符(空串) 和 模式串 前0个字符(空串) 能够匹配for(int j = 2; j <= n; j++) { if(p[j - 1] == '*' && j >= 2) dp[0][j] = dp[0][j - 2]; //把主串当做空串的时候和模式串中带有*的比较,主要是由于*可以吃掉一部分主串 所以也有可能匹配上 比如空串 和 "a*b*c*"是匹配的}(一)当前字符匹...原创 2021-03-26 19:14:11 · 210 阅读 · 0 评论 -
https://leetcode-cn.com/problems/single-number-ii/
解题思路https://leetcode-cn.com/problems/single-number-ii/solution/zi-dong-ji-wei-yun-suan-zui-xiang-xi-de-tui-dao-gu/{ int n, v, max_value = 0, totalVol = 0, tempVal = 0; cin>>n>>v; int vol[n], val[n]; int dp[n+1][v+1]; memset(dp, 0, sizeof(dp)); for(int i ...原创 2021-03-14 11:31:27 · 94 阅读 · 0 评论 -
132. 分割回文串 II
哇我突然明白了一点,关于动态规划,需要看他的前后依赖关系来确定他是从上往下还是从前往后或者倒过来。例如说: rs[i][j] = (i+1==j||rs[i+1][j-1]==1)&&s[i]==s[j]?1:rs[i][j-1] + 1;//显然rs[i][j]依赖rs[i+1][j-1];也就是依赖左下角的值,所以每行从下往上计算,每列从前往后计算显然rs[i][j]依赖rs[i+1][j-1],也就是依赖左下角的值,所以每行从下往上计算,每列从前往...原创 2021-03-13 14:17:41 · 110 阅读 · 0 评论 -
2021-03-12
感觉还是不太清晰:动态规划https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iii/解题思路对于每个价格,有多重选择: //1.如果还没有买,可以选择买入或者观望;这种情况不能卖出 //2.如果已经买了,可以选择卖出或者观望; //3.如果已经卖了,可以选择再次买入或者观望; //4.如果再次买了,可以选择卖出或者观望;代码class...原创 2021-03-12 19:49:36 · 98 阅读 · 0 评论 -
2021-03-12
120. 三角形最小路径和难度中等709给定一个三角形triangle,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点在这里指的是下标与上一层结点下标相同或者等于上一层结点下标 + 1的两个结点。也就是说,如果正位于当前行的下标i,那么下一步可以移动到下一行的下标i或i + 1。示例 1:输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]输出:11解释:如下面简图所示: 2...原创 2021-03-12 10:20:33 · 108 阅读 · 0 评论 -
2021-03-10
牛客网:代理服务器 切换次数//原题链接:https://www.nowcoder.com/questionTerminal/1284469ee94a4762848816a42281a9e0#include <cstring>#include <iostream>#include <set>using namespace std;//原题链接:https://www.nowcoder.com/questionTerminal/1284469ee94a.原创 2021-03-10 20:28:20 · 99 阅读 · 0 评论 -
dfs例题 130. 被围绕的区域
dfs例题https://leetcode-cn.com/problems/surrounded-regions/:130. 被围绕的区域给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。示例 1:输入:board = [["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]输出:[["X原创 2021-03-10 11:43:10 · 395 阅读 · 0 评论 -
并查集两个算法
没有什么是连续写几遍搞不定的算法模板1.我终于自己写出来了并查集 ,胜利胜利啊,开心解题思路如果两个点联通,就是1:isConnected.at(i).at(j)==1 成立,就合并,其余的就是记住并查集模板,比较容易出错的地方在于: int findFather(int x){ if(father[x] == x) return x; father[x] = findFather(father[x]);//这个地方是要寻找x的父节点的父节点,而不.原创 2021-03-10 00:09:32 · 144 阅读 · 0 评论 -
并查集模板
带路径压缩的并查集模板作者:cornerCao链接:https://www.acwing.com/blog/content/205/来源:AcWing著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。vector<int> father;void init(int x){//防止father是空的数组 x是元素个数 for(int i = 0; i < x; i++){ father.push_back(i); }}转载 2021-03-09 22:02:31 · 115 阅读 · 0 评论 -
二叉搜索树生成
原题95. 不同的二叉搜索树 II难度中等800给定一个整数n,生成所有由 1 ...n为节点所组成的二叉搜索树。示例:输入:3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ ...原创 2021-03-08 16:45:01 · 609 阅读 · 0 评论 -
基于用户的协同过滤推荐算法
collaborative-filtering-recommendationcollaborative filtering recommendation description and implementaion基于用户的协同过滤推荐算法基本思路:选取某个用户A的具有相似品味的邻居用户集合, 从邻居用户集合的历史评分以及用户A的历史评分综合考虑预测用户A给其未评价过的项目的评分结果, 选取预测分大于指标的项目推荐给用户A.基本问题:1.选择的查找相似用户用到的算法: k近邻算法、原创 2021-03-07 23:48:28 · 939 阅读 · 0 评论 -
基于用户的协同过滤推荐算法
------基于用户的协同过滤推荐算法-------基本思路: 选取某个用户A的具有相似品味的邻居用户集合, 从邻居用户集合的历史评分以及用户A的历史评分综合考虑预测用户A给其未评价过的项目的评分结果, 选取预测分大于指标的项目推荐给用户A.1.选择的查找相似用户用到的算法: k近邻算法、皮尔森相关系数法 (1)皮尔逊相关系数是余弦相似度在维度值缺失情况下的一种改进: https://www.cnblogs.com/charlesblc/p/8...原创 2021-03-07 12:47:31 · 464 阅读 · 0 评论 -
学习协同过滤推荐算法和svd
推荐算法:讲得超级好!!!https://www.bilibili.com/video/BV12t411a7dV?t=6svd讲解:https://www.bilibili.com/video/BV1mx411E74T?p=6&spm_id_from=pageDriver推荐算法:svd:原创 2021-03-05 22:52:50 · 205 阅读 · 0 评论 -
区间贪心算法
题目链接http://codeup.hustoj.com/problem.php?cid=100000584&pid=0问题 A: 看电视时间限制 :1.000sec内存限制 :32 MB题目描述暑假到了,小明终于可以开心的看电视了。但是小明喜欢的节目太多了,他希望尽量多的看到完整的节目。现在他把他喜欢的电视节目的转播时间表给你,你能帮他合理安排吗?输入输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示小明喜欢的节目的总数...原创 2021-03-05 11:24:43 · 112 阅读 · 0 评论 -
回溯解决重复元素子集问题 LeetCode 90. 子集 II
90. 子集 II给定一个可能包含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]代码运行结果:#include <stdio.h>#include <cstring>#include <iostream>#include <queue&g...原创 2021-03-02 18:36:15 · 205 阅读 · 0 评论 -
pat1004 counting leaves
1004 Counting Leaves (30 分)A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child.Input Specification:Each input file contains one test case. Each case starts with a line containing0&..原创 2021-03-01 18:13:02 · 116 阅读 · 0 评论 -
拒绝懒惰18
位运算还是要学习一下//位运算实例void methodFroBinary(){ int a = 1, b = 2, c = 4, d = 7; cout<<(c>>1)<<endl;//输出2 向右移动1位 cout<<(a&b)<<endl;//输出0 位与运算 cout<<(a|b)<<endl;//输出3 位或运算 cout<<.原创 2021-02-25 16:13:23 · 90 阅读 · 0 评论 -
拒绝懒惰day17
写LeetCode昨天不会的两个题,用到单调栈的思路。1.柱状图中最大矩形:class Solution {public: int largestRectangleArea(vector<int>& heights) { int rs = 0, j = heights.size(); int high[j+2]; high[0] = 0; high[j+1]=0; for(int index = 1; index < j原创 2021-02-24 18:25:09 · 114 阅读 · 0 评论 -
拒绝懒惰day16
终于写出来昨天的LeetCode题了:看了题解distance实在是太妙了!C++滑动窗口解题思路此处撰写解题思路代码class Solution { public static String minWindow(String s, String t) { int minL = 0, minR = s.length()+1,l = 0, r = 0, slen = s.length(), tlen = t.length(), distance=0;原创 2021-02-22 14:44:53 · 117 阅读 · 0 评论 -
day15
写复试上机题2020,E不会原创 2021-02-22 14:40:35 · 79 阅读 · 0 评论 -
拒绝懒惰day15
80. 删除排序数组中的重复项 IIclass Solution {public: int removeDuplicates(vector<int>& nums) { int index = 0; for(int i : nums){ if(index<2||i>nums[index-2]){ nums[index++] = i; }原创 2021-02-20 23:56:43 · 104 阅读 · 0 评论 -
拒绝懒惰day14
学习布隆过滤器相关原理:主要是基于hashmap和位图表示某个字符串是否存在于位图中,其判断不存在的,一定不存在,但判断存在的可能不存在,所以有误判率,而且误判率不可能为0;写回溯的题,比较简单。...原创 2021-02-20 09:07:13 · 84 阅读 · 0 评论 -
day13
上午写了算法?写了荷兰旗问题,两种思路,推荐第一种,双指针:标记最小值的最右端,以及最大值的最左端,然后再从左边往右边扫描。遇到小于1的,移动指针low++,当前值nums[i]与最小值的最右端nums[low]交换,当前指针i指向low+1;遇到大于1的,移动指针high--,当前值nums[i]与最大值的最左端nums[high]交换,当前指针i指向high-1;否则,i++;一直循环直到i==high;class Solution {public: void原创 2021-02-18 23:43:22 · 104 阅读 · 0 评论 -
拒绝懒惰day11
牛顿迭代法:主要是应用泰勒展开求解函数零点; 主要公式: 其图: ,所以当f(x)=x^2-a时,, 故:,也就是: 所以才有核心代码:i=i/2+x/i/2,这里x相当于原函数的a, i相当于x2,x3,....; 代码如下class Solution {public: int mySqrt(int x) { int i = x; while(i>0&&x/i<i){ i = i/2 + x/原创 2021-02-16 18:00:03 · 108 阅读 · 3 评论 -
leetcode 65 有效数字
表驱动法while(1)L4发布于2019-06-1022.9k精选JavaJavaScript本题可以采用《编译原理》里面的确定的有限状态机(DFA)解决。构造一个DFA并实现,构造方法可以先写正则表达式,然后转为 DFA,也可以直接写,我就是直接写的,虽然大概率不会是最简结构(具体请参考《编译器原理》图灵出版社),不过不影响解题。DFA 作为确定的有限状态机,比 NFA 更加实用,因为对于每一个状态接收的下一个字符,DFA 能确定唯一一条转换路径,所以使用简单的表驱动的一些方法就可以实...转载 2021-02-16 00:04:55 · 139 阅读 · 0 评论 -
拒绝懒惰day6
上午上午参加LeetCode周赛,只完成了两道题中午学习机器学习,mooc机器学习应用课程,https://www.icourse163.org/course/BIT-1001872001;安装一些python机器学习相关依赖库;书写n皇后问题回溯代码。晚上...原创 2021-02-07 16:17:40 · 113 阅读 · 0 评论 -
LeetCode 51.N 皇后
51. N 皇后难度困难744n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个不同的n 皇后问题的棋子放置方案,该方案中'Q'和'.'分别代表了皇后和空位。回溯,清楚计算规则就会nearbyL1发布于1 分钟前1回溯解题思路此处撰写解题思路代码class Solution { List<List&...原创 2021-02-07 16:10:54 · 97 阅读 · 0 评论 -
拒绝懒惰day5
时段 内容 上午 重复数字全排列,先排序,再考虑剪枝丫 中午 完成其他算法 晚上 尝试写n皇后问题,没写出来,今天继续原创 2021-02-07 10:09:40 · 101 阅读 · 4 评论 -
拒绝懒惰day4
时段 内容 上午 学习剪枝,先排序,再去掉重复的 中午 没学,休息 晚上 学习矩阵旋转原创 2021-02-06 00:04:26 · 101 阅读 · 0 评论 -
拒绝懒惰day3
时段 内容 白天 一个关于贪心算法的题:我应该想到这个大佬说的话,选择跳的最远的那条路,一定包含跳的近的所有路,所以局部最优可以得到全局最优,因此可以优化我的算法: public static int jumpFrom(int[] nums, int i, int count) { int rs = nums.length-1; if(i>=rs){ ...原创 2021-02-04 15:56:50 · 107 阅读 · 0 评论 -
5665. 从相邻元素对还原数组
代码有点复杂,思路就是用HashMap存放邻接关系,然后直接找出起始点,依次取nearbyL1发布于3 小时前9哈希表解题思路此处撰写解题思路代码class Solution { public static int[] restoreArray(int[][] adjacentPairs) { int size = adjacentPairs.length; int []rs = new int[size +1]; final int start = 0,...原创 2021-01-31 20:30:51 · 179 阅读 · 0 评论 -
LeetCode 37. 解数独
37. 解数独难度困难编写一个程序,通过填充空格来解决数独问题。一个数独的解法需遵循如下规则:数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。空白格用'.'表示。一个数独。答案被标成红色。提示:给定的数独序列只包含数字1-9和字符'.'。 你可以假设给定的数独只有唯一解。 给定数独永远是9x9形式的。-------------------------...原创 2021-01-28 14:22:49 · 146 阅读 · 0 评论 -
LeetCode 36. 有效的数独
判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用'.'表示。示例1:输入:[ ["5","3",".",".","7",".",".",".","."], ["6",".",".","1","9","5",".","....原创 2021-01-27 09:12:09 · 182 阅读 · 0 评论 -
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [],原创 2021-01-26 10:09:22 · 117 阅读 · 0 评论 -
旋转矩阵
旋转矩阵相关给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。示例1输入[[1,2,3],[4,5,6],[7,8,9]]输出[1,2,3,6,9,8,7,4,5]class Solution {public:bool inRange(int x, int k, int y){ return x<=k&&k<y; }vector<int> spiralOrder(vector<vect原创 2021-01-24 18:26:57 · 191 阅读 · 0 评论