leetcode 两数之和 && 旋转数组 && 移除元素

88 阅读1分钟

1. 两数之和

leetcode-cn.com/problems/tw…

  • 哈希表
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    const obj = {}
    for(let i=0;i<nums.length;i++){
        if(obj[nums[i]] !==undefined){
            return [obj[nums[i]],i]
        }else{
            obj[target -nums[i]] = i
        }
    }
};

27. 移除元素

leetcode-cn.com/problems/re…

  • 快慢指针
/**
 * @param {number[]} nums
 * @param {number} val
 * @return {number}
 */
var removeElement = function(nums, val) {
    let j=0
    for(let i=0;i<nums.length;i++){
        if(nums[i] !== val){
            nums[j] =nums[i]
            j++
        }
    }
    return j
};

189. 旋转数组

leetcode-cn.com/problems/ro…

  • 队列
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var rotate = function(nums, k) {
    while(k>0){
        const curr = nums.pop()
        nums.unshift(curr)
        k--
    }
    return nums
};
  • 对数组的长度取余
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var rotate = function (nums, k) {
    if (k === 0) { return }
    const res = []
    for (let i = 0; i < nums.length; i++) {
        res[(i + k) % nums.length] = nums[i];
    }

    for (let i = 0; i < nums.length; i++) {
        nums[i] = res[i]
    }
};