首页 > 其他分享 >[leetcode]第 16 天 排序(简单)、第 17 天 排序(中等)

[leetcode]第 16 天 排序(简单)、第 17 天 排序(中等)

时间:2023-01-05 23:11:54浏览次数:46  
标签:arr return String 17 16 int strs num 排序

面试题45. 把数组排成最小的数

思路

使用到了快速排序

class Solution {
    public String minNumber(int[] nums) {
        // 初始化字符串数组
        String[] strs = new String[nums.length];
        // 循环添加
        for(int i = 0; i < nums.length; i++){
            strs[i] = String.valueOf(nums[i]);
        }
        // 快速排序
        quickSort(strs, 0, strs.length - 1);
        StringBuilder res = new StringBuilder();
        for(String s : strs)
            res.append(s);
        return res.toString();
    }
    void quickSort(String[] strs, int l, int r){
        if(l >= r) return;
        int i = l, j = r;
        String tmp = strs[i];
        while(i < j){
            while((strs[j] + strs[l]).compareTo(strs[l] + strs[j]) >= 0 && i < j) j--;
            while((strs[i] + strs[l]).compareTo(strs[l] + strs[i]) <= 0 && i < j) i++;
            tmp = strs[i];
            strs[i] = strs[j];
            strs[j] = tmp;
        }
        strs[i] = strs[l];
        strs[l] = tmp;
        quickSort(strs, l, i - 1);
        quickSort(strs, i + 1, r);
    }
}

面试题61. 扑克牌中的顺子

思路

class Solution {
    public boolean isStraight(int[] nums) {
        Set<Integer> mySet = new HashSet<>();
        int max = 0, min = 14;
        for(int num : nums){
            if(num == 0) continue;
            if(mySet.contains(num)) return false;
            mySet.add(num);
            max = Math.max(max, num);
            min = Math.min(min, num);
        }
        return max - min < 5;
    }
}

40. 最小的k个数

思路

快速排序

class Solution {
    public int[] getLeastNumbers(int[] arr, int k) {
        quickSort(arr, 0, arr.length - 1);
        return Arrays.copyOf(arr, k);
    }

    void quickSort(int[] arr, int l, int r){
        if(l >= r) return;
        int i = l, j = r;
        while(i < j){
            while(i < j && arr[j] >= arr[l]) j--;
            while(i < j && arr[i] <= arr[l]) i++;
            swap(arr, i, j);
        }
        swap(arr, i, l);
        quickSort(arr, l, i - 1);
        quickSort(arr, i + 1, r);
    }
    private void swap(int[] arr, int i, int j){
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }
}

41. 数据流中的中位数

思路

大顶堆和小顶堆,学到了

class MedianFinder {
    Queue<Integer> A, B;
    /** initialize your data structure here. */
    public MedianFinder() {
        A = new PriorityQueue<>(); // 小
        B = new PriorityQueue<>((x, y) -> (y - x)); // 大
    }
    
    public void addNum(int num) {
        if(A.size() != B.size()){
            A.add(num);
            B.add(A.poll());
        }else{
            B.add(num);
            A.add(B.poll());
        }
    }
    
    public double findMedian() {
        return A.size() != B.size() ? A.peek() : (A.peek() + B.peek()) / 2.0;
    }
}

标签:arr,return,String,17,16,int,strs,num,排序
From: https://www.cnblogs.com/vincy9501/p/17029088.html

相关文章

  • NC16466 [NOIP2015]信息传递
    题目链接题目题目描述有n个同学(编号为1到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti的同......
  • [LeetCode]016-最接近的三数之和
    >>>传送门题目给你一个长度为n的整数数组 nums 和一个目标值 target。请你从nums中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组......
  • 2023.1.05 java实现冒泡排序
    自己的思路:publicclassmaopaopaixu{publicstaticvoidmain(String[]args){int[]arr={24,64,26,89,45};inttmp=0;for(in......
  • Codeforces Contest 1616
    A.IntegerDiversity直接用个map贪心,如果有相同的就反向即可。B.MirrorintheString这道题洛谷的翻译锅了,所以建议去看原题。考虑这样一个字符串baacc,那么答案显......
  • AcWing.1175 最大半连通子图
    题目描述\(\qquad\)一个有向图\(G=(V,E)\)称为半连通的,如果满足:\(\forallu,v\inV\),满足\(u\tov\)或\(v\tou\),即对于图中任意两点\(u,v\),存在一条\(u\)到......
  • 通关搜索和图论 day_13 -- 树和图的深搜和宽搜和拓扑排序
    树和图的存储树是一种特殊的图,无环连通图图分为有向图和无向图如果是无向图就建立两个边a->b&&b->a,所有无向图就是特殊的有向图邻接矩阵g[a,b]记录a->b......
  • NC16416 [NOIP2017]逛公园
    题目链接题目题目描述策策同学特别喜欢逛公园。公园可以看成一张N个点M条边构成的有向图,且没有自环和重边。其中1号点是公园的入口,N号点是公园的出口,每条边有......
  • 24*8点 段码LCD液晶显示驱动控制电路(IC/芯片)-VK0192M 具省电模式,可兼容替代市面1622
    产品品牌:永嘉微电/VINKA产品型号:VK0192M封装形式:LQFP44概述:VK0192MLQFP44是一个点阵式存储映射的LCD驱动器,可支持最大192点(24SEGx8COM)的LCD屏。单片机可通过3/4线串行......
  • 2022 最新版 JDK 17 下载与安装 步骤演示 (图示版)
     JDK17目录第一步:oracle官网搜jdk,会出现如下界面第二步:安装第三步:选是第四步:下一步第五步:修改安装位置5.1点击更改,进入系统文件目......
  • 洛谷P4017 最大食物链计数(追加上一篇文章的第二种方法 )
    上一篇不是说第二种方法RE了吗?害,其实,是我的问题我粗心了。------------------------------------------------------因为    这两处的循环应该到n而不是m。......