首页 > 编程语言 >算法--2023.2.1

算法--2023.2.1

时间:2023-02-01 12:22:49浏览次数:44  
标签:int nums -- people length 2023.2 算法 boolean

1.力扣406--根据身高重建队列

class Solution {
    //将二维数组按照不同人的身高升序排列,如果身高相同则按照位置降序排列
    public int[][] reconstructQueue(int[][] people) {
        Arrays.sort(people, new Comparator<int[]>() {
                @Override
                public int compare(int[] o1, int[] o2) {
                    if(o1[0] == o2[0]){
                        return o2[1] - o1[1];
                    }else{
                        return o1[0] - o2[0];
                    }
                }
            });
        int m = people.length, n = people[0].length;
        int[][] res = new int[m][n];
        boolean[] flag = new boolean[m];
        for(int[] temp : people){
            int cnt = temp[1]+1;
            int position = 0;
            for(;position<m;position++){
                if(flag[position] == true){
                    continue;
                }
                cnt--;
                if(cnt == 0){
                    flag[position] = true;
                    break;
                }
            }
            res[position][0] = temp[0];
            res[position][1] = temp[1];
        }    
        return res;
    }
}

  

 

2.力扣9--回文数

class Solution {
    public boolean isPalindrome(int x) {
        if(x<0){
            return false;
        } 
        List<Integer> container = new LinkedList<>();
        while(x!=0){
            int a = x%10;
            container.add(a);
            x = x/10;
        }
        Object[] temp = container.toArray();
        int n = temp.length;
        if(n%2 == 0){
            int l = n/2-1, r = n/2;
            while(l>=0&&r<n){
                if(temp[l--]!=temp[r++]){
                    return false;
                }
            }
        }else{
            int l = n/2, r = n/2;
            while(l>=0&&r<n){
                if(temp[l--]!=temp[r++]){
                    return false;
                }
            }
        }
        return true;
    }
}

3.力扣416--分割等和子集

class Solution {
    //背包问题,这里把包的容量看成数组总大小的一半,然后每个元素只能用一次,看是否可以装满
    public boolean canPartition(int[] nums) {
        int sum = 0, n = nums.length;
        for(int i = 0;i<n;i++){
            sum += nums[i];
        }
        //如果总和是一个奇数,那这里本来就不可能成功
        if(sum%2 == 1){
            return false;
        }
        int capcity = sum/2;
        boolean[] dp = new boolean[capcity+1];
        dp[0] = true;
        for(int i = 0;i<n;i++){
            for(int j = capcity;j>=nums[i];j--){
                dp[j] = dp[j] || dp[j-nums[i]];
            }
        } 
        return dp[capcity];

    }
}

  

  

标签:int,nums,--,people,length,2023.2,算法,boolean
From: https://www.cnblogs.com/lyjps/p/17082142.html

相关文章

  • 千姿百态,瞬息万变,Win11系统NeoVim打造全能/全栈编辑器(前端/Css/Js/Vue/Golang/Ruby
    我曾经多次向人推荐Vim,其热情程度有些类似现在卖保险的,有的时候,人们会因为一些弥足珍贵的美好暗暗渴望一个巨大的负面,比如因为想重温手动挡的快乐而渴望买下一辆二十万公里......
  • ARM架构的CentOS7使用virt-manager创建虚拟机提示max socket is 4095
    ARM架构的CentOS7使用virt-manager创建虚拟机提示maxsocketis4095问题描述ARM架构的CentOS7安装libvirt、qemu-kvm和virt-manager后,启动virt-manager后报错:Errorpoll......
  • 开机自动启动workerman
    转载自:https://www.gxlsystem.com/qianduan-5102.html第一步:创建服务文件workerman.service(权限755)目录:/lib/systemd/system/workerman.service第二步:复制以下代码......
  • 牡牛和牝牛
    牡牛和牝牛约翰要带$N$只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛。牛们要站成一排,但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡牛之间至少......
  • Linux逻辑卷
    Linux逻辑卷架构与相关命令1.为什么要设计逻辑卷(lvm)Linux操作系统中的存储/文件系统,一般都是基于磁盘分区策略来实现的。这过程类似聚会上切蛋糕,一块蛋糕切出来,再分给......
  • C#.NET 前端大文件上传
    ​ IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag     ......
  • ffmpeg 简单教程
    关于ffmpeg的另一个帖子​​​https://www.cnprint.org/bbs/thread/83/345103/​​检测是否安装成功环境变量:测试是否安装成功win+r输入:cmdcmd:输入ffmpeg-version......
  • Aijs 每个画板单独存PDF
    vardoc=activeDocument;varpt=72/25.4varnum_layer=undefined;//拿到图层写了数量的for(vari=0;i<doc.layers.length;i++){varlayer=activeDoc......
  • aijs 关于 获取 类型的 constructor很多有用的信息
    varve=app.version;try{if(ve.split(".").length>1){ve=eval(ve.split(".")[0]);}else{ve=eval(ve);};}catch(e){ve=17;};if(ve>16){va......
  • aijs 遍历字典
    varperson={fname:"John",lname:"Doe",age:25};for(xinperson){alert("key"+x)alert("value"+person[x]);}......