假设我们有一个整数n。在其中,我们可以进行一位翻转以生成最长的1s序列。假设数字为13,因此二进制表示形式为1101。如果将1翻转为make 0到1,则它将为1111。这是最长的1s序列
为了解决这个问题,我们将遍历给定数字的位。我们将跟踪当前1的序列长度和前一个1的序列长度。找到零后,再更新以前的长度。因此,如果下一位为1,则应将前一个长度设置为当前长度。如果下一个为0,则将上一个再次设为0。
#include<iostream> using namespace std; int singleFlipMaxOnes(unsigned number) { if (~number == 0) return 8*sizeof(int); int curr = 0, prev = 0, max_size = 0; while (number!= 0) { if ((number & 1) == 1) curr++; else if ((number & 1) == 0) { prev = (number & 2) == 0? 0 : curr; curr = 0; } max_size = max(prev + curr, max_size); number >>= 1; } return max_size+1; } int main() { cout << "Maximum length of the sequence with 1s: " << singleFlipMaxOnes(13); }
输出结果
Maximum length of the sequence with 1s: 4
本文向大家介绍C#程序在给定整数的二进制表示中找到最长连续1的长度,包括了C#程序在给定整数的二进制表示中找到最长连续1的长度的使用技巧和注意事项,需要的朋友参考一下 要获取连续的1,请使用按位左移运算符。这是我们的十进制数字。 循环上述操作,直到I的值为0,然后使用变量获取长度;在这里数。 我们在这里举的例子是150。 150的二进制文件是10010110。因此,我们有两个连续的二进制文件。 示
在过去的一周里,我一直在努力解决这个问题,似乎我最终无法解决它。给定任意64位无符号整数,如果它在任何位位置、任何位设置下包含31(0b11111)的二进制模式,则该数字有效,否则无效。 例如: 0000 0000 0000 0000 0000 0001 1111有效 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
本文向大家介绍用C ++程序查找二进制搜索树的最小值,包括了用C ++程序查找二进制搜索树的最小值的使用技巧和注意事项,需要的朋友参考一下 它是一个寻找二叉搜索树的最小值的程序。 演算法 示例 输出结果
给定一个范围[a,b](包含两者),我需要在二进制表示中找到最大数量为“1”的最小数字。我目前的方法是找到从a到b的所有数字中设置的位数,并跟踪最大值。然而,这很慢,有更快的方法吗?
我需要帮助确定R中观察组中最长的连续值序列(=1)。 我有城镇月降雨量的数据。我需要确定每年月降雨量高于年平均值的最长时期(rain_above = 1)。如果每年有两个等长的时期,我想确定总降雨量最大的时期。 一些示例数据: 在df,A镇在2000年的第4个月到第8个月之间有一个雨季。这是rain_above=1的唯一时期。 B镇在2001年有一个雨季,在第1个月和第3个月之间。尽管有两个长度相
问题内容: 我有一个字节的二进制字符串表示形式,例如 如何将其转换为真实的二进制值并将其写入二进制文件? 问题答案: 使用该功能具有的读取二进制值作为一个整数。 Python 2使用字符串来处理二进制数据,因此您将使用该函数将整数转换为一字节的字符串。 Python 3个中处理二进制和文本不同,所以你需要使用的类型来代替。它没有直接等效于该函数的函数,但是构造函数可以获取字节值列表。我们放入一个元