1.给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
for(var i=0;i<nums.length-1;i++){
if(nums[i]==nums[i+1]){
nums.splice(i+1,1)
i--;}
}
return nums.length
};
2.
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
var sum=0;
for(var i=0;i<prices.length-1;i++){
if(prices[i]<prices[i+1]){
sum+=prices[i+1]-prices[i]
}
}
return sum;
};
3.给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数
输入:[1,2,3,4,5,6,7]
和 k = 3 输出:[5,6,7,1,2,3,4]
4.给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
var rotate = function(nums, k) {
var n = k % nums.length
for (var j = 0; j < n; j++) {
nums.unshift(nums.pop())
}
}
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
for(var i =0;i<nums.length-1;i++){
for(var j=i+1;j<nums.length;j++){
if(nums[i]===nums[j]){
return true}else{
continue
}
}
}
return false
};
5.给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function(nums) {
nums.sort()
for(var i=0;i<nums.length;i+=2){
if(nums[i]==nums[i+1]){
continue;
}else{
return nums[i];
}
}
};
6.两个数组的交集 II
var intersect = function(nums1, nums2) {
nums1.sort(function(a, b) {
return a - b;
});
nums2.sort(function(a, b) {
return a - b;
});
var ary = [];
var i = j = 0;
while (i < nums1.length && j < nums2.length) {
if (nums1[i] == nums2[j]) {
ary.push(nums1[i])
j++;
i++;
} else nums1[i] > nums2[j] ? j++ : i++
}
return ary;
};
7.
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
var plusOne = function(digits) {
// return (+digits.join("")+1+'').split('') 因为数字的范围问题,转字符串再转数字再转数组失败了
var i=digits.length-1
digits[i]+=1;
while(digits[i]==10){
if(i-1==-1){
digits.unshift(1)
digits[i+1]=0
}else{
digits[i-1]++
digits[i]=0
i--
}
}
return digits
};
8.给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序
/**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var moveZeroes = function(nums) {
var j=0;
for(var i=0;i<nums.length-j;i++){
if(nums[i]==0){
nums.splice(i,1)
nums.push(0)
i--
j++
}
}
};
8.两数之和给定一个整数数组 nums
和一个目标值 target
,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标
var twoSum = function(nums, target) {
for(var i = 0; i<nums.length-1; i++){
for(let j=i+1;j<nums.length;j++){
if(nums[i]+nums[j]==target)
return new Array(i,j)
}
}
};