美文网首页
ARTS打卡第四周

ARTS打卡第四周

作者: MR_Model | 来源:发表于2021-02-13 14:38 被阅读0次

    ARTS打卡第四周

    Algorithm:每周至少做一个 leetcode 的算法题

    717. 1比特与2比特字符

    有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。
    
    现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。
    
    示例 1:
    
    输入: 
    bits = [1, 0, 0]
    输出: True
    解释: 
    唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。
    示例 2:
    
    输入: 
    bits = [1, 1, 1, 0]
    输出: False
    解释: 
    唯一的编码方式是两比特字符和两比特字符。所以最后一个字符不是一比特字符。
    注意:
    1 <= len(bits) <= 1000.
    bits[i] 总是0 或 1.
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/1-bit-and-2-bit-characters
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    

    代码:

    bool isOneBitCharacter(vector<int>& bits)
    {
    int count = bits.size();
    
    if (count == 1)
    {
        if (bits[0] == 0)
        {
            return true;
        }
    }
    
    if (count == 2)
    {
        if (bits[1] == 0 && bits[0] != 1)
        {
            return true;
        }
    }
    
    if (count >= 3)
    {
        if (bits[count - 1] == 0)
        {
            if (bits[count - 2] == 0)
            {
                return true;
            }
    
            int number = 0;
            while (true)
            {
                if (count - 2 - number >= 0)
                {
                    if (bits[count - 2 - number] == 1)
                    {
                        number++;
                    }
                    else
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }
    
            if (number % 2 == 0)
            {
                return true;
            }
        }
    }
    
    return false;
    

    }

    解题思路:

    归纳返回true的情况

    bits长度为1时,bits[0]为一比特字符,返回true;
    bits长度为2时,bits全为0时,返回true;
    bits长度>=3时,bits后两位为0 返回true,为10时,判断连续1的个数,偶数个返回true,奇数个返回false。
    

    官方解答:

    public boolean isOneBitCharacter(int[] bits)
    {
       int i = bits.length - 2;
       while (i >= 0 && bits[i] > 0) i--;
       return (bits.length - i) % 2 == 0;
    }
    
    作者:LeetCode
    链接:https://leetcode-cn.com/problems/1-bit-and-2-bit-characters/solution/1bi-te-yu-2bi-te-zi-fu-by-leetcode/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    

    官方答案代码更加的简洁,极限情况下规律寻找较为清晰。

    Review:阅读并点评至少一篇英文技术文章

    C++的多态

    C++的多态情况十分的复杂且易错,我们需要十分了解多态实现的机理,才能在实际应用中不会出错。
    
    Effective C++中有很多多态的情况,可以结合理解多态,实际工作中去实践多态的使用
    

    Tip:学习至少一个技术技巧

    本周没有学习新的技术技巧。
    
    记录一下简单的windbg调试dump的步骤吧
    
    1、!analyze -v 自动分析崩溃问题
    
    2、 exce
    
    3、 kn、kv
    
    4、.frame xx 等位
    
    windbg确实是很合适windows系统调试崩溃的工具,里面有着很多应用层使用不到的工具,一旦使用之后可以有一种豁然开朗的感觉。
    
    PS:不过要说一句,内存越界是真的难处理,特别是无法复现的情况。希望之后工作中,能锻炼这方面的能力,加强 windbg、汇编、调试的能力,不仅仅局限在业务处理上的代码编写。
    

    Share:分享一篇有观点和思考的技术文章

    2020已经过去了,去年经历过疫情,经历过公司架构调整,很多带我入公司的人都找寻了新的岗位。接到了一个比较棘手的项目,而且该项目可能会一直需要后期的维护,感到很蛋疼。
    不过仔细想想与之前的工作已经有了很大的变化,不再是阶到需求就开始写代码的阶段,开始思考应该如何构建程序的结构,接口的预留,等等。那些我人生中经历过的会设计系统的人啊,我想说一句你们是真正的牛,我也希望自己可以有这样的核心竞争力。
    
    继续加油,不只是为了现在,还是为了未来。

    相关文章

      网友评论

          本文标题:ARTS打卡第四周

          本文链接:https://www.haomeiwen.com/subject/uavsxltx.html