
算法
文章平均质量分 50
hanxiaozhang2018
当你的才华还撑不起你的野心时,那你就应该静下心来学习!
展开
-
LeetCode-数组-No45缺失的第一个正数跳跃游戏II
给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。原创 2024-07-06 10:00:01 · 248 阅读 · 0 评论 -
LeetCode-数值-No49字母异位词
是由重新排列源单词的所有字母得到的一个新单词。给你一个字符串数组,请你将。可以按任意顺序返回结果列表。原创 2024-06-29 17:06:22 · 452 阅读 · 0 评论 -
LeetCode-数组-No48旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。原创 2024-06-28 22:34:30 · 362 阅读 · 0 评论 -
LeetCode-数组-No41缺失的第一个正数
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) ,并且只使用常数级别额外空间的解决方案。原创 2024-06-27 07:00:00 · 303 阅读 · 0 评论 -
LeetCode-数组/回溯-No40组合总和II
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。原创 2024-06-26 07:15:00 · 409 阅读 · 0 评论 -
LeetCode-数组/回溯-No39组合总和
给你一个无重复元素的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式返回。1. 数组排序:将数组排序,可以推论出:如果 sum > target 或 sum = target时, sum + next元素 > target 一定成立,所以可以结束循环。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。原创 2024-06-25 05:11:52 · 294 阅读 · 0 评论 -
LeetCode-数组-No35搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。原创 2024-06-22 07:45:00 · 213 阅读 · 0 评论 -
LeetCode-数组-No33搜索旋转排序数组
整数数组 nums 按升序排列,数组中的值互不相同。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。整体思路是使用二分查找法的变种。例如: [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2]。原创 2024-06-20 07:30:00 · 246 阅读 · 0 评论 -
LeetCode-数组-No15 三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。原创 2024-06-19 07:30:00 · 301 阅读 · 0 评论 -
LeetCode-数组-No1两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。原创 2024-06-18 07:45:00 · 313 阅读 · 1 评论 -
Kafka中的时间轮算法
两种解决方案:使用增加轮次/圈数的概念(Netty 的 HashedWheelTimer )、使用多层时间轮的概念 (Kafka 的 TimingWheel)。1.1 DQ插入和删除操作都是O(log n),时间轮算法的插入和删除操作都是 O(1) -> 底层是任务的添加和删除是基于链表实现的。Kafka时间轮是层次时间轮,并且支持时间轮复用。秒针走的一圈、分针走的一圈和时针走的一圈就形成了一个多层时间轮的关系。1.使用DelayQueue推进时间轮往前走,并且避免时间轮的空推进。-> 非常不错的文章。原创 2024-06-15 08:47:21 · 1258 阅读 · 0 评论 -
动态规划算法设计步骤
首先,需要确定问题的状态。状态可以表示为一个包含所有可能决策的变量的集合。例如,对于一个背包问题,状态可以表示为一个包含所有物品和它们的重量的数组。原创 2024-06-14 06:14:30 · 352 阅读 · 0 评论 -
数据结构十问十答
前言:数据结构主要说的是数据存储的结构,这门课在大学学习的时候,我就感觉非常晦涩难懂,每种数据结构都非常抽象,学习起来也算有些吃力,等到了工作之后,发现用到的地方还不少,又捡起来重新学习了一下大学的教材。下面,我就先介绍一下数据结构的基础知识:正文:Q&A1:数据结构的三个方面:数据的逻辑结构、数据的存储结构、数据的运算Q&A2:什么是线性表?概念:由n(n>=0)个类型相同的数据元素a0,a1,…an-1组成的有限序列。线性表分类:顺序表和链表(单链表原创 2020-08-08 11:01:56 · 501 阅读 · 0 评论 -
算法题:无序数组中,找出两个元素相加等于N的所有组合?
最近看到一道算法题,我利用业务时间分析一下处理方法,如果有更简单的方法,大家可以交流一下!方法一:我刚看到这道题的时候,也没有特别好的方法,只想到了最笨的做法,用两个for循环去解决这道题,第一个循环取第一个数,第二个循环取第二个数,如果两个数相加等于N,就是符合条件的一个组合,然后以此类推,找出所有的组合,具体的实现方法如下: /** * 最笨的方法:时间复杂度是o(n...原创 2020-04-11 09:56:43 · 2310 阅读 · 2 评论