Shinkai005

V1

2022/05/08阅读:31主题:红绯

【leetcode】2221.数组的三角和

【leetcode】2221.数组的三角和

题目描述

image-20220508000915036
image-20220508000915036

解题思路

第一次提交: 超过13%

先完成

按照题目说的,

  1. n==1终止,递归终止条件
  2. 否则创建新数组, 我创建了 arr
  3. 赋值//这块我第一时间用的push不太好,算法题一般都直接覆盖[i]
  4. 替换
  5. 重复 递归
/**
 * @param {number[]} nums
 * @return {number}
 */

var triangularSum = function (nums{

    // 1.递归ending
    if (nums.length <= 1) { return nums[0] }
    // 2.新数组
    let arr = [];
   // 3.赋值
    for (let i = 0; i < nums.length - 1; i++) {
        arr.push((nums[i] + nums[i + 1]) % 10)
    }
    // 4.替换
    nums = arr
    // 5. 重复
    nums = triangularSum(nums);
   // 别忘了最后返回nums三角和
    return nums
};

第二次提交 超过33%

优化了 arr的空间复杂度 和 覆盖arr[i]

var triangularSum = function (nums{
    const arr = []
    const nice = (nums) => {
        //console.log(nums,nums.length)
        arr.length = nums.length
        //递归ending
        if (nums.length <= 1) { return nums[0] }

        for (let i = 0; i < nums.length - 1; i++) {
            arr[i] = ((nums[i] + nums[i + 1]) % 10//3,5 // 8,5,
        }

        // console.log('arr',arr)
        arr.length--
        nums = arr
        nums = triangularSum(nums);
        return nums
    }
    return nice(nums)

};

第三次提交 超过100%

是孩子笨了~ 递归会产生方法栈~耗内存....也不能说忘了吧.很久没刷了.....哎呀

/**
 * @param {number[]} nums
 * @return {number}
 */


// 递归和newNums都不考虑
const triangularSum = (nums) => {
    let n = nums.length;
    while (--n > 0) {
        for (let i = 0; i <= n - 1; i++) {
            nums[i] = ((nums[i] + nums[i + 1]) % 10);
        }
        // console.log(nums)
    }
    return nums[0]
}

分类:

前端

标签:

JavaScript

作者介绍

Shinkai005
V1

公众号:深海笔记Shinkai