算法-array
删除排序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
let removeDuplicates = function(nums) {
for(let i = 0; i<nums.length; i++){
while (nums[i] === nums[i+1]) {
nums.splice(i+1,1);
}
}
};
买卖股票的最佳时机
给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)
var maxProfit = function(prices) {
let ans = 0;
for(let i = 1, len = prices.length; i < len; i++){
ans += Math.max(0, prices[i] - prices[i - 1]);
}
return ans;
};
旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
var rotate = function(nums, k) {
const afnum = nums.splice(nums.length - k % nums.length);
nums.splice(0,0,...afnum);
};
存在重复元素
给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
var containsDuplicate = function(nums) {
return nums.length !== Array.from(new Set(nums)).length;
};
只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
var singleNumber = function(nums) {
return nums.reduce((pre, cur)=>{
return pre^cur;
})
};
两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集。
加一
移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
var moveZeroes = function(nums) {
let end = nums.length;
for (let index = 0; index < end;) {
if(nums[index] === 0){
nums.splice(index, 1);
nums.push(0);
end--;
} else {
index ++;
}
}
};