我正在研究关于Leetcode的算法问题。但首先,我在自己的本地编译器上写了我的答案。在本地运行我的代码时,我可以得到这个问题的答案。但是当我将我的答案直接粘贴到leetcode的在线编译器中时,系统会提示我我的答案是错误的。无法匹配正确的答案。本地编译器的解决方案如下所示:
class Solution {
public int removeDuplicates(int[] nums) {
ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<Integer> arraylist = new ArrayList<Integer>();
for (int i : nums) {
list.add(i);
}
for (int num : list) {
if (!arraylist.contains(num)) {
arraylist.add(num);
}
}
return arraylist.size();
}
}以及来自LeetCode:在这里输入图像描述的反馈
发布于 2020-12-30 15:53:22
一些评论说可以使用一个集合,但是任务是这样做而不需要任何额外的内存分配,最简单的解决方案是:
private static int removeDuplicates(int[] numbers) {
int size = 0;
for (int i = 0; i < numbers.length; i++) {
if (i == 0 || numbers[i - 1] != numbers[i]) {
numbers[size++] = numbers[i];
}
}
return size;
}发布于 2020-12-30 15:52:09
将索引设置为1,如果numsi与numsi +1不同,则增量指数为1。
class Solution {
public int removeDuplicates(int[] nums) {
int index = 1;
for(int i = 0; i < nums.length - 1; i++){
if(nums[i] != nums[i + 1]){
nums[index++] = nums[i + 1];
}
}
return index;
}
}发布于 2020-12-30 15:52:29
不要使用List、Set、Map或诸如此类的东西。数据是排序的。用那个!
实际上,如果您只能返回一个[1, 1]值,那么您的输出如何是int。如何输出只有一个数字的列表/数组?
所以再读一遍挑战说明,第一句:
..。删除重复的就地.返回新的长度。
既然这是你的挑战,我不会写代码。
https://stackoverflow.com/questions/65509462
复制相似问题