leetcode 2917.找出数组中的K-or值

说实话这道题就是阅读题。虽然作者本题写的并不怎么简单,但是思路还是很清楚的。

思路:通过题目我们就可以知道,本质上就是算出这个数的二进制,然后在二进制中找到各位有多少1的题目而已。

int n=nums.size();
        int arr[51][32];
        for(int i=0;i<51;i++){
            for(int j=0;j<32;j++)
            {
                arr[i][j]=0;
            }
        }
        int x=0;
        int q=0;
        for(int i=0;i

这一段主要就是对于二进制数的求法,适合新手观看。

这样我们求出来二进制之后,然后再次进行双重循环遍历,我们在遍历的时候,定义的二维数组含义就是第一维的下标用来表示这个数在nums中的位置,第二维空间里自然就是用来存储二进制数了。我们必须要列优先遍历,这样才能纵向和nums这几个数的第0位,第一位等等这样比较下去,别忘了计数,看看这些数里第i位有多少1.

然后就和k进行比较,如果>=k,那么我们直接储存这里的坐标i,否则继续循环。

最后退出循环整个结束之后,我们就按照题目所给的方式求解最终的数就行了。

class Solution {
public:
    int findKOr(vector& nums, int k) {
        int n=nums.size();
        int arr[51][32];
        for(int i=0;i<51;i++){
            for(int j=0;j<32;j++)
            {
                arr[i][j]=0;
            }
        }
        int x=0;
        int q=0;
        for(int i=0;ires;
        for(int i=0;i<32;i++){
            count=0;
            for(int j=0;j=k)
            res.push_back(i);
        }
        int sum=0;
        for(int i=0;i

你可能感兴趣的:(leetcode,算法,数据结构)