首页 > 编程语言 > 详细

第六个算法-删除数组中指定元素的方法

时间:2018-07-13 18:32:27      阅读:173      评论:0      收藏:0      [点我收藏+]

问题:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

示例 1:

给定数组 nums = [1,1,2], 

函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 

你不需要考虑数组中超出新长度后面的元素。

示例 2:

给定 nums = [0,0,1,1,1,2,2,3,3,4],

函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。

你不需要考虑数组中超出新长度后面的元素。

 

我的解答 :

思想:直接遍历数组,以一个数做记录,记录不重复的次数,然后以这个为基准修改原有的数组的值。

class Solution {
public int removeDuplicates(int[] nums) {
int n = 0;
int x = 0;
for (int i = 0 ;i <nums.length ; i++){
if(nums[i]!=n||(i ==0&nums[0]==n)){
n = nums[i];
nums[x]=n;
x++;
}

}
return x;
}
}


别的优秀代码思想:
class Solution {
public static int removeDuplicates(int[] nums) {
if (null == nums) {
return 0;
}
if (nums.length <= 1) {
return nums.length;
}
int cur = 1;
for (int i = 1; i < nums.length; i++) {
if (nums[i] > nums[cur - 1]) {
nums[cur] = nums[i];
cur++;
}
}
return cur;
}
}


这个是最加单的算法思想,写出来了,缺消耗了1个多小时的时间修修剪剪,果然和别人的差距有点大,加油努力。

第六个算法-删除数组中指定元素的方法

原文:https://www.cnblogs.com/liutian1912/p/9306366.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!