java中如何删除排序数组中的重复项
这篇文章主要为大家展示了“java中如何删除排序数组中的重复项”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中如何删除排序数组中的重复项”这篇文章吧。
专注于为中小企业提供网站制作、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业文县免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
示例 1:
给定 nums = [1,1,1,2,2,3],
函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。
你不需要考虑数组中超出新长度后面的元素。
示例 2:
给定 nums = [0,0,1,1,1,1,2,3,3],
函数应返回新长度 length = 7, 并且原数组的前五个元素被修改为 0, 0, 1, 1, 2, 3, 3 。
你不需要考虑数组中超出新长度后面的元素。
答案:
1public int removeDuplicates(int[] nums) {
2 int n = nums.length;
3 if (n < 2)
4 return n;
5 int pos = 2;
6 for (int i = 2; i < n; ++i)
7 if (nums[i] != nums[pos - 2])
8 nums[pos++] = nums[i];
9 return pos;
10}
解析:
题目中说的是排序的数组,那这就简单了。代码比较简单就不再介绍,下面再来看一下其他的解法。
1public int removeDuplicates(int[] nums) {
2 int i = 0;
3 for (int n : nums)
4 if (i < 2 || n > nums[i - 2])
5 nums[i++] = n;
6 return i;
7}
8
9public int removeDuplicates(int[] nums) {
10 int n = nums.length, count = 0;
11 for (int i = 2; i < n; i++)
12 if (nums[i] == nums[i - 2 - count])
13 count++;
14 else
15 nums[i - count] = nums[i];
16 return n - count;
17}
解法都大同小异,基本思想还是没变。
Java的特点有哪些
Java的特点有哪些 1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 2.Java具有简单性、面向对象、分布式、安全性、平台独立与可移植性、动态性等特点。 3.使用Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
以上是“java中如何删除排序数组中的重复项”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
当前名称:java中如何删除排序数组中的重复项
转载来于:http://myzitong.com/article/pgeoji.html