2605. 从两个数字数组里生成最小数字

诸神缄默不语-个人CSDN博文目录
力扣刷题笔记

在这里插入图片描述

文章目录

  • 1. 我自己写的
  • 2. 题解
    • 2.1 用哈希表来判断重复数字
    • 2.2 用位运算判断重复数字
    • 2.3 快排

1. 我自己写的

解法:如果有重复数字就直接输出最小的重复数字,如果没有就直接把两个列表里最小的数字拼在一起

(Python 3和Java的具体实现逻辑稍微有点差异,因为Java没有Python 3那么方便的API)

Python 3版:

class Solution:def minNumber(self, nums1: List[int], nums2: List[int]) -> int:#判断是否存在重复repetition_numbers=[]for number in nums1:if number in nums2:repetition_numbers.append(number)if len(repetition_numbers)>0:return min(repetition_numbers)else:nums1.sort()nums2.sort()if nums1[0]>nums2[0]:min_number=nums2[0]max_number=nums1[0]else:min_number=nums1[0]max_number=nums2[0]return int(str(min_number)+str(max_number))

Java版:

class Solution {public int minNumber(int[] nums1, int[] nums2) {int[] helper=new int[10];int min1=9,min2=9;for(int number:nums1){helper[number]+=1;min1=Math.min(min1,number);}for(int number:nums2){helper[number]+=1;min2=Math.min(min2,number);}//找重复值for(int number=1;number<=9;number++){if(helper[number]==2){return number;}}if(min1>min2){return min1+min2*10;}else{return min1*10+min2;}}
}

2. 题解

2.1 用哈希表来判断重复数字

class Solution {public int minNumber(int[] nums1, int[] nums2) {int s = same(nums1, nums2);if (s != -1) {return s;}int x = Arrays.stream(nums1).min().getAsInt();int y = Arrays.stream(nums2).min().getAsInt();return Math.min(x * 10 + y, y * 10 + x);}public int same(int[] nums1, int[] nums2) {Set<Integer> s = new HashSet<Integer>();for (int num : nums1) {s.add(num);}int x = 10;for (int num : nums2) {if (s.contains(num)) {x = Math.min(x, num);}}return x == 10 ? -1 : x;}
}
class Solution:def minNumber(self, nums1: List[int], nums2: List[int]) -> int:def same() -> int:s = set(nums1) & set(nums2)return -1 if not s else min(s)if (x := same()) != -1:return xx = min(nums1)y = min(nums2)return min(x * 10 + y, y * 10 + x)

2.2 用位运算判断重复数字

class Solution {public int minNumber(int[] nums1, int[] nums2) {int a = 0, b = 0;for (int num : nums1) a |= 1 << num;for (int num : nums2) b |= 1 << num;int c = a & b;if (c != 0)return Integer.numberOfTrailingZeros(c);int min1 = Integer.numberOfTrailingZeros(a);int min2 = Integer.numberOfTrailingZeros(b);return min1 < min2 ? min1 * 10 + min2 : min2 * 10 + min1;}
}
class Solution:def minNumber(self, nums1: List[int], nums2: List[int]) -> int:mask1 = mask2 = 0for x in nums1:mask1 |= 1 << xfor x in nums2:mask2 |= 1 << xmask = mask1 & mask2if mask:return (mask & -mask).bit_length() - 1a = (mask1 & -mask1).bit_length() - 1b = (mask2 & -mask2).bit_length() - 1return min(a * 10 + b, b * 10 + a)

2.3 快排

对两个数组分别排序后可以用合并排序(也可以说双指针)的思路比较两者的共同值,排序后也可以直接得到两个数组的最小值,这样时间复杂度是nlogn,空间复杂度是1

(但是这个题目给的数字太小了,所以这么干意义不大……)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/99798.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试设计模式-责任链模式

一 责任链模式 1.1 概述 在进行请假申请&#xff0c;财务报销申请&#xff0c;需要走部门领导审批&#xff0c;技术总监审批&#xff0c;大领导审批等判断环节。存在请求方和接收方耦合性太强&#xff0c;代码会比较臃肿&#xff0c;不利于扩展和维护。 1.2 责任链模式 针对…

java面试之ThreadLocal问题

什么是ThreadLocal,它的基本用法是什么 简单来说就是能在多线程中保持变量独立的线程对象 不用Threadlocal多线程访问同一个变量会出现的问题 package com.pxx;/*** Created by Administrator on 2023/9/3.*/ public class Demo1 {private String v1;public String getV1() …

详解IP协议

在介绍IP协议之前&#xff0c;先抛出一个概念&#xff1a;IP地址的作用——定位主机&#xff0c;具有将数据从主机A跨网络传输到主机B的能力&#xff0c;有了TCP提供的策略&#xff0c;例如滑动窗口、拥塞控制等&#xff0c;IP去执行它&#xff0c;所以我们通常叫TCP/IP协议&am…

降噪音频转录 Krisp: v1.40.7 Crack

主打人工智能降噪服务的初创公司「Krisp」近期宣布推出音频转录功能&#xff0c;能对电话和视频会议进行实时设备转录。该软件还整合的ChatGPT&#xff0c;以便快速总结内容&#xff0c;开放测试版于今天上线。 随着线上会议越来越频繁&#xff0c;会议转录已成为团队工作的重…

QT DAY7

主要完成多人聊天室&#xff0c;注册与登录使用sql3数据库进行对密码的保存&#xff0c;避免了用户重复登录、错误密码登录、重复注册的问题&#xff0c;之后使用TCP通信&#xff0c;连接上服务器后可在聊天室多人交流

十四、MySQL(DCL)如何实现用户的简单管理?配置用户?

1、DCL语句&#xff1a; 要学习DCL语言&#xff0c;就要清楚DCL语言是用来干什么的&#xff0c;首先DCL语言英文全称是Data Control Language&#xff0c;是数据控制语言&#xff0c;主要用来管理数据库用户、控制数据库的访问权限/ 2、DCL的基础语法&#xff1a; &#xff08;…

SpringBoot通过@Cacheable注解实现缓存功能

目录 一、Spring从3.1开始支持Cache二、Cacheable常用属性1、value/cacheNames2、key3、condition4、unless5、keyGenerator6、sync7、cacheManager 三、整合步骤1、加入pom2、启动类加EnableCaching注解3、controller或service加Cacheable注解即可 四、代码实例五、Spring Boo…

unity面试题(性能优化篇)

CPU 预处理、缓存数据 注释空的unity函数 运算cpu->gpu 减少昂贵计算(开方) 限制帧数 加载(预加载、分帧加载、异步加载、对象池) 慎用可空类型比较 避免频繁计算(分帧、隔帧) 算法优化 变体收集预热 使用clear操作代替容器的new操作 unity spine使用二进制格式…

Unity中Shader的变体shader_feature

文章目录 前言一、变体的类型1、multi_compile —— 无论如何都会被编译的变体2、shader_feature —— 通过材质的使用情况来决定是否编译的变体 二、使用 shader_feature 来控制 shader 效果的变化1、首先在属性面板暴露一个开关属性&#xff0c;用于配合shader_feature来控制…

Ubuntu 20.04.5 怎么安装微信

这是我的ubutun版本号 在这个系统装桌面版微信很多功能不健全。搜索了很多方法&#xff0c;这个算是不错的一个法子。 1.添加仓库 首次使用时&#xff0c;你需要运行如下一条命令将移植仓库添加到系统中。 wget -O- https://deepin-wine.i-m.dev/setup.sh | sh 2.应用安装 …

服务端请求伪造(SSRF)及漏洞复现

服务端请求伪造 1. 概述 服务器会根据用户提交的URL 发送一个HTTP 请求。使用用户指定的URL&#xff0c;Web 应用可以获取图片或者文件资源等。典型的例子是百度识图功能。 如果没有对用户提交URL 和远端服务器所返回的信息做合适的验证或过滤&#xff0c;就有可能存在“请求…

QT 初识多线程

1.QThread线程基础 QThread是Qt线程中有一个公共的抽象类&#xff0c;所有的线程类都是从QThread抽象类中派生的&#xff0c;需要实现QThread中的虚函数run(),通过start()函数来调用run函数。 void run&#xff08;&#xff09;函数是线程体函数&#xff0c;用于定义线程的功能…