leetcode2311_go_小于等于K的最长二进制子序列

leetcode2311_go_小于等于K的最长二进制子序列

题目

给你一个二进制字符串 s 和一个正整数 k 。

请你返回 s 的 最长 子序列,且该子序列对应的 二进制 数字小于等于 k 。

注意:子序列可以有 前导 0 。 空字符串视为 0 。

子序列 是指从一个字符串中删除零个或者多个字符后,不改变顺序得到的剩余字符序列。

示例 1:输入:s = “1001010”, k = 5 输出:5

解释:s 中小于等于 5 的最长子序列是 “00010” ,对应的十进制数字是 2 。

注意 “00100” 和 “00101” 也是可行的最长子序列,十进制分别对应 4 和 5 。

最长子序列的长度为 5 ,所以返回 5 。

示例 2:输入:s = “00101001”, k = 1 输出:6

解释:”000001″ 是 s 中小于等于 1 的最长子序列,对应的十进制数字是 1 。

最长子序列的长度为 6 ,所以返回 6 。

提示:1 <= s.length <= 1000

s[i] 要么是 ‘0’ ,要么是 ‘1’ 。

1 <= k <= 109

解题思路分析

1、贪心;时间复杂度O(n),空间复杂度O(1)

func longestSubsequence(s string, k int) int { res := 0 sum, bitValue := int64(0), int64(1) target := int64(k) for i := len(s) – 1; i >= 0; i– { if s[i] == ‘0’ { // 0全部加上 res++ } else if sum <= target { sum = sum + bitValue if sum <= target { // 小于<=k加上 res++ } } if sum <= target && bitValue <= target { bitValue = bitValue * 2 } } return res}

2、贪心;时间复杂度O(n),空间复杂度O(1)

func longestSubsequence(s string, k int) int { res := 0 sum, bitValue := 0, 1 for i := len(s) – 1; i >= 0; i– { if s[i] == ‘0’ { // 0全部加上 res++ } else { if sum+bitValue <= k { res++ sum = sum + bitValue } } if bitValue <= k { bitValue = bitValue * 2 } } return res}

总结

Medium题目,使用贪心思想

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月27日 21:09
下一篇 2022年6月27日 21:10

相关推荐

  • 宝可梦朱紫宝主顺序怎么选择?宝可梦朱紫宝主挑战顺序攻略

    宝可梦朱紫宝主顺序如何选择?宝主挑战的顺序有很多玩家都加入了讨论,大家想要了解清楚正确的挑战顺序,接下来小编就给大家简单的介绍一下宝主挑战的顺序,各位赶紧通过下面的攻略多了解一下详…

    2022年11月25日
  • 宝可梦朱紫道馆及宝主攻略顺序是什么 道馆及宝主攻略顺序汇总

    作为宝可梦资深爱好者,小伙伴们对宝可梦朱紫里面的所有道馆恨不得马上跳过,当场就来挑战地区冠军,但这显然是不可能的,你得按照游戏里面遇到的顺序来进行挑战。那么具体的挑战顺序是什么样的…

    2022年11月24日
  • 《羊了个羊》游戏攻略11月9日 11月9日通关技巧

    11月9日羊了个羊有新的关卡,今天的新关卡难度不高比较容易过关,许多小伙伴想知道11月9日的羊了个羊该怎么通关?下面就让小编为大家分享一下羊了个羊11.9的每日一关通关技巧,一起来…

    2022年11月9日
  • 王者荣耀giba什么意思

    这个地方的OJ即Online Judge,国内的话一般是学校用来做教学用途或者比赛用的,里面有大量的题目,也有不少ACM的经典题目 eTQ9jxRUFpftYe83gQxERg。 …

    2022年11月9日
  • sku编码一般写什么(sku编码是什么意思)

    SKU(stock keeping unit),即库存管理单元,是分配给产品的唯一的数字或字母数字代码,以便企业更容易、更有效地管理库存。大多数SKU数字在8个到12个字符之间,并…

    2022年11月1日
  • 微信第二扣款顺序在哪设置(微信支付顺序设置方法)

    我们在使用微信支付的时候,经常遇到支付顺序的问题,就是扣款渠道的顺序,有零钱、银行卡等多种不同的支付扣款方式。 也许系统自动设置的或者以前设置的不符合现在的习惯,那么我们应该怎么去…

    2022年10月31日
  • 李治为什么娶自己的妈妈(李世民传位于哪位皇子)

    太子李承乾,曾经是唐太宗李世民非常看重的儿子。 小时候的他,聪明可爱,上进好学,让大臣们连连赞扬,让李世民颇为骄傲。 同时又因为是嫡长子,八岁时,就被李世民立为太子。 可是随着慢慢…

    2022年10月29日
  • 《羊了个羊》游戏攻略10月28日 10月28日怎么通关技巧

    10月28日羊了个羊有新的关卡,今天的新关卡难度不高比较容易过关,许多小伙伴想知道10月28日的羊了个羊该怎么通关?下面就让小编为大家分享一下羊了个羊10.28的每日一关通关技巧,…

    2022年10月28日
  • 《羊了个羊》游戏攻略10月26日 10月26日通关攻略

    10月26日羊了个羊有新的关卡,今天的新关卡难度不高比较容易过关,许多小伙伴想知道10月26日的羊了个羊该怎么通关?下面就让小编为大家分享一下羊了个羊10.26的每日一关通关技巧,…

    2022年10月26日
  • 商贷可以办理公积金按月对冲吗 剩余钱可以取出吗?

    在如今,办理公积金按月对冲还房贷的人很多,每个月可以减轻还款的压力,而有的人申请的是商业贷款,那么商贷可以办理公积金按月对冲吗?下文就来带大家了解一下。 商贷是可以办理公积金按月对…

    2022年10月20日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息