栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

力扣周赛 第279场 Java题解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣周赛 第279场 Java题解

开篇分享

⭐️本次参加周赛AC两题,进比赛时间算迟到,就没来得及完成第三题 ,分享一下自己的Java题解!

2164. 对奇偶下标分别排序

主要思路: 先根据index奇偶性,创建对应数组存储;再分别sort从小到大排序;最后用三目运算符分别更新对应的值。

时间复杂度: O(n) ;

class Solution {
    public int[] sortEvenOdd(int[] nums) {
        int len = nums.length ;
        int[] oddArr = new int[len/2] ; //数组index 为 奇
        int[] evenArr = new int[len - len/2] ; //数组index 为偶
        //int[] res = new int[len] ;
        int x = 0, y = 0;
        for (int i = 0; i < len ;i++) {
            if (i % 2 == 0) evenArr[x++] = nums[i] ;
            else oddArr[y++] = nums[i] ;
        }
        Arrays.sort(evenArr) ;
        Arrays.sort(oddArr) ;

        x = 0 ;
        y = oddArr.length -1;
        for (int i = 0 ; i< len; i++) {
            nums[i] = i % 2 == 0 ? evenArr[x++] : oddArr[y--] ;
        }
        return nums ;
    }
}
2165. 重排数字的最小值

主要思路:

    判断是否为0以及其正负性;正数情况下,排序后,首位为0的情况,用交换次序完成;负数情况下,转换为StringBuilder ,调用其reverse()方法即可;做题困难:对于 int ,char数组,String, StringBuilder 间的转换很重要
class Solution {
    public long smallestNumber(long num) {
        if (num  == 0) return 0 ;
        Boolean flag = num  < 0  ; //falg 标记是否为 负
        num = num < 0 ? num* -1 : num ;
        // int -> string -> char数组
        char[] c = String.valueOf(num).toCharArray() ;
        Arrays.sort( c ) ;
        String str ;
        if (!flag) {
            int non= 0 ;
            // 若为正,判断首位是否为 0 
            for (; non< c.length; non++) {
                if (c[non] != '0')  //若不为字符 ‘0’
                    break ;
            }
            //转换为数组交换位次
            char temp = c[non] ;
            c[non] = c[0] ;
            c[0] = temp ;
            //字符数组 转为字符串
            str = new String (c) ;
        }else {
            str = new String (c) ;
            //StringBuider 处理字符串性能更好,这里调用reverse方法
            StringBuilder sb = new StringBuilder(str) ;
            str = "-".concat(sb.reverse().toString()) ; 
        }
        return Long.valueOf(str) ;//将字符串 转为 Long类型
    }
}
2166. 设计位集

主要思路 :创建两个哈希表,分别存储对应的值,代码如下!

class Bitset {
    int size ;
    Set one = new HashSet<>() ;
    Set zero = new HashSet<>() ;

    public Bitset(int size) {
        this.size = size ;
        for (int i =0  ; i< size; i++) zero.add(i) ;
    }
    
    public void fix(int idx) {
        one.add(idx) ;
        zero.remove(idx) ;
    }
    
    public void unfix(int idx) {
        zero.add(idx) ;
        one.remove(idx) ;
    }
    
    public void flip() {
        Set s = one ;
        one = zero ;
        zero = s ; 
    }
    
    public boolean all() {
        return one.size() == size ;
    }
    
    public boolean one() {
        return one.size() >= 1 ;
    }
    
    public int count() {
        return one.size() ;
    }
    
    public String toString() {
        StringBuilder sb  =new StringBuilder() ;
        for (int i =0; i< size; i++) {
            if (one.contains(i)) sb.append("1") ;
            else if ( zero.contains(i)) sb.append("0") ;
        }
        return sb.toString() ;
    }
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731317.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号