首页 > 编程语言 >【JavaScript】LeetCode:6-10

【JavaScript】LeetCode:6-10

时间:2024-09-01 20:50:47浏览次数:7  
标签:10 nums max JavaScript len prices var LeetCode dp

文章目录

6 轮转数组

在这里插入图片描述

  • 数组
  • 题目要求最终结果返回nums。
  • 方法1:拼接数组,n = nums.concat(nums);
  • 方法2:数组直接截取,这里提供方法2的代码。
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var rotate = function(nums, k) {
    var lens = nums.length;
    var n = new Array(lens);
    k = k % lens;
    n = nums.slice(-k, lens).concat(nums.slice(0, -k));
    for(var i = 0; i < lens; i++){
        nums[i] = n[i]
    }
};

7 买卖股票的最佳时机Ⅰ

在这里插入图片描述

  • 动态规划
  • dp[i][0]:第i天持有股票的最大利润,dp[i][1]:第i天不持有股票的最大利润。
  • dp[i][0] = max(dp[i - 1][0], -prices[i])
    dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i])
  • 初始化
    dp[0][0] = -prices[0],第0天持有股票的最大利润。
    dp[0][1] =0,第0天不持有股票的最大利润。
  • 结果:max(dp[len - 1][0], dp[len - 1][1])
/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    const len = prices.length;
    const dp = new Array(len).fill([0, 0]);
    dp[0] = [-prices[0], 0];
    for(var i = 1; i < len; i++){
        dp[i] = [
            Math.max(dp[i - 1][0], -prices[i]),
            Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i])
        ];
    }
    return Math.max(dp[len - 1][0], dp[len - 1][1]);
};

8 买卖股票的最佳时机Ⅱ

在这里插入图片描述

  • 动态规划
  • 可买卖多次。
  • dp[i][0]:第i天持有股票的最大利润,dp[i][1]:第i天不持有股票的最大利润。
  • dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i])(与Ⅰ不同)
    dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i])(与Ⅰ相同)
  • 初始化和结果同Ⅰ。
/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    const len = prices.length;
    const dp = new Array(len).fill([0, 0]);
    dp[0] = [-prices[0], 0];
    for(var i = 1; i < len; i++){
        dp[i] = [
            Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i]),
            Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i])
        ];
    }
    return Math.max(dp[len - 1][0], dp[len - 1][1]);
};

9 两数之和

在这里插入图片描述

  • Map
  • Map(遍历的元素,对应的索引)。
  • 遍历数组中的元素x,在Map中查询target - x,若存在则返回,不存在则继续遍历。
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    var map = new Map();
    for(var i = 0; i < nums.length; i++){
        var x = target - nums[i];
        if(map.has(x)){
            return [map.get(x), i];
        }else{
            map.set(nums[i], i);
        }
    }
};

10 字母异位词分组

在这里插入图片描述

  • Map
  • 字母相同,但排列不同的字符串,排序后一定是相同的。
  • 将排序之后的字符串作为Map的键。
/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function(strs) {
    var map = new Map();
    for(var str of strs){
        var str_arr = Array.from(str);
        var key = str_arr.sort();
        key = key.toString();
        var list = map.get(key);
        if(list){
            list.push(str);
        }else{
            list = [];
            list.push(str);
        }
        map.set(key, list);
    }
    return Array.from(map.values());
};

标签:10,nums,max,JavaScript,len,prices,var,LeetCode,dp
From: https://blog.csdn.net/weixin_45980065/article/details/141784924

相关文章

  • P10935 银河 解题报告
    题目传送门这道题很有意思,(看上去像数据结构似的),考察的就是差分约束的掌握熟练程度和Tarjan算法的灵活变通。首先发现要求最小值,所以跑最长路,并将所有关系都转化成大于或大于等于。设\(x_i\)表示第\(i\)颗恒星的亮度值。一共有五种关系,分类讨论:第一种操作:\(x_a=x_b\),......
  • 文档管理神器大搜罗!10款热门工具深度评测
    市面上常见的10款文档管理工具对比:PingCode;Worktile;飞书文档;腾讯文档;石墨文档;语雀;M-Files;DocuWare;MasterControl;Contentverse;DocuSign。在今天的数字化时代,文档管理变得越来越重要,无论是对于初创企业还是大型企业。一个常见的挑战是如何找到一个既能满足日常运营需求,又能提......
  • 416. 分割等和子集(leetcode)
    https://leetcode.cn/problems/partition-equal-subset-sum/description/01背包问题,需要考虑到如何把这个问题转化成01背包问题转换成01背包问题后,如何定义f[i]状态来表示这里有两种方式:1.按照传统01背包表示,即前i个物品中选,体积小于等于j的最大价值,这里体积和价值是等价......
  • Leetcode3234. 统计 1 显著的字符串的数量
    EverydayaLeetcode题目来源:3234.统计1显著的字符串的数量解法1:枚举左端点注意到,如果子串中的0非常多,多到0的个数的平方比1的个数都要大,那么这样的子串必然不是1显著子串。设cnt0为子串中的0的个数,cnt1为子串中的1的个数,那么必须满足:cnt0*cnt0<=......
  • ecmascript和javascript的区别
    1.简介1.1.概述1.1.1.ecmascriptECMAScript(简称ES)是JavaScript编程语言的一个标准化版本。它是为网络开发设计的一种轻量级的脚本语言,主要用于在网页上实现交互性和动态效果。ECMAScript是该语言的标准名称,而JavaScript是其最知名和广泛使用的实现。1.1.2.javascrip......
  • FIT1047 Introduction to computer systems, networks and security
    FIT1047 Introductiontocomputersystems, networksand security-S2 2024Assignment2– Processesand MARIE ProgrammingPurposeProcessesandprogramsarewhatmakescomputers do what we want them to do. Inthefirst partofthisassig......
  • LUE1001 Visual Analysis
    LUE1001TaskSheetWritingCoursework (I)–VisualAnalysisComprises 20%of yourfinalcoursegradeDuedate:  30Sept – 4 Oct 2024(Duration: 90 minutes)Aboutoneweekbeforeyourassessment,yourinstructorwill inform.you about theexact......
  • 章10——面向对象编程(高级部分)——类名类方法
    类变量/静态(static)变量/静态属性特点:由该类的全体对象实例共享,该变量只占同一块内存空间。其标志是关键字static修饰。在类加载的时候便生成了。类加载的时机如下图:publicstaticintcount=0;类变量可以由类名来访问。System.out.println("共有"+Child.count+"......
  • 【Leetcode_Hot100】哈希
    哈希1.两数之和49.字母异位词分组128.最长连续序列1.两数之和方法一:HashMap在元素放入数组之前就进行判断,保证了不会取出同一个元素的情况,,例如[3,3],如果先将数组中的所有元素放入hashMap,再判断是否存在,则返回结果为[1,1],不符合题意。classSolution{publicint[......
  • 数据结构:(LeetCode572)另一棵子树
    给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。示例1:......