注:大佬解答来自LetCode官方题解
80.删除有序数组的重复项Ⅱ
1.题目
2.个人解答
var removeDuplicates = function (nums) {let res = [];for (let index = 0; index < nums.length; index++) {let num = 0;if (res.includes(nums[index])) {for (let i = 0; i < res.length; i++) {if (res[i] == nums[index]) {num++;}}if (num < 2) {res.push(nums[index]);}//得到num的次数if (num > 2) {return;}} else {res.push(nums[index]);}}nums.length=res.lengthfor (let index = 0; index < res.length; index++) {nums[index]=res[index]}};
3.大佬解答
var removeDuplicates = function(nums) {const n = nums.length;if (n <= 2) {return n;}let slow = 2, fast = 2;while (fast < n) {if (nums[slow - 2] != nums[fast]) {nums[slow] = nums[fast];++slow;}++fast;}return slow;
};
169.多数元素
1.题目
2.个人解答
var majorityElement = function (nums) {let result = 0;const res = Array.from(new Set([...nums]));res.forEach((item_nums) => {let n = nums.length / 2;nums.forEach((item_res) => {if (item_nums == item_res) {n = n - 1;}});if (n < 0) {result = item_nums;}});return result;
};
3.大佬解答
没解答
189.轮转数组
1.题目
2.个人解答
var rotate = function (nums, k) {for (let index = 0; index < k; index++) {nums.unshift(nums[nums.length - 1]);nums.pop();}
};
3.大佬解答
var rotate = function(nums, k) {const n = nums.length;const newArr = new Array(n);for (let i = 0; i < n; ++i) {newArr[(i + k) % n] = nums[i];}for (let i = 0; i < n; ++i) {nums[i] = newArr[i];}
};
const reverse = (nums, start, end) => {while (start < end) {const temp = nums[start];nums[start] = nums[end];nums[end] = temp;start += 1;end -= 1;}
}var rotate = function(nums, k) {k %= nums.length;reverse(nums, 0, nums.length - 1);reverse(nums, 0, k - 1);reverse(nums, k, nums.length - 1);
};