From 824d91fc7394284aca067485158224f46f106228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Sun, 31 Aug 2025 00:20:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leetcode/topinterview150/test26/Main.java | 16 ++++++++ .../topinterview150/test26/Solution.java | 35 +++++++++++++++++ .../leetcode/topinterview150/test27/Main.java | 38 +++++++++++++++++++ .../topinterview150/test27/Solution.java | 26 +++++++++++++ .../topinterview150/test80/Solution.java | 30 +++++++++++++++ 5 files changed, 145 insertions(+) create mode 100644 src/cn/celess/leetcode/topinterview150/test26/Main.java create mode 100644 src/cn/celess/leetcode/topinterview150/test26/Solution.java create mode 100644 src/cn/celess/leetcode/topinterview150/test27/Main.java create mode 100644 src/cn/celess/leetcode/topinterview150/test27/Solution.java create mode 100644 src/cn/celess/leetcode/topinterview150/test80/Solution.java diff --git a/src/cn/celess/leetcode/topinterview150/test26/Main.java b/src/cn/celess/leetcode/topinterview150/test26/Main.java new file mode 100644 index 0000000..ed88da4 --- /dev/null +++ b/src/cn/celess/leetcode/topinterview150/test26/Main.java @@ -0,0 +1,16 @@ +package cn.celess.leetcode.topinterview150.test26; + +public class Main { + public static void main(String[] args) { + int[] nums = {0,0,1,1,1,2,2,3,3,4}; // 输入数组 + int[] expectedNums = {0,1,2,3,4}; // 长度正确的期望答案 + + int k = new Solution().removeDuplicates(nums); // 调用 + + assert k == expectedNums.length; + for (int i = 0; i < k; i++) { + System.out.println(nums[i]); + assert nums[i] == expectedNums[i]; + } + } +} diff --git a/src/cn/celess/leetcode/topinterview150/test26/Solution.java b/src/cn/celess/leetcode/topinterview150/test26/Solution.java new file mode 100644 index 0000000..6a63a7b --- /dev/null +++ b/src/cn/celess/leetcode/topinterview150/test26/Solution.java @@ -0,0 +1,35 @@ +package cn.celess.leetcode.topinterview150.test26; + +class Solution { + public int removeDuplicates(int[] nums) { + if(nums.length == 1){ + return 1; + } + + int left = 0; + int right = 1; + + int[] arr = new int[nums.length]; + + arr[0] = nums[0]; + int len = 1; + while(right < nums.length){ + + if(nums[left] == nums[right]){ + left++; + right++; + continue; + } + arr[len++] = nums[right]; + left++; + right++; + } + + for(int j = 0; j < len; j++){ + nums[j] = arr[j]; + } + + + return len; + } +} \ No newline at end of file diff --git a/src/cn/celess/leetcode/topinterview150/test27/Main.java b/src/cn/celess/leetcode/topinterview150/test27/Main.java new file mode 100644 index 0000000..754a82f --- /dev/null +++ b/src/cn/celess/leetcode/topinterview150/test27/Main.java @@ -0,0 +1,38 @@ +package cn.celess.leetcode.topinterview150.test27; + +import java.util.Arrays; + +public class Main { + public static void main(String[] args) { + int[] nums = new int[]{0, 1, 2, 2, 3, 0, 4, 2}; // 输入数组 + int val = 2; // 要移除的值 + int[] expectedNums = {0, 1, 3, 0, 4}; // 长度正确的预期答案。 + // 它以不等于 val 的值排序。 + + int k = new Solution().removeElement(nums, val); // 调用你的实现 + + assert k == expectedNums.length; + int actualLength = k; + Arrays.sort(nums, 0, k); // 排序 nums 的前 k 个元素 + for (int i = 0; i < actualLength; i++) { + System.out.println(nums[i]); + assert nums[i] == expectedNums[i]; + } + +// +// int[] nums = new int[]{1}; // 输入数组 +// int val = 1; // 要移除的值 +// int[] expectedNums = {}; // 长度正确的预期答案。 +// // 它以不等于 val 的值排序。 +// +// int k = new Solution().removeElement(nums, val); // 调用你的实现 +// +// assert k == expectedNums.length; +// int actualLength = k; +// Arrays.sort(nums, 0, k); // 排序 nums 的前 k 个元素 +// for (int i = 0; i < actualLength; i++) { +// System.out.println(nums[i]); +// assert nums[i] == expectedNums[i]; +// } + } +} diff --git a/src/cn/celess/leetcode/topinterview150/test27/Solution.java b/src/cn/celess/leetcode/topinterview150/test27/Solution.java new file mode 100644 index 0000000..613525f --- /dev/null +++ b/src/cn/celess/leetcode/topinterview150/test27/Solution.java @@ -0,0 +1,26 @@ +package cn.celess.leetcode.topinterview150.test27; + +class Solution { + public int removeElement(int[] nums, int val) { + int head = 0; + int tail = nums.length - 1; + + while (tail >= 0 && head <= tail) { + + if (nums[tail] == val) { + tail--; + continue; + } + if (nums[head] == val) { + int tmp = nums[head]; + nums[head] = nums[tail]; + nums[tail] = tmp; + head++; + tail--; + continue; + } + head++; + } + return head ; + } +} \ No newline at end of file diff --git a/src/cn/celess/leetcode/topinterview150/test80/Solution.java b/src/cn/celess/leetcode/topinterview150/test80/Solution.java new file mode 100644 index 0000000..666f113 --- /dev/null +++ b/src/cn/celess/leetcode/topinterview150/test80/Solution.java @@ -0,0 +1,30 @@ +package cn.celess.leetcode.topinterview150.test80; + +public class Solution { + + public int removeDuplicates(int[] nums) { + int slow = 2; + int fast = 2; + + while (fast < nums.length) { + if (nums[fast] != nums[slow - 2]) { + nums[slow++] = nums[fast]; + } + fast++; + } + return slow; + } +} + + +class Main { + public static void main(String[] args) { + int[] nums = {0, 0}; + int len = new Solution().removeDuplicates(nums); + for (int i = 0; i < len; i++) { + System.out.println(nums[i]); + } + System.out.println("====="); + System.out.println(len); + } +}