您是否尝试过最新的 Codility 测试?
我觉得在定义什么是 K-Sparse 数时有一个错误,这让我感到困惑,我不确定正确的方法是什么。所以它从定义一个 K-Sparse 数开始:
在二进制数“100100010000”中,任何两个连续的 1 之间至少有两个 0。在二进制数“100010000100010”中,任何两个连续的 1 之间至少有三个 0。如果一个正整数 N在其二进制表示中任意两个连续的 1 之间至少有 K 个 0,则称为 K-sparse 。(我的重点)
所以你看到的第一个数字 100100010000 是 2 稀疏的,第二个数字 100010000100010 是 3 稀疏的。很简单,但随后进入算法:
写一个函数:
class Solution { public int sparse_binary_count(String S,String T,int K); }
那,给定:
string S containing a binary representation of some positive integer A, string T containing a binary representation of some positive integer B, a positive integer K.
返回 [A..B] 范围内的 K 稀疏整数的数量(包括两端)
然后陈述这个测试用例:
例如,给定 S = "101" (A = 5), T = "1111" (B=15) 和 K=2,函数应该返回 2,因为在范围 [5 ..15],即“1000”(即8)和“1001”(即9)。
基本上它是说 8 或以 2 为底的 1000 是一个 2 稀疏数,即使它的二进制表示中没有两个连续的数字。是什么赋予了?我在这里错过了什么吗?