From 1c871a9eb0d5a556b41409ac86750b878dd72e17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E5=8A=9B?= <171250568@smail.nju.edu.cn> Date: Wed, 11 Nov 2020 14:41:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E3=80=90645.=20=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E9=9B=86=E5=90=88=E3=80=91=E3=80=90Java=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../缺失和重复的元素.md | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/高频面试系列/缺失和重复的元素.md b/高频面试系列/缺失和重复的元素.md index 06e554f..52c8d78 100644 --- a/高频面试系列/缺失和重复的元素.md +++ b/高频面试系列/缺失和重复的元素.md @@ -1,4 +1,4 @@ -# 如何寻找缺失和重复的元素 +# 如何寻找缺失和重复的元素

@@ -139,4 +139,30 @@ vector findErrorNums(vector& nums) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[zhuli](https://github.com/1097452462 "zhuli")提供的Java代码: +```java +class Solution { + public int[] findErrorNums(int[] nums) { + int n = nums.length; + int dup = -1; + for (int i = 0; i < n; i++) { + // 元素是从 1 开始的 + int index = Math.abs(nums[i]) - 1; + // nums[index] 小于 0 则说明重复访问 + if (nums[index] < 0) + dup = Math.abs(nums[i]); + else + nums[index] *= -1; + } + int missing = -1; + for (int i = 0; i < n; i++) + // nums[i] 大于 0 则说明没有访问 + if (nums[i] > 0) + // 将索引转换成元素 + missing = i + 1; + return new int[]{dup, missing}; + } +} +``` \ No newline at end of file From 3360ffda0fd458460a9c4908a0d7c0c58f539373 Mon Sep 17 00:00:00 2001 From: dragon_li <49151509+1097452462@users.noreply.github.com> Date: Thu, 12 Nov 2020 20:13:10 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Update=20=E7=BC=BA=E5=A4=B1=E5=92=8C?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E7=9A=84=E5=85=83=E7=B4=A0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 高频面试系列/缺失和重复的元素.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/高频面试系列/缺失和重复的元素.md b/高频面试系列/缺失和重复的元素.md index 52c8d78..9e0b550 100644 --- a/高频面试系列/缺失和重复的元素.md +++ b/高频面试系列/缺失和重复的元素.md @@ -1,4 +1,4 @@ -# 如何寻找缺失和重复的元素 +# 如何寻找缺失和重复的元素

@@ -165,4 +165,4 @@ class Solution { return new int[]{dup, missing}; } } -``` \ No newline at end of file +``` From 1b2ec335ea4b1ae65ba4cb1e92ff2b9e318b1084 Mon Sep 17 00:00:00 2001 From: dragon_li <49151509+1097452462@users.noreply.github.com> Date: Thu, 12 Nov 2020 20:15:23 +0800 Subject: [PATCH 3/3] =?UTF-8?q?Update=20=E7=BC=BA=E5=A4=B1=E5=92=8C?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E7=9A=84=E5=85=83=E7=B4=A0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 高频面试系列/缺失和重复的元素.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/高频面试系列/缺失和重复的元素.md b/高频面试系列/缺失和重复的元素.md index 9e0b550..eb21f4c 100644 --- a/高频面试系列/缺失和重复的元素.md +++ b/高频面试系列/缺失和重复的元素.md @@ -148,7 +148,7 @@ class Solution { int n = nums.length; int dup = -1; for (int i = 0; i < n; i++) { - // 元素是从 1 开始的 + // 元素是从 1 开始的 int index = Math.abs(nums[i]) - 1; // nums[index] 小于 0 则说明重复访问 if (nums[index] < 0) @@ -160,7 +160,7 @@ class Solution { for (int i = 0; i < n; i++) // nums[i] 大于 0 则说明没有访问 if (nums[i] > 0) - // 将索引转换成元素 + // 将索引转换成元素 missing = i + 1; return new int[]{dup, missing}; }