输入:nums = [0,0,1,1,1,2,2,3,3,4]
输出:5, nums = [0,1,2,3,4]
解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。
解题思路:
1.nums[ i ]原数组 nums [ j ]新数组
2.两层for循环,固定第一个数,用第二个数和第一个数对比,相等则删除splice() , 同时j--,不等则将第一个与第三个相比
3.j-- 为新数组的长度
var removeDuplicates = function (nums) {
for (var i = 0; i<nums.length;i++) {
for (var j = i + 1; j <= nums.length; j++) {
if (nums[i] == nums[j]) {
nums.splice(j, 1)
j--
}
}
}
return nums[j]
};
总结:主要使用for循环和splice(),splice()尤其重要,如果只知道要删除,却不知道怎么用代码表达出来,就我自己说,第一想法用ES6,newState()但力扣不支持,改用for循环,又忘记删除怎么写,这里本人将splice()的方法也总结出来了,需要的小伙伴欢迎查看。
splice( )的用法_前端-rabbit的博客-CSDN博客
这个题没理解太好的小伙伴可以复习一下冒泡排序
--------拜拜啦~~~