目录🔥🔥
⚡️⚡️2.剑指offer53.在排序数组中查找数字⚡️⚡️
⚡️⚡️3.剑指offer53.0~n-1中缺失的数字⚡️⚡️
⚡️⚡️1.剑指offer03.数组中重复的数字⚡️⚡️
OJ:OJ链接🪢🪢
1.1题目描述💨💨
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
1.2思考过程💨💨

1.3 代码💨💨
1.3.1HashSet💨💨
public int findRepeatNumber(int[] nums) {
HashSet<Integer> set=new HashSet<>();
for(int x: nums){
if(set.contains(x)){
return x;
}
set.add(x);
}
return -1;
}
查重,我们可以用HashSet轻松解决,我们只需遍历数组,用contains方法判断,如果在Set中有,就直接return,没有,就添加进set,即可。
1.3.2原地交换💨💨
public int findRepeatNumber(int[] nums) {
int i = 0;
while(i < nums.length) {
if(nums[i] == i) {

本文详细解析了《剑指Offer》中关于数组和数字查找的三个经典问题:寻找重复数字、排序数组中查找数字的次数以及找到排序数组中缺失的数字。通过HashSet、原地交换和二分查找等方法,展示了不同解决方案及其思路。
)&spm=1001.2101.3001.5002&articleId=124033373&d=1&t=3&u=fb48de6780a44e26bd3b69febc1c75e9)
279

被折叠的 条评论
为什么被折叠?



