面试题请教
两个面试里遇到的算法题,求各位大佬指点一下思路
1.给定一个字符串,找到包含各字母数量相同的最长子串长度,如abcdbdchi, 对于子串bcdbdc;中,包含的各字母(b,c,d)的数量相同,均为2,因此该子串是一个合法子串。要求O(N)复杂度解决;
2.给了一个一维的数组。总共有5种不同的elements,代表5种颜色:R,B,W,G,Y. 如果有至少四个同种颜色的candy是连续的,就全部消除掉。然后数组的左右两部分再连接起来.你手上有有限个数的candy。你可以把手上的candy 插入数组使得数组里的candy 消除掉。问你最少使用手上的几个 candy 能够消除所有candy。如果不能return -1.
Example:
input: RRBBBRR
candy in your hand: BYG. return 1. 你只需要手上的B candy,插入中间位置。4个B就消除掉了。然后剩下的RRRR也消除掉了。
感谢各位大佬指点 #面试#
1.给定一个字符串,找到包含各字母数量相同的最长子串长度,如abcdbdchi, 对于子串bcdbdc;中,包含的各字母(b,c,d)的数量相同,均为2,因此该子串是一个合法子串。要求O(N)复杂度解决;
2.给了一个一维的数组。总共有5种不同的elements,代表5种颜色:R,B,W,G,Y. 如果有至少四个同种颜色的candy是连续的,就全部消除掉。然后数组的左右两部分再连接起来.你手上有有限个数的candy。你可以把手上的candy 插入数组使得数组里的candy 消除掉。问你最少使用手上的几个 candy 能够消除所有candy。如果不能return -1.
Example:
input: RRBBBRR
candy in your hand: BYG. return 1. 你只需要手上的B candy,插入中间位置。4个B就消除掉了。然后剩下的RRRR也消除掉了。
感谢各位大佬指点 #面试#
全部评论
第一题 lc 395,第二题用stack存储一个数组,第一个下标是类型,第二个下标是当前连续的个数,遍历数组,如果类型相同,下标++,直到遇到第一个不相同的,这个时候判断一下能不能消除(%4,然后+手里面的),如果可以全消除,判断一下下一个元素跟栈顶元素是不是相等,相等的话从栈顶元素下标开始,不相等的话继续重复上一步流程,如果最后栈不为空,如果栈顶元素+当前手里面的个数可以消除就往下走,走到不能消除就是不行?
相关推荐
点赞 评论 收藏
分享
03-12 14:39
厦门大学嘉庚学院 软件测试 点赞 评论 收藏
分享
点赞 评论 收藏
分享