Cool说丨717与674

简介: 717. 1比特与2比特字符674. 最长连续递增序列

717. 1比特与2比特字符

有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(1011)来表示。

现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。

示例 1:

输入:

bits = [1, 0, 0]

输出: True

解释:

唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。

示例 2:

输入:

bits = [1, 1, 1, 0]

输出: False

解释:

唯一的编码方式是两比特字符和两比特字符。所以最后一个字符不是一比特字符。

注意:

  • 1 <= len(bits) <= 1000.
  • bits[i] 总是01.

第一版,自己写的,速度较慢

执行用时 :8 ms, 在所有 cpp 提交中击败了54.05%的用户

内存消耗 :8.6 MB, 在所有 cpp 提交中击败了84.88%的用户

boolisOneBitCharacter(vector<int>&bits) {

   intlow=0, high=bits.size()-2;

   while (low<high) {

       if (bits[low] ==1) {

           low++;

           if (bits[low] ==1||bits[low] ==0)  low++;

       }elseif (bits[low] ==0) low++;

   }

   if (low==high) {

       if (bits[low] ==0&&bits[low+1] ==0)

           returntrue;

       else

           returnfalse;

   }

   else

       returnbits[low] ==0;

}

第二版,换了一个思路

执行用时 :4 ms, 在所有 cpp 提交中击败了90.45%的用户

内存消耗 :8.6 MB, 在所有 cpp 提交中击败了80.76%的用户

boolisOneBitCharacter(vector<int>&bits) {

   if (bits[bits.size() -1] ==1) returnfalse;

   intlow=0, high=bits.size();

   while (low<high) {

       if (bits[low] ==1) {

           low+=2;

       }

       elseif (bits[low] ==0) {          

           if (low==high-1) break;

           low++;

       }

   }

   if (low==high-1) {

       returntrue;

   }

   else

       returnfalse;

}

674. 最长连续递增序列

给定一个未经排序的整数数组,找到最长且连续的的递增序列。

示例 1:

输入: [1,3,5,4,7]

输出: 3

解释: 最长连续递增序列是 [1,3,5], 长度为3。

尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。

示例 2:

输入: [2,2,2,2,2]

输出: 1

解释: 最长连续递增序列是 [2], 长度为1。

注意:数组长度不会超过10000。

第一版,自己写的,很慢啊,比较low

执行用时 :28 ms, 在所有 cpp 提交中击败了14.37%的用户

内存消耗 :25.3 MB, 在所有 cpp 提交中击败了5.21%的用户

intfindLengthOfLCIS(vector<int>&nums) {

   stack<int>res;

   size_tmaxLen=0;

   for (auto&n : nums) {

       

       if (res.empty() ||n>res.top())//为空或者当前值大于前面一个值

           res.push(n);

       else//小于等于当前top,千万记得要把这次的值放进去

       {

           maxLen= (res.size() >maxLen?res.size() : maxLen);

           (stack<int>()).swap(res);

           res.push(n);

       }

       

   }

   maxLen= (res.size() >maxLen?res.size() : maxLen);

   returnmaxLen;

}

第二版,自己改进了一下,不过性能还是不太行

执行用时 :16 ms, 在所有 cpp 提交中击败了70.37%的用户

内存消耗 :9.5 MB, 在所有 cpp 提交中击败了47.56%的用户

intfindLengthOfLCIS(vector<int>&nums) {

   if (nums.empty()) return0;

   inttemp=nums[0];

   intmaxLen=0,tempLen=0;

   for (auto&n : nums) {  

       if (n>temp)//为空或者当前值大于前面一个值

       {

           temp=n;

           tempLen++;

       }

       else//小于等于当前top,千万记得要把这次的值放进去

       {

           maxLen= (tempLen>maxLen?tempLen : maxLen);

           tempLen=1;

           temp=n;      

       }

       

   }

   maxLen= (tempLen>maxLen?tempLen : maxLen);

   returnmaxLen;

}


目录
相关文章
|
9月前
|
计算机视觉
RT-DETR改进策略【Neck】| PRCV 2023,SBA(Selective Boundary Aggregation):特征融合模块,描绘物体轮廓重新校准物体位置,解决边界模糊问题
RT-DETR改进策略【Neck】| PRCV 2023,SBA(Selective Boundary Aggregation):特征融合模块,描绘物体轮廓重新校准物体位置,解决边界模糊问题
577 20
RT-DETR改进策略【Neck】| PRCV 2023,SBA(Selective Boundary Aggregation):特征融合模块,描绘物体轮廓重新校准物体位置,解决边界模糊问题
|
传感器 人工智能 自动驾驶
未来出行:无人驾驶汽车的技术革新与挑战
本文深入探讨了无人驾驶汽车背后的技术原理,包括感知、定位、决策和执行四个核心系统。同时,文章分析了当前自动驾驶技术的发展现状,并指出了技术标准不统一、基础设施不完善和法律法规滞后等主要挑战。最后,展望了无人驾驶汽车未来的发展趋势,强调了跨学科合作和政策支持的重要性。
587 4
|
存储 编解码 Linux
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
260 1
|
安全 NoSQL Redis
Docker自定义网络
Docker自定义网络
158 11
|
消息中间件 canal Kafka
flink cdc 数据问题之数据堆积严重如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
设计模式 搜索推荐 测试技术
电影推荐系统的设计与实现(论文+系统)_kaic
电影推荐系统的设计与实现(论文+系统)_kaic
|
编解码 开发工具 git
ffmpeg 常用的批处理文件(windows版)
ffmpeg 常用的批处理文件(windows版)
793 0
条件循环语句有哪些?语法?区别?
条件循环语句有哪些?语法?区别?
205 0
|
消息中间件 存储 中间件
一键体验RocketMQ六大环境活动操作手册
中间件产品门槛高?短时间无法深入了解?免费试用+30秒一键体验,低代码,无部署环境,带你了解“历经万亿级数据洪峰考验”的云消息队列RocketMQ。
2258 3
|
存储 Shell 数据安全/隐私保护
7段代码搞懂Python条件语句
7段代码搞懂Python条件语句
188 0