时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M
链接:https://www.nowcoder.com/questionTerminal/0bb1fad52f474bdaa4d7636ca3a98244
来源:牛客网


首先遇到这一题是在字节跳动的一个前端试卷里,看上去不难,似乎就是一个数组+简单查找的问题。但是我一直报错,测试样例过了,提交代码就一直0分。

气死了,遂上CSDN查找题解,作为一个底层C选手,让我找到了一篇C++的题解,看懂之后,这不跟我的思路一样吗?这位博主提供了一个C++的AC代码,但我发现缺少环的判断啊,但是——当我把他的代码CTRL C+V到答题区域之后,测试样例没过,提交却AC了?

最后发现是题错了!题目要求注意这里手串是一个环形,字节你是把它吃了吗?去掉环的判断就能AC了,然而连测试样例都过不了你是认真的吗?

练习结束之后我不甘心,上牛客网搜这道题,搜出一毛一样的题之后提交了我的带环判断 的代码,顺利AC,再找到那位博主的代码CTRL C+V,就0分。

我还是不甘心,遂把卷子翻出来重做,删掉我最后的环形判断的代码,嘿,AC了。

我宝贵的一个半小时就浪费在一个错题上!!看到这篇博客的小伙伴们别再踩坑了,呜呜呜。


题目描述

作为一个手串艺人,有金主向你订购了一条包含n个杂色串珠的手串——每个串珠要么无色,要么涂了若干种颜色。为了使手串的色彩看起来不那么单调,金主要求,手串上的任意一种颜色(不包含无色),在任意连续的m个串珠里至多出现一次(注意这里手串是一个环形)。手串上的颜色一共有c种。现在按顺时针序告诉你n个串珠的手串上,每个串珠用所包含的颜色分别有哪些。请你判断该手串上有多少种颜色不符合要求。即询问有多少种颜色在任意连续m个串珠中出现了至少两次。

输入描述:

第一行输入n,m,c三个数,用空格隔开。(1 <= n <= 10000, 1 <= m <= 1000, 1 <= c <= 50) 接下来n行每行的第一个数num_i(0 <= num_i <= c)表示第i颗珠子有多少种颜色。接下来依次读入num_i个数字,每个数字x表示第i颗柱子上包含第x种颜色(1 <= x <= c)

输出描述:

一个非负整数,表示该手链上有多少种颜色不符需求。

示例1
输入

5 2 3
3 1 2 3
0
2 2 3
1 2
1 3

输出

2

说明

第一种颜色出现在第1颗串珠,与规则无冲突。
第二种颜色分别出现在第 1,3,4颗串珠,第3颗与第4颗串珠相邻,所以不合要求。
第三种颜色分别出现在第1,3,5颗串珠,第5颗串珠的下一个是第1颗,所以不合要求。
总计有2种颜色的分布是有问题的。
这里第2颗串珠是透明的。

解题思路

观察数字,n比较大,c比较小,可以定义一个a[n][c]的数组,表示第c号颜色是否存在于第n颗珠子上。存在则为1,不存在则为0。

当然,如果你喜欢,可以定义为a[c][n],含义一样。

接着就是一个用一个数组来存对于每个颜色的珠子的位置,我的代码里是b[]

接下来就是条件判断:b[i + 1] - b[i] < m表示它在m颗内有重复出现,我们提前定义一个flag,表示这个颜色是否违规。(环判断要用上)

违规一经发现,就要被抓走(break

环判断:对于最后出现位置b[k](k是b的长度),判断它离尾部的距离是否小于m,如果小于m,看b[1]出现的位置。

如果b[k] + m > n && b[1] < m - (n - b[k]) && flag == 0则表示在首位出游违规现象发生,抓走!


题解

#include <stdio.h>
int b[100001];
int a[100001][51];
int main()
{int n, m, c, num, color, cnt = 0;int i, j, k, l;scanf("%d %d %d", &n, &m, &c);for (i = 0; i < n; i++){scanf("%d", &num);for (j = 0; j < num; j++){scanf("%d", &color);a[i][color] = 1;}}int flag;for (j = 1; j <= c; j++){k = 0;flag = 0;for (i = 0; i < n; i++){if (a[i][j] == 1){k++;b[k] = i + 1;}}if (k != 1){for (i = 1; i < k; i++){if ( b[i + 1] - b[i] < m){cnt++;flag = 1;break;}}/* */if (b[k] + m > n && b[1] < m - (n - b[k]) && flag == 0){cnt++;}}}printf("%d", cnt);return 0;
}

友好起见,在此还是附上前文提到的那位C++的AC选手,注意只在字节(今日头条)笔试题里有效。
当然我不是鼓励读者去复制代码!
链接:今日头条笔试之手串问题

[C] [字节跳动] [编程题] 手串相关推荐

  1. ❤️TikTok字节跳动编程题实战2022校招——吐血分享总结(第一弹)。

    ❤️TikTok字节跳动编程题实战2022校招--吐血分享总结. 前言+说明 一.算法编程题(种树) 二.算法编程题(小A的吃鸡之旅) 三.算法编程题(有序最大K位数) 四.算法编程题(测试计划的最大 ...

  2. [字节跳动编程题]雀魂启动!

    1. 输入描述 总共有36张牌,每张牌是1-9.每个数字4张牌.输入只有一行,包含13个代表着13张牌的数字,用空格分隔,每个数字在1~9之间,数据保证同种数字最多出现4次. 2. 输出描述 输出同样 ...

  3. 2019秋内推字节跳动第一题

    题目大意: 球场中有若干个球队的球迷,同一球队球迷坐的位置都是连在一起的,即这个球迷的上下左右以及斜方向 的人都是同一球队球迷.现在要求其中人数最多的球迷人数,以及共有多少个球迷团体. 思路 当时没有 ...

  4. java打印倒空三角形_用猴子打印《莎士比亚全集》的办法解决字节跳动水壶题...

    偶然的一次聊天,看到了一道网传的字节跳动面试题,题目是这样的: 原题:给你一个装满水的 8 升满壶和两个分别是 5 升.3 升的空壶,请想个优雅的办法,使得其中一个水壶恰好装 4 升水,每一步的操作只 ...

  5. 字节跳动校招题-【手串】

    不会搞循环队列,边界情况分开讨论了一下 #include <bits/stdc++.h> using namespace std;struct zhuzi{vector<int> ...

  6. 字节跳动智力题-分金块问题

    问题: 工人为老板打工,工作七天可以获得一块金子,工人每天可以分得一点金子,老板必须每天发金子,不能多给,也不能少给,把这个金子切两刀,就可以每天给工人发工资,请问怎么切? 答案:切两刀将金子分成三份 ...

  7. 字节跳动面试全经历,大佬的世界原来是这个样子!

    前言 先介绍一下,本科和研究生都不是计算机专业,现在是学通信,然后做图像处理,可能面试官看我不是科班出身没有问太多计算机相关的问题,因为第一次找工作,字节的游戏专场又是最早开始的,就投递了,投递的是游 ...

  8. ❤️大厂编程题实战+Leecode练习

    前言+说明 ❤️旺仔兄弟们!如果觉得博主分享的不错,希望能留下您的一键❤️三连❤️(点赞+评论+收藏) ,您的支持就是我的动力❤️,您的三连对我特别重要. 注明:下述题目只用于学习交流所用,禁止用于商 ...

  9. 字节跳动秋招笔试四道编程题(2021-08-29)

    以下字节笔试编程题代码及思路由@nuoyanli提供,有兴趣的可以去这位ACM专业打铁选手那里找到更多刷题技巧. 文章目录 第一道:第一题自然数a.b(100%) 题目描述 思路 参考代码: 第二道: ...

最新文章

  1. 微软Java面试题-按照字母排序
  2. STM32F4 HAL库开发 -- STM32CubeMX
  3. 判断指定目录下的所有[图片]的扩展名, 并打印出文件名.
  4. Excel Oledb设置
  5. 我们真的需要JWT吗?
  6. Python编程的10个经典错误及解决办法
  7. 雷霆战机源代码c语言,C++实现雷霆战机可视化小游戏
  8. Python数据可视化2.3 体育案例
  9. python结构体数组传出接收c动态库_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...
  10. cad2019菜单栏怎么调出来_AutoCAD2019怎么把工具栏放左右两边 两侧工具栏调出来...
  11. OpenRefine中的正则表达式
  12. JavaScript基础知识总结(6张思维导图)
  13. 调用远程摄像头进行人脸识别_工地如何实现安全帽检测/人脸识别?
  14. 光通量发光强度照度亮度关系_光强?光通量?光照度?光亮度?一次性帮你理清楚!...
  15. 看《吴峰光杀进 Linux 内核》
  16. sklearn:make_blobs聚类数据生成器
  17. C++在一个类中定义另一个有参数构造函数的类的对象
  18. 【TensorFlow基础函数】tf.concat的用法
  19. 基于XAMPP的Testlink安装和配置
  20. 身体指数bmi流程图_【新城校区】新生体检丨你了解你的身体吗?

热门文章

  1. Python 常用内置函数map、zip、filter、reduce、enumerate
  2. pytorch nn.Embedding
  3. tf.placeholder函数说明
  4. LeetCode中等题之根据字符出现频率排序
  5. LeetCode简单题之检查某单词是否等于两单词之和
  6. GOF23设计模式(创建型模式)建造者模式
  7. Thrift的接口定义语言IDL
  8. C++ 类模板的使用
  9. python 实现延迟的操作
  10. Collections.addAll() 的使用 以及和list.addAll() 的区别