ARTS打卡第四周

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

继续加油,不只是为了现在,还是为了未来。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Algorithm 本周题目:66.加一题解思路:本道题目总共分为两种常规情况,和一种临界情况。1.常规情况一:数...
    无敌的潘大帅阅读 149评论 0 0
  • Algorithm 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使...
    firstyanchao阅读 164评论 0 0
  • 第4周 Algorithm: N皇后问题 n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间...
    sipom阅读 173评论 0 0
  • Algorithm:每周至少做一个leetcode的算法题; Review:阅读并点评至少一篇英文技术文章; Ti...
    yuanyuan148阅读 247评论 0 0
  • ARTS是什么?Algorithm:每周至少做一个leetcode的算法题;Review:阅读并点评至少一篇英文技...
    michelli阅读 319评论 0 0