力扣2859 补9.19

目前图论模块没耍过。200题,想先试试周赛。

开始试试周赛题目,好家伙,第一个简单题就让我搞了2个小时左右才做出来,主要是我看题目还是不仔细,题目理解就有点烦,然后就是Java的各种基础语法都忘了,我用的常规暴力解法,思路还算好想,但毕竟代码实现对我来说还是挺麻烦的。

然后代码有点bug死在了死循环里面,搞了半天。。。

2859.计算K置位下标对应元素的和

这里getmax函数就是获得pow(2,n)的最大值,且小于num,返回这个最大值,然后二进制就有了一个1,在让num减去最大值直到num为0。

注意pow返回的是double。

class Solution {

    public int sumIndicesWithKSetBits(List nums, int k) {

        int sum=0;

        for(int num=0;num

            int k1=0,numvalue=num;

            while(numvalue>0){

                numvalue-=getmax(numvalue);

                System.out.println(numvalue);

                k1++;

            }

            if(k1==k){

            sum+=nums.get(num);

            }

        }

        return sum;

    }

    int getmax(int num){

        if(num==0) return 0;

        for(int i=0;;i++){

            if(Math.pow(2,i)==num){

                return num;

            }

            else if(Math.pow(2,i)>num){

                return (int)(Math.pow(2,i-1));

            }

        }

    }

}

 

 

你可能感兴趣的:(力扣,算法,职场和发展,leetcode,数据结构,java)