中一专题

leetcode做题记录 3011(计算二进制中一的个数)3012

3011. 判断一个数组是否可以变为有序 [题目的“有序”等价于“升序”] 思考 题目要求两个相邻元素在二进制下数位为1的数目相同才可以交换,那就要判断1相同的一块是否是按顺序排序的。从大到小和从小到大都测试一遍。找到一块中最大的和最小的,放在stack或者vector里面。 流程是先把num中的1的数量统计成vec,之后找出一块中的最大值和最小值,放在两个栈里面,看是否有序。 计算二进制

取出/var/log/secure中一小时内登录失败超过三次的IP

取出/var/log/secure中一小时内登录失败超过三次的IP 前两个字段是日期,第三个字段是小时,第四个字段是IP cat /var/log/secure | sort -i | awk -F '[ :]' '/Failed/{a[$1" "$2" "$3" "$4" "$(NF-3)]++}END{for(i in a)if(a[i]>3)print i}'   s="Jul 7 13:

剑指offer--- 二进制中一的个数

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解题思路: 该问题如果使用的是,第一反应中想到的向右移,然后判断target是否为0的方法,会因为负数造成oom。 因此,使用n & (n - 1) 的方式;将一个数减去1,再与原来的数做与运算会将原来的数的最后一位变成0,因此,有多少个1就可以进行多少次这样的运算。 java public class S