算法
文章平均质量分 50
xiaososa.
csharp不停进阶中
展开
-
LeetCode 513. 找树左下角的值
树 算法 深搜 广搜原创 2022-06-22 17:03:41 · 96 阅读 · 0 评论 -
LeetCode 1089. 复写零
LeetCode 1089. 复写零原创 2022-06-17 09:47:57 · 63 阅读 · 0 评论 -
LeetCode 523. 数组中的 k-diff 数对
LeetCode 523. 数组中的 k-diff 数对原创 2022-06-16 11:56:10 · 1441 阅读 · 0 评论 -
余弦相似度-C#代码实现
字符匹配之余弦相似度 C#算法实现原创 2022-06-14 16:56:28 · 1450 阅读 · 0 评论 -
LeetCode 1823. 找出游戏的获胜者--约瑟夫环问题
找出游戏的获胜者–约瑟夫环问题 共有 n 名小伙伴一起做游戏。小伙伴们围成一圈,按 顺时针顺序 从 1 到 n 编号。确切地说,从第 i 名小伙伴顺时针移动一位会到达第 (i+1) 名小伙伴的位置,其中 1 <= i < n ,从第 n 名小伙伴顺时针移动一位会回到第 1 名小伙伴的位置。 写了半天竟然没想到队列。。。 游戏遵循如下规则: 从第 1 名小伙伴所在位置 开始 。 沿着顺时针方向数 k 名小伙伴,计数时需要 包含 起始时的那位小伙伴。逐个绕圈进行计数,一些小伙伴可能会被数过不止原创 2022-05-04 09:21:59 · 212 阅读 · 0 评论 -
区域和检索 - 数组可修改 - 线段树的构造
区域和检索 - 数组可修改 给你一个数组 nums ,请你完成两类查询。 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nums元素的 和 ,其中 left <= right 实现 NumArray 类: NumArray(int[] nums) 用整数数组 nums 初始化对象 void update(int index, int val) 将 nums[index] 的值 更新 为 val int原创 2022-04-14 08:32:34 · 220 阅读 · 0 评论 -
滑动窗口模板
算法题应用场景: 关键词: 满足XXX条件(计算结果,出现次数,同时包含) 最长/最短 子串/子数组/子序列 例如:长度最小的子数组 滑动窗口使用思路(寻找最长) 核心:左右双指针(L,R)在起始点,R向右逐位滑动循环 每次滑动过程中 如果:窗内元素满足条件,R向右扩大窗口,并更新最优结果 如果:窗内元素不满足条件,L向右缩小窗口 ——R到达结尾 //最长模板 初始化left,right,result,bestResult While(右指针没有到达结尾) { 窗口扩大,加入right对应元原创 2022-02-20 09:47:32 · 943 阅读 · 1 评论 -
异或 巧用异或性质 ^
今天做LeetCode发现一个比较有趣的性质,做下笔记 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。 请你找出并返回只出现一次的那个数。 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。 输入: nums = [1,1,2,3,3,4,4,8,8] 输出: 2 输入: nums = [3,3,7,7,10,11,11] 输出: 10 解析:利用按位异或的性质,可以得到mid 和相邻的数之间的如下关系,其中 ⊕ 是按位异或运算符: 当原创 2022-02-14 09:29:34 · 183 阅读 · 0 评论 -
二分查找算法
二分查找算法 class Program { static void Main(string[] args) { // 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 16, 17, 18, Console.WriteLine(My2FenFa(new int[19] { 1,2,3,4,5,6,7,8,9,9,11,11,11,11,原创 2021-09-29 08:55:59 · 60 阅读 · 0 评论 -
深度优先搜索的模板
深度优先搜索的模板: void dfs()//参数用来表示状态 { if(到达终点状态) { ...//根据题意来添加 return; } if(越界或者是不符合法状态)//剪枝 return; for(扩展方式) { if(扩展方式所达到状态合法) { ....//根据题意来添加 标记;原创 2021-09-29 08:53:29 · 101 阅读 · 0 评论 -
转载:差分数组
转载自:https://blog.csdn.net/qq_31601743/article/details/105352885 问题背景 如果给你一个包含5000万个元素的数组,然后会有频繁区间修改操作,那什么是频繁的区间修改操作呢?比如让第1个数到第1000万个数每个数都加上1,而且这种操作时频繁的。 此时你应该怎么做?很容易想到的是,从第1个数开始遍历,一直遍历到第1000万个数,然后每个数都加上1,如果这种操作很频繁的话,那这种暴力的方法在一些实时的系统中可能就拉跨了。 因此,今天的主角就出现了——差转载 2021-08-31 09:14:19 · 66 阅读 · 0 评论 -
经典算法--Java版本
算法 1.二分查找算法 二分查找算法(非递归)介绍 前面我们讲过了二分查找算法,是使用递归的方式,下面我们讲解二分查找算法的非递归方式 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找 二分查找法的运行时间为对数时间O(㏒₂n),即查找到需要的目标位置最多只需要㏒₂n步,假设从[0,99]的队列(100个数,即n=100)中寻到目标数30,则需要查找步数为㏒₂100,即最多需要查找7次(26<100<27) 二分查找算法(非递归)代码实现 数组{1,3,原创 2021-03-23 21:45:06 · 255 阅读 · 0 评论 -
常用的查找算法---Java
7.查找算法 查找算法介绍 在Java中,我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 7.1线性查找算法 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】要求: 如果找到了,就提 示找到,并给出下标值。 代码实现 /** * @author xiaososa * @date 2020/12/30 **/ public class SeqSearch { public static vo原创 2021-01-24 11:01:59 · 78 阅读 · 0 评论 -
常用的排序算法
6.排序算法 排序算法的介绍 排序也成排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排序的过程. 排序的分类: 内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序 外部排序法:数据量过大,无法全部加载到内存中,需要借助外部进行排序 常见的排序算法分类(见左图) 算法的时间复杂度 度量一个程序(算法)执行时间的两种方法 事后统计的方法 这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所 得时间的统计量依赖于计算机的原创 2021-01-24 10:58:50 · 121 阅读 · 0 评论