
算法
一做就废
一般很久之前文章的评论不回复,因为我会不记得,不想重新去捋思路。
私信不回复,有事请留言
展开
-
leetcode 子序列 子数组 子串区别
1 子序列 是不要求连续的2 子数组和子串一样,是需要连续的但是无论是子序列和子数组,他们都可以看作是原数组的一部分,而且不会改变原来数组中元素的相对元素。(和一些题目求是否存在数组元素或者数组元素排列区别)例题:01串找最长的01出现次数相等的子串,通过把‘0’当成-1,‘1’当成1,可以转化为最长的sum为0的子数组问题这个题目,可以看看525. 连续数组325. 和等于 k 的最长子数组长度比较奇怪的是我最先看到这题是在一个面经里,楼主描述的是子序列,而不是子数组,不知道原原创 2020-09-07 15:43:04 · 2081 阅读 · 0 评论 -
单调栈 Leetcode 合集
1给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。示例:输入: [2,1,5,6,2,3]输出: 10来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-rec...原创 2020-08-31 15:53:19 · 271 阅读 · 0 评论 -
LeetCode684. 冗余连接 并查集
在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, ..., N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v],满足u < v,表示连接顶点u和v的无向图的边。返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最后出现的边。答案边[u, v] 应满足相同的格式u < ...转载 2020-08-30 10:08:03 · 154 阅读 · 0 评论 -
剑指 Offer 41. 数据流中的中位数
这道题以前就刷过,感觉一直稀里糊涂的,导致再做一次的话,即时知道要用两个堆,以及一些思路,细节还是处理不好。方法细节不一定是最好的,但是下面这个思路是我自己可以理解且不会忘记的,记录一下。————————————如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4]的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.原创 2020-08-28 14:48:07 · 213 阅读 · 0 评论 -
集合中的hashCode和equals方法
在做全排列的题目的时候,有一种是原数组有重复数字,这样会造成用回溯后得到的结果有重复数组,为了去重,可以用set存放结果。47. 全排列 II给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]————————————————————————————————————————————————————set添加元素时,第一比较hashCode,第二比较equals方法如果用原创 2020-05-28 08:23:10 · 520 阅读 · 0 评论 -
大数求余解法 循环解法/快速幂解法
大数求余解法:作者:jyd链接:https://leetcode-cn.com/problems/jian-sheng-zi-ii-lcof/solution/mian-shi-ti-14-ii-jian-sheng-zi-iitan-xin-er-fen-f/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。...转载 2020-05-10 07:44:44 · 691 阅读 · 0 评论 -
遗传算法简单求函数最值实例
例:求下述二元函数的最大值:(1) 个体编码遗传算法的运算对象是表示个体的符号串,所以必须把变量 x1, x2 编码为一种符号串。本题中,用无符号二进制整数来表示。因 x1, x2 为 0 ~ 7之间的整数,所以分别用3位无符号二进制整数来表示,将它们连接在一起所组成的6位无符号二进制数就形成了个体的基因型,表示一个可行解。例如,基因型 X=101110 所对应的表现型是:x=[ 5,6 ]。个...转载 2020-05-09 10:49:50 · 5122 阅读 · 0 评论 -
二叉搜索树 算法题合集
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。这个题目注意的点:1 先找到根节点,左子树在前面,右子树在其后,然后递归判断。2 如果是空数组,返回的应该是true,我先以为空数组是false,后来回想起二叉搜索树的定义:可以是一棵空树。原创 2020-05-08 15:03:51 · 509 阅读 · 0 评论 -
遗传算法调参 参数设置
1https://www.cnblogs.com/helloHKTK/p/9772778.html遗传算法(Genetic algorithm)遵循适者生存、优胜劣汰的法则,即寻优过程中保留有用的,去除无用的。在科学和生产实践中表现为在所有可能的解决方法中找出最符合该问题所要求的条件的解决方法,即找出一个最优解。遗传算法有4个参数需要提前设定,一般在以下范围内进行设置:(1)群体大小...转载 2020-05-03 10:29:01 · 53267 阅读 · 7 评论 -
C++ O(1)时间删除单链表某节点 C++/Java传参问题
算法题:O(1)时间删除单链表中某节点顺便复习一下C++/Java的传参问题。普通的删除单链表某节点,需要遍历找到该节点的前驱节点,时间复杂度为O(n),O(1)时间复杂度的算法如下:(1)如果该链表只有一个节点,则删除该节点(2) 如果删除的节点是尾节点,则遍历找到倒数第二个节点,再删除尾节点。(3) 如果该链表不止一个节点,删除的也不是尾节点,则将要删除的节点的...原创 2020-04-29 19:02:49 · 337 阅读 · 0 评论 -
算法时间复杂度的三种求法--代入法、递归树法、主方法
笔记落学校了,慢慢更新。原创 2020-04-29 09:34:46 · 1733 阅读 · 0 评论 -
链表算法题合集
剑指offer的链表算法题合集原创 2020-04-29 08:33:33 · 252 阅读 · 0 评论 -
斐波那契数列的应用
1 斐波那契数列的几种实现方法2 青蛙跳台阶问题3 格子覆盖问题原创 2020-04-08 08:57:17 · 571 阅读 · 0 评论 -
Leetcode 剑指offer题03 Java实现 找出数组中重复的数字
找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3原创 2019-09-20 13:05:26 · 253 阅读 · 0 评论 -
Mahout推荐算法API详解
原文:http://blog.fens.me/mahout-recommendation-api/注意:这篇文章比较早,我自己实验的时候,用的Mahout 0.9,SlopeOne算法已经被移除了The following algorithms that were marked deprecated in 0.8 have been removed in 0.9: Switched LDA implementation from Gibbs Sampling to Collapsed Var转载 2019-10-20 21:04:31 · 427 阅读 · 0 评论 -
机器学习 Kmeans算法
今天来聊聊聚类分析中最基础的一个算法:Kmeans。Kmeans思想及算法流程: 首先Kmeans是一种无监督的聚类算法。对于给定的样本集,按照样本之间的距离大小,将样本划分为K个簇,让簇内的点尽量紧密的连接在一起,而让簇间的距离尽量的大。版权声明:本文为优快云博主「数据小白的进阶之路」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明...转载 2019-10-20 21:09:52 · 236 阅读 · 0 评论 -
Mahout之推荐算法基本实例
Mahout中主要核心的三大算法为推荐,聚类及分类算法,今天就最基本的推荐算法做总结,推荐中常用的两个推荐算法是”user_based”和”item_based”,前者主要通过和你兴趣相似的人来发现新的你感兴趣的东西,而后者则是发现一些和你所喜欢的事物相似的事物。此外,还有一种基于“contend_based”的推荐算法,它是根据事物所拥有的元数据出现进行事物的推荐,例如,如果你喜欢的电影是斯皮尔...转载 2019-10-20 09:35:48 · 738 阅读 · 0 评论 -
国王发金币问题-Java实现
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。请计算在前K天里,骑士一共获得了多少金币。这...原创 2019-10-19 22:12:50 · 2993 阅读 · 0 评论 -
分治法-求众数问题-Java实现
没有解决的问题是,如果有重复众数,怎么输出不同的众数的问题,干脆就设定不准出现重复的众数了分析有时间再写源代码:源码原创 2019-09-19 21:03:20 · 1475 阅读 · 1 评论 -
动态规划-求最长公共子序列LCS长度-输出所有的最长公共子序列LCS-Java实现
题目:给定两个序列X={x1,x2,…xm},Y={y1,y2,…yn},找出X和Y的最长公共子序列。分析:1 最长公共子序列概念实现明确一个点就是,子序列是一个序列中去掉若干元素后得到的序列,也就是说子序列的元素下标是递增的就行,不需要在原序列中连续。最长公共子序列,显而易见就是序列X和Y都有的最长的子序列。2 BruteForce 暴力求解法对于序列X的所有长度不超过Y的子序列,都...原创 2019-10-19 10:54:33 · 2623 阅读 · 0 评论 -
递归-Java实现常见递归算法练习-Java实现汉诺塔/斐波那契数列/阶乘
算法课练习存下档源码:斐波那契数列汉诺塔阶乘原创 2019-10-19 10:32:55 · 1014 阅读 · 1 评论 -
动态规划-最优二叉搜索树
一.二叉搜索树定义(1)或为一棵空树(2)或者是具有以下性质的一棵二叉树 --若左子树不为空,则左子树的结点值均小于根结点的值。 --若右子树不为空,则右子树的结点值均大于根结点的值。 --左右子树均为二叉搜索树。(a)和(b)均为二叉搜索树,k表示实际存在的结点,d表示虚结点。(k1<k2<k3<k4<...原创 2019-10-15 21:52:54 · 2028 阅读 · 0 评论 -
Timsort分析- JDK源码分析-自己实现简易TimSort/TimSort 归并排序 堆排序 快速排序 时间对比
一 简单介绍Timsort是一个最好时间复杂度可以达到O(n),最坏为O(nlgn),平均为O(nlgn)的算法。Java里基本数据类型是用快排的,但是对于引用类型的排序是Timsort和二分插入排序结合的。当数据大小<32的时候用二分插入排序,>32时候用TimSort。TimSort是一个插入排序和归并排序结合的算法,我们知道归并排序,把一个序列分成两半,分别排序成有序的子...原创 2019-10-10 22:24:59 · 752 阅读 · 0 评论 -
算法-求逆序对数目-归并排序-Java实现
题目:求一个数组中逆序对的数目。input:输入一个数组。output:输出逆序对数目和逆序对。package pers.lane.algorithm.work;import java.util.Scanner;//求解方法1 归并排序过程中求解public class inversion {static int count=0;//记录逆序对个数static in...原创 2019-09-25 12:43:43 · 752 阅读 · 0 评论 -
算法-不无聊序列-Java实现
分析有时间补出来源码原创 2019-09-24 12:59:45 · 354 阅读 · 0 评论