![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
不知道能写多久的每日一题
文章平均质量分 72
Stella_sss
努力精进,专注码文,欢迎关注,期待交流!
展开
-
【每日一练】图解: 数组中的逆序对
分治,一般和递归/循环相联系,说明应该分到一个阶段,这里我们要找逆序对,则首先想到应该把数组两两切分到最小(只包含一个元素),然后数组之间进行比较,这样就可以获得逆序对的个数。从分治的一般思路来看,我们对一个整体进行切分之后,要做一些什么事情,得到结果,然后再把这些分割的部分重新整合起来,同时整合结果,最终回到一个整体,并得到一个最终结果,即我们想要的答案。排序后:所有的数组分别是有序的,这样剩下的数组在计算逆序数对的时候可以直接计算前面的数组中比后面大的数。对已经比较过的数组在合并的同时排序(归并排序)原创 2022-09-26 13:58:56 · 543 阅读 · 6 评论 -
【每日一练】图解:判断链表中是否有环
说明:第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1(注:头结点为位置0),即-4->2存在一个链接,组成传入的head为一个带环的链表,返回true。分别创建两个指针指向链表的头结点,一个指针每次直走一步,为慢指针,一个指针每次走两步,为快指针。说明:第一部分{1}代表一个链表,-1代表无环,组成传入head为一个无环的单链表,返回false。输入:{-1,-7,7,-4,19,6,-9,-5,-2,-5},6。输入:{3,2,0,-4},1。一起加入每日一练吧!原创 2022-09-08 06:46:58 · 275 阅读 · 1 评论 -
【每日一练】图解:链表中的节点每k个一组翻转
我的整体思路和《链表内指定区间反转》基本一样,但是这一题是分组进行多次翻转,因此这一题多了分组的步骤,并且原来简单的处理“局部”翻转后的头尾问题变成了处理分组与分组之间的问题。并且第一组反转之前的end,在反转后即成为整个链表的头结点,因此可以在此时将head置为反转前的end。对于第二组之后的组才存在前一组,因此这里我们需要判断这一次的反转是否为第一组的反转。后面一组反转之后,再将前一组的反转后的末尾和后一组反转后的头节点连接起来。将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表。原创 2022-09-07 05:18:49 · 486 阅读 · 4 评论 -
【每日一练】图解:链表内指定区间反转
对比这一题和单链表反转,无非一个的反转整个链表,一个是局部反转,那么我们只需要把局部看做一个整体来进行反转,然后再对“整体”的头尾的指向进行处理即可。将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。第三步:end的next已经成为start的next,接下来要处理start前面的指向。使用一个函数来实现链表的反转,参数为反转起始节点 start 和 反转结束节点end。这道题难度为中等,但是因为如果写过单链表反转,那么这道题其实并不难。原创 2022-09-05 23:32:37 · 412 阅读 · 4 评论 -
【每日一练】反转链表
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。如当输入链表{1,2,3}时,原创 2022-09-04 23:57:47 · 210 阅读 · 5 评论