讨论一个问题来回答对给定数组的查询。例如,对于每个查询索引,我们需要查找索引左侧的 1 和 0 的数量。
Input: arr[ ] = { 0, 1, 1, 1, 0, 0, 0, 1, 0, 0}, queries[ ] = { 2, 4, 1, 0, 5 }Output:query 1: zeros = 1,ones = 1query 2: zeros = 1,ones = 3query 3: zeros = 1,ones = 0query 4: zeros = 0,ones = 0query 5: zeros = 2,ones = 3Input: arr[ ] = { 0, 0, 1, 1, 1, 0, 1, 0, 0, 1 }, queries[ ] = { 3, 2, 6 }Output:query 1: zeros = 2,ones = 1query 2: zeros = 2,ones = 0query 3: zeros = 3,ones = 3
登录后复制
寻找解决方案的方法
天真的方法
解决这个问题的简单方法是遍历数组到查询的索引并检查每个元素;如果为 0,则将零计数器加 1,否则将个计数器加 1。
示例
#include using namespace std;int main(){ int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0}; int queries[] = { 2, 4, 1, 0, 5 }; int qsize = sizeof(queries) / sizeof(queries[0]); int zeros=0,ones=0; // loop for running each query. for(int i = 0;i输出
query 1: zeros = 1,ones = 1query 2: zeros = 2,ones = 2query 3: zeros = 0,ones = 1query 4: zeros = 0,ones = 0query 5: zeros = 2,ones = 3登录后复制
高效方法
在之前的方法中,每次我们都从第 0 个索引开始计算新查询的 1 和 0。
另一种方法是首先计算 0 和 1。出现在每个索引的左侧,将它们存储在数组中,并根据查询中写入的索引返回答案。
立即学习“C++免费学习笔记(深入)”;
示例
#include using namespace std;int main(){ int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0}; int queries[] = { 2, 4, 1, 0, 5 }; int n = sizeof(nums) / sizeof(nums[0]); int arr[n][2]; int zeros = 0, ones = 0; // traverse through the nums array. for (int i = 0; i输出
query 1: zeros = 1,ones =1query 2: zeros = 2,ones =2query 3: zeros = 0,ones =1query 4: zeros = 0,ones =0query 5: zeros = 2,ones =3登录后复制
结论
在本教程中,我们讨论了为给定数组中的每个查询返回索引左侧的 1 和 0 的数量。我们讨论了解决这个问题的简单方法和有效方法。我们还讨论了解决此问题的 C++ 程序,我们可以使用 C、Java、Python 等编程语言来实现。我们希望本教程对您有所帮助。
以上就是将以下内容翻译为中文:C++ 查询以回答给定索引左侧的1和0的数量的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2585141.html