魔法师 (@Constanline)2213. 由单个字符重复的最长子字符串 中发帖

▶ 
失败的链表解法,TLE
思路
慢在每次要更新字符和统计长度都需要  O(n) ,总时间复杂度  O(n^2)  了。考虑增加索引、有序队列、B+树、线段树等等,然后昨天忙别的把这事忘了 🤣。 
今天看了提示,用线段树。思路定下之后一切都变简单了。 
线段树+分治,建树的时候  n\log_2(n) ,每次更新的时候根据位置找到对应子树递归,统计的时候从更新位置上推,都是  \log_2(n)  就能完成。总时间复杂度  n\log_2(n)  。 
代码
class Solution {
    private static class Segment {
        public char preChar;
        public char sufChar;
        public int preCnt;
        public int sufCnt;
   ...
 
 
Back to Top