
刷题汇总
文章平均质量分 69
刷自己平时做的各类题型。将自己的笔记以及自己的思维总结下来。
兰舟千帆
分享开源实用的it技术
展开
-
力扣刷题之移动零
于是对于中元素的移动的话,如果脑子转动不是很灵光的话,就建议去自己画一个图去试着操作,看看怎么去移动。给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。黄色的指针开始移动,移动到3,它不是零,我们将它替换掉白色位置上的0的值。然后两个指针继续移动,此时黄色处的值再次替换白色指针处的值,黄色指针到达终点。继续,到这里的时候,我们的黄色指针指向零,我们当然是不会将零前移动的。移动到4的时候,然后黄色指向处的数替换白色执行处的值。只不过这次交换的时候,我们是这样做的。...原创 2022-08-01 11:48:24 · 633 阅读 · 0 评论 -
力扣刷题之求两数之和
这样去找,我们进行了重复的遍历值,从这个小计算量就可以发现我们一共用了5次13,而我们如果用hashmap,我们就只经过它一次,将它记录,然后后面就可以直接找到它。于是我们尝试这样去解决问题,能不能再遍历到这个元素之后,我们就把他记下来,然后下次用的时候不是直接用,这样多好。按照这样的逻辑的话,我们还是用到了双重for循环,在查找目标值的时候,我们准会遍历到曾经遍历过的元素,这就是重复。题目的要求是给定一个数组,给定一个目标值,然后让你在数组中找到两个值的和等于目标值,然后返回它们的下标。...原创 2022-07-31 22:41:22 · 555 阅读 · 0 评论 -
力扣刷题之合并两个有序数组
比较开始,如果一号指针指向数组的表头索引处的元素的值大于第二个的头部,那么我们将数组二头部的元素给到临时数组头部。比较这三种做法呢,第一种比较耗时,因为存在一个打乱后后的再排序,后两种会使用类似指针的移动索引比较,没有打乱原本数组的有序,效率都非常高,但是第三种是没有使用临时数组,所以第三种的空间复杂度比较低,占用内存少。到了这一步的时候,我们的3也给了临时数组,这个时候后面的元素不是有效的了,所以我们就直接将num2剩余的元素给到临时数组。到这里呢,如果nums1的元素较大的话,我们会让它后移。...原创 2022-07-31 20:21:03 · 764 阅读 · 0 评论 -
力扣刷题之爬楼梯(7/30)
其实可以思考一下,我们的递归简单的有没有去优化的方法,可以这样去思考一个问题,比如我们计算从第一层到第五层的方法数,我们需要在递归里面用f(4)+f(3),然后这两层就一直递归到借宿条件,所以这里存在重复的计算。这样就确定了一个递推的公式,我们可以递归去计算,但是要考虑递归的出口,当n等于2的时候需要去直接给定一个值为2,因为计算f(0)是不合理的,所以我们这样去考虑了。然后他就一直计算下去了,我打赌,他之前的方法一定是超时了,所以才这样去超出三界的方式去解题了。我们可以首先这样去做,是这样的一个逻辑。..原创 2022-07-30 23:08:30 · 475 阅读 · 0 评论 -
力扣刷题之有效的正方形(每日一题7/29)
菱形的对角线是互相垂直平分的,我们只要在让它的对角线相等,就可以判断为正方形。因为如果四个点的横纵坐标都为0的话,上面的要求其实是都可以满足的。提示我也没有去用,因为我采用的是完全的纯数学计算,用到了坐标的特点。对坐标四点判断是否构成平行四边形,需要判断对可能情况的对角线的中点是否重合,那么这里只要分别计算横纵坐标死否分别相等就行。给定2D空间中四个点的坐标p1,p2,p3和p4,如果这四个点构成一个正方形,则返回true。这里的垂直用到了向量的特点。完全的对对角线的约束。...原创 2022-07-29 16:09:17 · 579 阅读 · 0 评论 -
力扣刷题之数组序号计算(每日一题7/28)
不过这个无所谓,我用这个数据结构的目的就是为了存储排序后的数组的值。因为这样的其实是一个指针的指向,指向原来数组的地址,当然一个数组变,另一个也会变。如果出现相同的数,它其实是不要存储的,但是你的按照这个索引i还是会变大,这样是不对的。自己定义了数组进行的测试,在力扣提交的时候只需要将自己定义的重复的数组删掉,最后要返回一个最终的数组。如下,首先对当前数组进行了排序,这个默认是从何小到大排序的,题目实际的要求也是这样,所以不用修改默认。排序后的数组中的元素一定是按照顺序排列的,是从小到大排序的。...原创 2022-07-28 20:31:28 · 691 阅读 · 0 评论 -
力扣刷题之分数加减运算(每日一题7/27)
假如遇到了10,我们的首先获取到的是1,然后我们转换了为数字1,假如你没有乘以10,那么现在就是1,我们后面再移动一位是0,那么你这会接收到的就是0,这样你是无法正确接收到分子的。后面我们会获取输入的字符串的分子和分母,然后利用公式去计算。是因为如果分子是10,上面已经说了,我们的分子的范围可以取到10,那么要取到这个分子10就必须扩展位数,如果你的分子小于10的话大可不必用num处理。这次是求分母和分子的最大公约数,这里要注意分子的符号,我们这里是不要符号的,符号的最终我们用之前的符号的标记变量。...原创 2022-07-27 18:46:35 · 733 阅读 · 0 评论 -
LintCode-Logo 查询相距最近的两棵树苗
1942 · 相距最近的两棵树苗原创 2022-02-11 14:28:59 · 758 阅读 · 2 评论 -
查询年龄不大于 20 岁的教师所教的所有课程的课程名(Lintcode刷题)
2072 · 查询年龄不大于 20 岁的教师所教的所有课程的课程名原创 2022-02-07 18:15:24 · 1419 阅读 · 0 评论 -
URL编码(LintCode刷题)
原题目如下给出一个代表网址 host 的字符串 base_url,和代表查询参数的数组 query_params,你需要返回带查询参数的完整 URL。查询参数由一些包含两个元素的数组组成,第一个元素代表参数,第二个元素代表该参数对应的值。现在需要你拼接两个部分得到完整的 URL。base_url 和查询参数字符串之间使用 ? 拼接,在查询参数的参数和值之间通过 = 拼接,各个查询参数之间使用 & 拼接。查询参数需要根据字典序排序。代表查询参数的数组 query_params 长度在 100原创 2022-02-07 13:01:50 · 1672 阅读 · 0 评论 -
数字金字塔(PTA)
原题如下:练习5-3 数字金字塔 (15 分)本题要求实现函数输出n行数字金字塔。函数接口定义:void pyramid( int n );其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注意每个数字后面跟一个空格。裁判测试程序样例:#include <stdio.h>void pyramid( int n );int main(){int n;scanf("%d", &n);pyramid(n);retur原创 2021-02-08 20:35:56 · 15292 阅读 · 5 评论 -
(斐波那契数列)使用函数输出指定范围内Fibonacc的数(PTA)
题目要求:本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。函数接口定义:int fib( int n );void PrintFN( int m, int n );其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数,相邻数.原创 2021-02-07 13:18:27 · 10535 阅读 · 9 评论