算法101训练营-手串颜色问题
描述 作为一个手串艺人,有金主向你订购了一条包含 n 个杂色串珠的手串——每个串珠要么无色,要么涂了若干种颜色。为了使手串的色彩看起来不那么单调,金主要求,手串上的任意一种颜色(不包含无色),在任意连续的 m 个串珠里至多出现一次(注意这里手串是一个环形)。手串上的颜色一共有 c 种。现在按顺时针序告诉你 n 个串珠的手串上,每个串珠用所包含的颜色分别有哪些。请你判断该手串上有多少种颜色不符合要求。即询问有多少种颜色在任意连续 m 个串珠中出现了至少两次。 输入描述 第一行输… ...
算法101训练营-链表指定区间反转和K个一组反转
开始之前 这两个的解法思路和反转链表其实差不多,所以放在一章一起解决 链表指定区间反转 之前写过整个链表的反转,主要做法就是 1. 下一个节点指针指向下一个节点 2. 当前节点的 next 属性指向上一个节点 3. 将上一个节点指针指向当前节点 4. 将当前节点指针移动到下一个节点指针指向的节点 描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转。 数据范围 链表长度 0 写到这已经是凌晨 2:21 了,🐕 命要紧,睡觉了,明天起来补 描述 将给出的链… ...
算法101训练营-合并k个已排序的链表
开始之前 刚才做了反转链表,太简单,没挑战,来道 hard 给自己找点不痛快。 描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围 节点总数 0 a b) 然后把遍历数组构造一个新链表... 粗鲁... 太粗鲁了 分治+递归 在实现递归加分治前,我们要实现一个小算法 引申,合并两个已经排序的列表 描述 输入两个递增的链表,单个链表的长度为 n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围 0 <= n <= 1000, 1000 <… ...
反转链表
描述 给定一个单链表的头结点 pHead(该头节点是有值的,比如在下图,它的 val 是 1,长度为 n,反转该链表后,返回新链表的表头。 数据范围: 0 <= n <= 1000 要求: 空间复杂度 O(1),时间复杂度 O(n)。 如当输入链表{1,2,3}时, 经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。 以上转换过程如下图所示: 代码 代码解释 1. 首先检查入参,假如传入一个空链表或者链表中只有一个值,那就不需要反转,直接返回传入的链表即可。… ...