输入一个字符串数组,请编写一个函数,找出数组中所有不重复的元素。java解题不用hashset,并且有牛客网题目链接可以给我吗
时间: 2024-10-12 19:12:48 浏览: 28
Java中如何比较两个数组中元素是否相同
当需要在Java中找到一个字符串数组中不重复的元素,可以采用一种称为“滑动窗口”或“双指针”的算法,这种方法不需要使用哈希集合(如HashSet)。基本思路是遍历数组一次,使用两个指针i和j,其中i指向当前未考虑的区域开始,j指向已检查过的区域结束,然后比较j位置的元素和i位置之后的元素,如果遇到重复则将i向右移动一位。
以下是简单的Java代码实现:
```java
public class UniqueElements {
public int[] findUnique(int[] nums) {
if (nums == null || nums.length == 0) return new int[0];
int start = 0;
for (int end = 1; end < nums.length; end++) {
if (end > start && nums[end] != nums[start]) { // 如果当前元素与第一个不重复元素不一样
start++;
}
}
int[] result = new int[end - start + 1];
System.arraycopy(nums, start, result, 0, result.length);
return result;
}
}
```
在这个例子中,`start`始终指向不重复的第一个元素及其后续的位置,直到`end`遍历完整个数组。返回的结果是一个新数组,包含从`start`到`end`的所有唯一元素。
关于牛客网上的题目链接,由于这里无法提供外部链接,你可以搜索"Java 滑动窗口找无重复元素"或者"Java 双指针 独特元素",应该能找到相关的编程练习题。记得在网站上按照提示答题并提交代码验证结果。祝你学习愉快!
阅读全文