第 479 场周赛Q1——3769. 二进制反射排序

题目链接:3769. 二进制反射排序(简单)

算法原理:

解法:排序

击败40.79%

时间复杂度O(Nlogn)

①计算反射值:将数字转为二进制并反转,转回十进制(0 直接返回 0)

②绑定键值:构建二维数组,存储每个数字的(原数 - 反射值)配对

③自定义排序:按反射值升序排序,反射值相同则按原数升序

④提取结果:遍历配对数组,提取原数生成最终排序数组

Java代码:

java 复制代码
class Solution {
    public int[] sortByReflection(int[] nums) {
        int n=nums.length;
        int[][] pair=new int[n][2];
        for(int i=0;i<n;i++){
            pair[i][0]=nums[i];
            pair[i][1]=conversion(nums[i]);
        }
        Arrays.sort(pair,(a,b)->{
            if(a[1]!=b[1]) return a[1]-b[1];
            return a[0]-b[0];
        });
        int[] ret=new int[n];
        for(int i=0;i<n;i++) ret[i]=pair[i][0];
        return ret;
    }
    public int conversion(int x){
        if(x==0) return 0;
        StringBuffer sb=new StringBuffer();
        while(x!=0){
            int tmp=x%2;
            sb.append(tmp);
            x/=2;
        }
        //2告诉程序前面的字符串是什么进制表示的数字,进而转换成十进制
        return Integer.parseInt(sb.toString(),2);
    }
}
相关推荐
来一碗刘肉面1 小时前
顺序表的按值查找
数据结构·c++·算法
咖啡八杯1 小时前
GoF设计模式——状态模式
java·面试·架构
荣码1 小时前
Prompt工程实战:同一个需求换3种写法,效果差10倍
java·python
weixin_422329311 小时前
AgentScope Java ReActAgent 核心循环深度解析
java·开发语言·人工智能
952361 小时前
RabbitMQ - 高级特性
java·spring boot·分布式·后端·rabbitmq
尽兴-2 小时前
传统 Java/Vue 系统如何一步步接入 AI 维护
java·vue.js·人工智能·ai·大模型
shuoshuohaohao2 小时前
《HTTP协议》
java·web
zzz_23682 小时前
【Java实习面试算法冲刺】图论
java·算法·面试
大鱼>2 小时前
宠物监控数据安全与隐私保护:端到端加密与合规实践
人工智能·深度学习·算法·iot·宠物
一路向北North2 小时前
Spring Security OAuth2.0(22):分布式系统授权-搭建网关
java·后端·spring