第 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 分钟前
【3.0修订版】创世与节点工程:genesis.json 与 node.toml 解剖
数据结构·算法·json·去中心化·区块链·智能合约·信任链
Wang's Blog9 分钟前
Java框架 SpringCloud 快速入门: 从服务拆分到注册中心的落地路线
java·开发语言·spring cloud
影视飓风TIM10 分钟前
Linux 进程虚拟地址空间详解
linux·算法
如何原谅奋力过但无声14 分钟前
【灵神高频面试题合集21-25】动态规划(下)
算法·动态规划
释厄62323 分钟前
学术引用本体论——WorkBuddy 学术科学文化三违反
网络·人工智能·算法
梦帮科技25 分钟前
【3.0修订版】 RNS 代币架构:ERC20 五件套扩展与六钱包分配
数据结构·后端·算法·架构·node.js·区块链·php
Wang's Blog26 分钟前
Java框架 SpringCloud 快速入门: 全局过滤器(GlobalFilter)自定义鉴权
java·开发语言·spring cloud
paopaokaka_luck36 分钟前
高校社团管理(AI辅助任务分配、协同过滤算法推荐、ECharts数据可视化、活动参与闭环、校园交流与反馈、器材借还管理)
java·前端·javascript·spring boot·数据分析·echarts
薛定e的猫咪43 分钟前
(AISTATS 2023)BaCaDI:未知干预下的贝叶斯因果发现
人工智能·深度学习·算法·机器学习
vx_Biye_Design1 小时前
springboot小区管理系统68491-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express