当前位置: 首页 > article >正文

力扣--LCR 164.破解闯关密码

题目

闯关游戏需要破解一组密码,闯关组给出的有关密码的线索是:

一个拥有密码所有元素的非负整数数组 password
密码是 password 中所有元素拼接后得到的最小的一个数

请编写一个程序返回这个密码。

示例 1:

输入: password = [15, 8, 7]
输出: “1578”

示例 2:

输入: password = [0, 3, 30, 34, 5, 9]
输出: “03033459”

提示:

0 < password.length <= 100

说明:

输出结果可能非常大,所以你需要返回一个字符串而不是整数
拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0

代码

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 sb = new StringBuilder();
    for (int i = 0; i < strs.length; i++) {
        sb.append(strs[i]);
    }
    return sb.toString();
}

///时间nlogn,空间 On
// 快速排序模版(和普通快速排序模版一样的,除了比较那里不一样)
private void quickSort(String[] arr, int left, int right) {
if (left > right) {
return;
}
int i = partition(arr, left, right);
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);

}

int partition(String[] arr, int left, int right){
   String pivot = arr[left]; // 中间值
    int i = left;
    int j = right;

    while (i < j) {
        while (i <= j && (arr[i] + pivot).compareTo(pivot + arr[i]) <= 0) {
            i++;
        }

        while (i <= j && (arr[j] + pivot).compareTo(pivot + arr[j]) >= 0) {
            j--;
        }
        if(i >= j){
            break;
        }
        String temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    arr[left] = arr[j];
    arr[j] = pivot;

    return j;

}

}
时间复杂度:O(nlogn)
额外空间复杂度:O(n)


http://www.kler.cn/a/441426.html

相关文章:

  • 高并发处理 --- 超卖问题+一人一单解决方案
  • MVCC底层原理实现
  • 抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
  • 算法随笔_19: 数组中的最长山脉
  • GS论文阅读--Hard Gaussian Splatting
  • 【Go面试】工作经验篇 (持续整合)
  • K8s 中Istio 的使用示例
  • ThinkPHP 5.1 的模板布局功能
  • CentOS7源码编译安装nginx+php+mysql
  • 前端单元测试实战:从零开始构建可靠的测试体系
  • vue2项目中如何把rem设置为固定的100px
  • Linux:进程通信、管道通信
  • MFC CMDIChildWnd
  • 【Linux】socket编程1
  • jmeter后端监视器
  • selenium 在已打开浏览器上继续调试
  • C/S软件授权注册系统-轻量级WebApi服务器介绍
  • 【Python爬虫系列】_034.抓包工具_Charles
  • AI大模型学习笔记|多目标算法梳理、举例
  • 【Excel】单元格分列
  • webSokect安卓和web适配的Bug 适用实时语音场景
  • 优化算法更新 | 基于WOA-CNN-BiLSTM的多步预测模型
  • C#/Winfrom -文件操作
  • Unity中展示当前时间
  • 使用 rvest 包快速抓取网页数据:从入门到精通
  • .NET6 WebAPI从基础到进阶--朝夕教育