当前位置: 首页> 财经> 产业 > app界面设计风格有哪些_软件培训教程_软件外包平台_海外营销

app界面设计风格有哪些_软件培训教程_软件外包平台_海外营销

时间:2025/7/9 1:13:39来源:https://blog.csdn.net/weixin_73982851/article/details/145745180 浏览次数:0次
app界面设计风格有哪些_软件培训教程_软件外包平台_海外营销

题目:

给你一个  整数 n 。

用 even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。

用 odd 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的奇数下标的个数。

返回整数数组 answer ,其中 answer = [even, odd] 。

示例 1:

输入:n = 17
输出:[2,0]
解释:17 的二进制形式是 10001 。 
下标 0 和 下标 4 对应的值为 1 。 
共有 2 个偶数下标,0 个奇数下标。

示例 2:

输入:n = 2
输出:[0,1]
解释:2 的二进制形式是 10 。 
下标 1 对应的值为 1 。 
共有 0 个偶数下标,1 个奇数下标。

提示:

  • 1 <= n <= 1000

解法:遍历:

代码功能

  1. 输入:一个整数 n

  2. 输出:一个长度为 2 的 vector<int>,其中:

    • 第一个元素表示 n 的二进制表示中偶数位(从 0 开始计数)上值为 1 的个数。

    • 第二个元素表示 n 的二进制表示中奇数位上值为 1 的个数。


代码逐行解释

class Solution {
public:vector<int> evenOddBit(int n) {vector<int> ans; // 用于存储 n 的二进制表示if(n == 0) // 特殊情况:如果 n 为 0,直接返回 {0, 0}{ans.push_back(0);}while(n > 0) // 将 n 转换为二进制,存储在 ans 中{ans.push_back(n % 2); // 取余数,得到当前最低位n /= 2; // 右移一位}// reverse(ans.begin(), ans.end()); // 这里注释掉了反转操作int num1 = 0; // 统计偶数位上 1 的个数int num2 = 0; // 统计奇数位上 1 的个数for(int i = 0; i < ans.size(); i++) // 遍历二进制位{cout << ans[i] << " "; // 打印当前二进制位(调试用)if(ans[i] == 1) // 如果当前位是 1{if(i % 2 == 0) // 如果是偶数位{num1++; // 偶数位计数器加 1}else // 如果是奇数位{num2++; // 奇数位计数器加 1}}}vector<int> num; // 用于存储最终结果num.push_back(num1); // 将偶数位的 1 的个数存入结果num.push_back(num2); // 将奇数位的 1 的个数存入结果return num; // 返回结果}
};

关键点说明

  1. 二进制转换

    • 通过 while(n > 0) 循环,将 n 转换为二进制,存储在 ans 中。

    • 注意:ans 中存储的二进制是逆序的(最低位在前)。

  2. 偶数位和奇数位的定义

    • 代码中,偶数位和奇数位是根据 i 的值来判断的:

      • i % 2 == 0:偶数位(例如,i = 0, 2, 4, ...)。

      • i % 2 != 0:奇数位(例如,i = 1, 3, 5, ...)。

    • 由于 ans 是逆序存储的,i = 0 对应的是二进制的最低位(即第 0 位),i = 1 对应的是第 1 位,依此类推。

    • 数组从右往左看!!!

  3. 统计 1 的个数

    • 遍历 ans,统计偶数位和奇数位上值为 1 的个数,分别存储在 num1 和 num2 中。

  4. 返回结果

    • 最终结果是一个长度为 2 的 vector<int>,其中第一个元素是偶数位上 1 的个数,第二个元素是奇数位上 1 的个数。

关键字:app界面设计风格有哪些_软件培训教程_软件外包平台_海外营销

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: