数据结构和算法集锦
文章平均质量分 68
讲解重要经典数据结构与算法,整合大厂算法面试题与算法网站(如leetcode)
Xd聊架构
CSDN博客专家,Java领域优质创作者,任大厂架构师,专注Java、云原生、大数据领域
展开
-
力扣leetcode算法-搜索插入位置
思路及算法考虑这个插入的位置 pos,它成立的条件为:其中 nums 代表排序数组。由于如果存在这个目标值,我们返回的索引也是 pos,因此我们可以将两个条件合并得出最后的目标:「在一个有序数组中找第一个大于等于 target 的下标」。问题转化到这里,直接套用二分法即可,即不断用二分法逼近查找第一个大于等于 target 的下标 。下文给出的代码是笔者习惯的二分写法,ans 初值设置为数组长度可以省略边界条件的判断,因为存在一种情况是 target 大于数组中的所有数,此时需要插入到数组长度的位置。复杂原创 2022-06-23 09:53:32 · 7468 阅读 · 5 评论 -
力扣leetcode算法-第一个错误的版本
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。思路及算法因为题目要求尽量减少调用检查接口的次原创 2022-06-23 09:45:12 · 7396 阅读 · 0 评论 -
力扣leetcode算法-二分查找
在升序数组 nums 中寻找目标值 target,对于特定下标 i,比较 nums[i] 和 target 的大小:基于上述事实,可以在有序数组中使用二分查找寻找目标值。二分查找的做法是,定义查找的范围[left,right],初始查找范围是整个数组。每次取查找范围的中点mid,比较nums[mid] 和target 的大小,如果相等则mid 即为要寻找的下标,如果不相等则根据 nums[mid] 和target 的大小关系将查找范围缩小一半。由于每次查找都会将查找范围缩小一半,因此二分查找的时间复杂度是原创 2022-06-23 09:39:54 · 8817 阅读 · 0 评论 -
NLP自然语言处理-余弦相似性计算文章/文本/字符串雷同率
文章目录前言一、理论知识1.分词2.列出所有的词3.计算词频4.写出词频向量5.计算相似度二、java开发样例1.pom.xml2.相似度计算代码结尾前言计算文章/字符串的相似度有多种算法,本文将采用java+jieba/hanlp分词进行余弦相似性计算。一、理论知识余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。为了简单起见,我们先从句子着手。句子A:我原创 2022-02-09 17:25:56 · 11985 阅读 · 36 评论 -
算法-一维数组的动态和
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、题目描述二、解题思路结尾一、题目描述给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1,原创 2021-05-26 15:17:47 · 10898 阅读 · 35 评论