注:大佬解答来自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.length
for (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);
};