单页网站 开元,万网网站备案证书,电子商务网页设计与网站建设论文,兰州城建设计院网站1. 解题
给定一个正整数 N#xff0c;找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。
如果没有两个连续的 1#xff0c;返回 0 。
输入#xff1a;22
输出#xff1a;2
解释#xff1a;
22 的二进制是 0b10110 。
在 22 的二进制表示中#xff0c;有三个 …1. 解题
给定一个正整数 N找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。
如果没有两个连续的 1返回 0 。
输入22
输出2
解释
22 的二进制是 0b10110 。
在 22 的二进制表示中有三个 1组成两对连续的 1 。
第一对连续的 1 中两个 1 之间的距离为 2 。
第二对连续的 1 中两个 1 之间的距离为 1 。
答案取两个距离之中最大的也就是 2 。来源力扣LeetCode
链接https://leetcode-cn.com/problems/binary-gap
著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。2. 解题
数字 N 和1i操作获取为1的二进制位存在数组里遍历数组求 maxA[i1]−A[i]maxA[i1]-A[i]maxA[i1]−A[i] class Solution {
public:int binaryGap(int N) {int indexOfOne[32] {0}, idx 0;for (int i 0; i 32; i){if((N (1i)) ! 0)indexOfOne[idx] i;}int maxGap 0, curGap, prevOneIndex;for (int i 0; i 31; i){curGap indexOfOne[i1]-indexOfOne[i];if(maxGap curGap)maxGap curGap;}return maxGap;}
};