1.删除排序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
判断当前位于后一位是否相等,相等则删除当前位,数组下标-1,从前一位开始再进行比较
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
for(let i = 0; i < nums.length; i ++) {
if (nums[i] === nums[i + 1]) {
nums.splice(i, 1)
i = i - 1
}
}
return nums.length
};
2.买卖股票的最佳时机 II
给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
输入: prices = [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
低买高抛,将所有为正数的利润相加就是最高的利润
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
let total = 0
for(let i = 0; i < prices.length - 1; i ++) {
if (prices[i] < prices[i + 1]) {
total += (prices[i + 1] - prices[i])
}
}
return total
};
3.旋转数组
给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数
输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]
需要先拷贝一份原数组,k如果等于数组的长度则相当于没有移动
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function(nums, k) {
k = k % nums.length
let temp = nums.map(item => item)
for(let i = 0; i < nums.length; i ++) {
nums[i] = temp[(i - k + nums.length) % nums.length]
}
return nums
};
4.存在重复元素
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
let newNums = nums.sort((a, b) => a - b)
for(let i = 0; i < nums.length - 1; i ++) {
if (nums[i] === nums[i + 1]) return true
}
return false
};
5.只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function(nums) {
let newNums = nums.sort((a, b) => a- b)
for(let i = 0; i < nums.length; i ++) {
if (nums[i] !== nums[i - 1] && nums[i] !== nums[i + 1]) return nums[i]
}
};
以上均为自己的解题思路,leetcode上还有更多更好的解题思路https://leetcode-cn.com/