自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 2670.找出不同元素数目差数组

分别确定各位置左右两段数组的不同元素数目,直接求其差即可。时间复杂度T(n)=O(n)空间复杂度S(n)=O(n)

2024-01-31 19:13:32 400

原创 69.x的平方根

用二分查找法去搜索合适的平方根,由于只要取整,只要找到临界状态为自身数值^2小于等于目标值x且下一个数值^2大于目标值x,即可得到平方根的整数部分。时间复杂度T(n)=O(logn)空间复杂度S(n)=O(1)

2024-01-30 19:21:16 358 1

原创 67.二进制求和

两字符串对应位置字符先转成整数型再和上一位进位求和,模2所得即为本位答案,除2所得即为向高位的进位,若一字符串已经结束,则只要将剩余字符串的对应数据与上一位进位不断相加得到本位答案,并产生新的进位,直到所有字符串数据运算结束即可。时间复杂度T(n)=O(n)空间复杂度S(n)=O(1)

2024-01-30 16:15:01 358 1

原创 66.加一

空间复杂度S(n)=O(1)——最坏情况是会产生新数组并覆盖旧数组,不过也只有一种情况(即9999999999……主要分两种情况,分别是进位会使得整体数组长度加1,和没有进位或进位不会使得整体数组长度加1。时间复杂度T(n)=O(n)

2024-01-30 10:49:17 465 2

原创 58.最后一个单词的长度

从后往前遍历字符串,从第一个不是空格的位置开始计数,直到下一个空格之前或一直到字符串首部的非空字符数量,即为最后一个单词的长度。时间复杂度T(n)=O(n)空间复杂度S(n)=O(1)

2024-01-30 10:12:07 326 1

原创 35.搜索插入位置

时间复杂度T(n)=O(logn)空间复杂度S(n)=O(1)典型的二分查找法来定位。

2024-01-29 21:28:34 564

原创 28.找出字符串中第一个匹配项的下标

使用简单的蛮力匹配算法(BF算法)实现模式匹配,设置两个工作指针,分别指向主串和模式串,如果所指两个元素相等则后移两个指针,否则主串指针回溯到i-j+1的位置,同时模式串指针回溯到模式串起始位置,当模式串指针遍历完模式串则说明在主串中找到模式串,返回i-j即起始匹配位置,否则当主串指针遍历完主串仍未找到模式串则返回-1。纯脑残地调用函数即可,因为本题的描述和indexOf()的函数描述一致,直接用就行了。时间复杂度T(n)=O(m*n)——m、n分别是主串和模式串的长度。空间复杂度S(n)=O(1)

2024-01-29 21:14:44 398

原创 27.移除元素

可以观看本人上一个发的博客“26.删除有序数组中的重复项”,思路一致。时间复杂度T(n)=O(n)空间复杂度S(n)=O(1)

2024-01-28 21:31:56 323

原创 26.删除有序数组中的重复项

题目所给的是一个非严格递增排列的数组,即相同数据是在一起的,这就让问题很简单了,可以设置一个哨兵时刻记录有效位,并用一个工作指针遍历整个数组,遇到不重复的数组元素就移动其到有效位,同时更新有效位。最终得到的有效位加1就是去重后的数组长度。时间复杂度T(n)=O(n)空间复杂度S(n)=O(1)

2024-01-28 21:19:17 346 1

原创 365.水壶问题

只给了两个容器,假设容量分别是x和y,用这两个容器来凑目标容量z的水。容器不是量器,只可能有以下几种情况,分别是向某容器加满水,从某容器倒空水,某容器往另一个容器倒水直到自己倒空或者另一个容器被倒满,最终得到的目标容量的水其实就是经过以上几种操作之后两个容器内的水的总量。无论是哪种操作移动的水的容量总是当中一个容器的容量的整数倍,列出一个公式就是ax+by=z,z只要是x和y的最大公约数的整数倍就可以满足条件。时间复杂度T(n)=O(log(min(x,y)))——取决于计算最大公约数所使用的辗转相除法。

2024-01-28 19:44:33 489

原创 2861.最大合金数

用二分法的思想,极端情况分为两种,下界是最大合金数是1,上界是最大合金数是预算可以买的金属数量加上库存的金属数量之和,每次对比实际花费是否超过预算花费,若没有超过,则说明此时可以生产该份数的合金,则可以更新下界,否则更新上界,当下界超过上界,此时的mid即是最大可以生产的合金份数。时间复杂度T(n)=O(nklogc)——c是答案的范围。时间复杂度T(n)=O(ckn)——c是答案的范围。空间复杂度S(n)=O(1)空间复杂度S(n)=O(1)

2024-01-28 13:02:18 356

原创 21.合并两个有序链表

由于题目所给链表结点定义当中并没有关于头结点的描述,可以知道参数是两个未设置头结点的两个有序链表,那么为了方便编写代码,可以自己给结果链表定义一个空的头结点,然后用一个工作指针不断查找待排序的两个有序链表当中值较小的链表结点并将其插入结果链表表尾,不断将工作指针往后移动,同时指向头结点的指针是不能移动的,合并完之后,若有链表结点剩余,直接插到结果链表尾即可,由于所给链表末尾指针本来就是置空的,所以也省去了手动给结果链表表尾置空的操作。空间复杂度S(n)=O(1)——只要多设置一个空的头结点。

2024-01-26 13:23:57 338 1

原创 20.有效的括号

运用栈的思想,以空间换时间,遍历字符串,遇到左括号则放入栈中,遇到右括号则弹出栈顶元素,并与其进行比较,若配对就继续往下对比,否则报错。当配对完后若栈中仍然剩余未配对的左括号(已不存在能够配对的右括号),则此时报错。时间复杂度T(n)=O(n)空间复杂度S(n)=O(n)

2024-01-25 23:25:17 338

原创 14.最长公共前缀

时间复杂度T(n)=O(mn)空间复杂度S(n)=O(1)

2024-01-25 22:10:39 262

原创 13.罗马数字转整数

各罗马字符分别代表了一个整数值,不过罗马字符是有序的,若是小值字符出现在大值字符的左边则表示取负值,反之取正值,按照这个逻辑,从后往前遍历罗马字符的字符串,记录上一个罗马字符所代表的值,若当前访问的罗马v字符的值大于上一个罗马字符所代表的值,则当前罗马字符的值取为负数加入总值当中,否则作为正数加入总值当中,最后返回总和即可。时间复杂度:T(n)=O(n)空间复杂度:S(n)=O(1)

2024-01-25 20:51:24 292

原创 9.回文数

判断回文数,首先想到的就是转化为字符串然后颠倒过来,但写起来不免繁琐,那么不如直接用空间换时间,想到可以定义一个动态数组,然后顺理成章就可以对数组元素进行比较,此时首尾等对应位置上的值的比较变得异常容易(不过要注意,负数因为有了‘-’号,肯定不是回文数,首先需要排除)。时间复杂度T(n)=O(n)空间复杂度S(n)=O(n)

2024-01-25 16:18:33 278

原创 1.两数之和

在遍历给定数组的同时,判断哈希表中是否有满足条件的元素,若有则返回,否则将正在遍历的值放入哈希表内,并依次向下遍历,重复上述操作,直到找到结果。两层for循环,在给定的整型数组nums中先选定一个数组元素,并依次判断其后续元素是否满足与之和等于目标值,若均不满足,则选定下一个数组元素,并重复上述操作,直到找到两个目标数组元素下标值并返回。时间复杂度T(n)=O(n)——只要一次遍历。时间复杂度T(n)=O(n^2)空间复杂度S(n)=O(n)空间复杂度S(n)=O(n)

2024-01-25 15:37:48 255

原创 2859.计算k置位下标对应元素的和

给定一个数组nums和一个整型数k,数组由多个整型数组元素组成,每个数组元素对应一个数组下标,对比各个数组下标的二进制表示中1的个数(及该数组元素的置位值),并判断整型数k是否与其相等,若相等则该数组下标对应的整型数组元素需要加入目标数组元素当中,最终返回这些目标数组元素值的总和即可。

2024-01-25 14:07:55 350

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除