Tag

#算法

20 篇文章

二分查找

在递增或者递减的一列数中,依次用目前区间最中间的数跟target比较,根据比较结果更新区间,再循环这个过程,知道找到最中间数=target或区间长度为0为止

二叉树

二叉树(binary tree)是一种非线性数据结构,代表“祖先”与“后代”之间的派生关系,体现了“一分为二”的分治逻辑。与链表类似,二叉树的基本单元是节点,每个节点包含值、…

分治算法

<u分治(divide and conquer)</u,全称分而治之,是一种非常重要且常见的算法策略。分治通常基于递归实现,包括“分”和“治”两个步骤

FSR的奇怪题目

给你一个数组arr一个权重值k。有一个数m,m的值是1......n,然后针对这个数组你可以进行n-m次删除某个元素的操作,也可以不删除,每删除一个元素需要花费k,针对删除后的新数组,…

滑动窗口

用变量标记窗口的右区间,右区间每次向右挪动一位,验证左区间能否缩小,如果可以就缩小,然后记录此时的长度,维护一个最小长度变量就可以了

基础速通

针对代码,逐行从上到下计算代码一共的操作次数即可。此操作数量中的各种系数、常数项都可以忽略。根据此原则,可以总结出以下计数简化技巧

两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。…

螺旋矩阵

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。…

双指针(移除元素)

如果要在数组中删除符合某特定条件的元素,暴力解法是用一层循环遍历数组,如果符合条件,就开一层循环把后面的元素全部往前移动,然后继续遍历。时间复杂度是O(n^2)

搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法