【丢失的数字(268-java)】
JAVA 数字 丢失
2023-09-27 14:29:28 时间
丢失的数字(268-java)
给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。
示例 1:
输入:nums = [3,0,1]
输出:2
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。
示例 2:输入:nums = [0,1]
输出:2
解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。
示例 3:输入:nums = [9,6,4,2,3,5,7,0,1]
输出:8
解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。8 是丢失的数字,因为它没有出现在 nums 中。
示例 4:输入:nums = [0]
输出:1
解释:n = 1,因为有 1 个数字,所以所有的数字都在范围 [0,1] 内。1 是丢失的数字,因为它没有出现在 nums 中。
public class LC169_268_missingNumber {
//异或运算
public static int missingNumber(int[] nums) {
int ans = nums.length;
for (int i = 0; i < nums.length; i++) {
ans ^= i;
ans ^= nums[i];
}
return ans;
}
//hash表
public int missingNumber22(int[] nums) {
Set<Integer> set = new HashSet<>();
int len = nums.length;
for (int i = 0; i < len; ++i) {
set.add(nums[i]);
}
int i;
for (i = 0; i <= len; ++i) {
if (!set.contains(i)) {
break;
}
}
return i;
}
//数学思想
public int missingNumber66(int[] nums) {
int sum = 0;
int len = nums.length;
for (int num : nums) {
sum += num;
}
return len * (len + 1) / 2 - sum;
}
public static void main(String[] args) {
System.out.println(missingNumber(new int[]{3, 0, 1}));
}
}
相关文章
- 突破Java面试-生产环境的redis集群的部署架构是怎么样的
- Java案例猜数字游戏
- Java算法-冒泡排序
- java http post/get 服务端和客户端实现json传输
- keytool 错误:java.io.IOException:Incorrect AVA format
- JAVA:猜数字游戏!
- 安装java为什么要配置环境变量
- Java中request请求配置
- JAVA实现随机无重复数字功能
- Java实现读取文件夹下(包括子目录)所有文件的文件名
- java sendmail
- 判断字符串是否为数字(JAVA)
- 【求数组中第二大的数字】(Java实现,附带分析)
- 传智播客Java 关键字,标识符,注释
- 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以“62”开头,如图所示。
- Java进行http请求时,放置会话信息到header里面
- Java中 static final修饰HashMap静态成员变量初始化方法
- Java和Spring的跨版本升级
- java从字符串中提取数字
- LeetCode-448. 找到所有数组中消失的数字(Java实现)
- 简单的猜数字(JAVA版)
- Java工作利器之常用工具类(二)——数字工具类-大数乘法、加法、减法运算
- 【至少是其他数字两倍的最大数(747-java)】
- Java 使用正则表达式判断字符串是否为数字