每日算法&面试题,大厂特训二十八天——第九天(位运算)

Posted 肥学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日算法&面试题,大厂特训二十八天——第九天(位运算)相关的知识,希望对你有一定的参考价值。

目录标题

导读

肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。上一期我们完成了动态规划二十一天现在我们进行下一项对各类算法进行二十八天的一个小总结。还在等什么快来一起肥学进行二十八天挑战吧!!

特别介绍

📣小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶

📣python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章,可以让你快乐学python练手项目专栏

📣另外想学JavaWeb进厂的同学可以看看这个专栏:传送们

📣这是个冲刺大厂面试专栏还有算法比赛练习我们一起加油 上岸之路

算法特训二十八天

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。

如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

示例 1:

输入:n = 1
输出:true
解释:20 = 1
示例 2:

输入:n = 16
输出:true
解释:24 = 16
示例 3:

输入:n = 3
输出:false
示例 4:

输入:n = 4
输出:true
示例 5:

输入:n = 5
输出:false

解题思路:

class Solution 
    public boolean isPowerOfTwo(int n) 
        return n > 0 && (n & (n - 1)) == 0;
    



编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。

提示:

请注意,在某些语言(如
Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。

示例 1:

输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'
示例 2:

输入:00000000000000000000000010000000
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'
示例 3:

输入:11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'
我们把一个数a的二进制数假设为(…1000),那么我们剪去1,就可以得到了(…0111),我们让(…1000&(…0111),那么就可以得到(…0000),于是我们这样就可以把a的二进制数最低位的1消去了。我们通过这种操作,就可以把所有的1都消去了,然后统计消去的1的个数,我们就可以得到结果了。


public class Solution 
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) 
        int number = 0;//记录1的个数
        while(n!=0)
            n &= (n - 1);
            ++number;
        
        return number;
    




面试题

什么是堆内存?参数如何设置?
堆内存是指由程序代码自由分配的内存,与栈内存作区分。
在 Java 中,堆内存主要用于分配对象的存储空间,只要拿到对象引用,所有线程都可
以访问堆内存。

 -Xmx, 指定最大堆内存。 如 -Xmx4g. 这只是限制了 Heap 部分的最大值为 4g。这个内
存不包括栈内存,也不包括堆外使用的内存。

 -Xms, 指定堆内存空间的初始大小。 如 -Xms4g。 而且指定的内存大小,并不是操作系
统实际分配的初始值,而是 GC 先规划好,用到才分配。 专用服务器上需要保持 –Xms
和 –Xmx 一致,否则应用刚启动可能就有好几个 FullGC。当两者配置不一致时,堆内存
扩容可能会导致性能抖动。

 -Xmn, 等价于 -XX:NewSize,使用 G1 垃圾收集器 不应该 设置该选项,在其他的某些
业务场景下可以设置。官方建议设置为 -Xmx1/2 ~ 1/4.-XX:MaxPermSize=size, 这是 JDK1.7 之前使用的。Java8 默认允许的 Meta 空间无限大,此参数无效。

 -XX:MaxMetaspaceSize=size, Java8 默认不限制 Meta 空间, 一般不允许设置该选项。

 -XX:MaxDirectMemorySize=size,系统可以使用的最大堆外内存,这个参数跟Dsun.nio.MaxDirectMemorySize 效果相同。

 -Xss, 设置每个线程栈的字节数。 例如 -Xss1m 指定线程栈为 1MB,与- XX:ThreadStackSize=1m 等价

点击直接资料领取

这里有python,Java学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。反正看看也不亏。

以上是关于每日算法&面试题,大厂特训二十八天——第九天(位运算)的主要内容,如果未能解决你的问题,请参考以下文章

每日算法&面试题,大厂特训二十八天——第十三天(数组)

每日算法&面试题,大厂特训二十八天——第九天(位运算)

每日算法&面试题,大厂特训二十八天——第二十一天(树)

每日算法&面试题,大厂特训二十八天——第二十七天(函数)

每日算法&面试题,大厂特训二十八天——第二十三天(树)

每日算法&面试题,大厂特训二十八天——第二十六天(循环)