当前位置: 首页 > news >正文

java面试总结-20250616

题目1: 求一个int类型正整数二进制中最高位1的位置?
比如10,二进制位1010,最高位1所在位置位4。

解体思路:

  1. 使用高位扩散,将1010扩散位1111
  2. 使用二分法,计算32位二进制中1111前面0的位数n;
  3. 结果为32-n

代码如下:

    public static int getMaxDigit(int num) {// 获取最高位为1的数,例如8会得到8(1000)int highestOneBit = Integer.highestOneBit(num);// 计算这个数的二进制位数return 32 - numberOfLeadingZeros2(highestOneBit);}public static int numberOfLeadingZeros2(int i) {int res = 1;// 看条件A:高16为是否都为0。// 如果是结果加16;并且将低16位变成高16位(这里是为了和条件A的反逻辑即高16位有不为0的情况进行统一)if (i >>> 16 == 0) {i <<= 16;res += 16;}// 看高8位是否都为0if( i >>> 24 == 0) {res += 8;i <<= 8;}// 看高4位是否都为0if (i >>> 28 == 0) {res += 4;i <<= 4;}// 看高2位是否都为0if (i >>> 30 == 0) {res += 2;i <<= 2;}// 看高一位是否为0,因为res的初始值为1return res - (i >>> 31);}

highestOneBit、numberOfLeadingZeros 这两个方法都是Integer包装类中的。
highestOneBit:求指定num的最高位为1,其他位为0的数字。实现逻辑如下:

    public static int highestOneBit(int i) {// HD, Figure 3-1i |= (i >>  1);i |= (i >>  2);i |= (i >>  4);i |= (i >>  8);i |= (i >> 16);return i - (i >>> 1);}

用位移和或运算实现。

题目2: 给一个数字target,求数组和为target的全部组合,相同的组合只能出现一次。
输入:target=8,nums=[2,1,5,1,6,7]
输出:
[[1,1,6],
[1,2,5],
[1,7]]

思路:
1.排序
2.回溯
3.去重

public static void main(String[] args) {System.out.println(Arrays.deepToString(getCombineSum(8, new int[]{2,1,5,1,6,7}).toArray()));}public static List<List<Integer>> getCombineSum(int target, int[] nums) {Arrays.sort(nums);List<List<Integer>> res= new ArrayList<>(16);List<Integer> path = new ArrayList<>(16);hsSum(res, path, target, nums, 0);return res;}public static void hsSum(List<List<Integer>> res, List<Integer> path, int target, int[] nums, int begin) {if (target == 0) {res.add(new ArrayList<>(path));return;} else if (target < 0) {return;}for (int i = begin; i < nums.length; i++) {if (i > begin && nums[i - 1] == nums[i]) {continue;}path.add(nums[i]);hsSum(res, path, target - nums[i], nums,i + 1);path.remove(path.size()-1);}}
http://www.lryc.cn/news/571328.html

相关文章:

  • 字符操作函数续上
  • 图扑 HT 3D 场景视频嵌入应用功能
  • cuda编程笔记(4)--纹理内存
  • OpenCV——图像形态学
  • Docker 快速搭建一个基于 GPT-Vis 组件的统计图表生成服务
  • 【超详细】讯飞智能车PC电脑烧录指南(高级系统部署与恢复)
  • 系统思考:越用力推系统,系统反弹性越大
  • Flask入门指南:从零构建Python微服务
  • Appium环境安装
  • 关于人工智能未来的趋势
  • B站PWN教程笔记-12
  • 计算机视觉| 分割大模型Segment Anything(SAM)从0到1使用
  • Muon:神经网络隐藏层的革命性优化器
  • 从零到一:C语言基础入门学习路线与核心知识点全解析
  • 香橙派3B学习笔记12:C语言操作GPIO_<wiringPi.h>_点灯通用输入输出
  • FPGA 44 ,SDC 时序约束标准( 深度解析 SDC 标准 )
  • 期末作业swing水果店管理系统
  • 二分算法深度解析
  • 简说 python
  • C++ vector(2)
  • 【编译工具】CodeRider 2.0:驭码 CodeRider 2.0 全流程智能研发协作平台深度技术测评报告
  • Java在IDEA中终端窗口输出正常,但打包成JAR后中文乱码问题
  • 『大模型笔记』第3篇:多长的 Prompt 会阻塞其他请求?优化策略解析
  • Java线程池全面解析:原理、实现与最佳实践
  • Socket 编程 UDP
  • 【Linux】UDP与TCP协议
  • Kubernetes RDMA 概述与实战(大模型场景)
  • UE5 游戏模板 —— Puzzle 拼图游戏
  • 【配置教程】新版OpenCV+Android Studio环境配置(4.11测试通过)
  • 在线教学课程视频AI智能大纲代码与演示