classSolution:deftrainingPlan(self, actions: List[int])->int:
res, m =0,3
counter_arr =[0]*32for act in actions:for i inrange(32):
counter_arr[i]+= act &1
act >>=1for i inrange(31,-1,-1):
res <<=1
res += counter_arr[i]% m
return res
Java
classSolution{publicinttrainingPlan(int[] actions){int res =0, m =3;int[] counter =newint[32];// java中int型数据包含4个byte, 1byte=8bit, 共32位;最高位是符号位for(int act : actions){for(int i =0; i <32;++i){
counter[i]+= act &1;
act >>=1;}}for(int i =31; i >=0;--i){
res <<=1;
res += counter[i]% m;// 这俩顺序不能颠倒, 否则会导致最后往左多挪动1位}return res;}}