每日一题 -- LeetCode (八)

JavaScript / TypeScript for LeetCode

当前进程:

  • 开始时间:2020.6.27
  • 结束时间:undefined

GitHub仓库:https://github.com/Cundefined/JavaScript-or-TypeScript-for-LeetCode

参考视频:https://www.bilibili.com/video/BV1wA411b7qZ

1、题目要求

( LeetCode-第53题 ) 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例:

输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-subarray
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2、解题思路

解题思路:动态规划

  1. 创建一个空数组,用来存储子数组

  2. 创建一个保存最大值的变量

  3. 预先存入第一个元素

  4. 遍历输入数组:

    4.1、对当前要加入子数组的元素进行判断

    4.2、是直接加入nums[i],还是以nums[i]新开一个数组

    4.3、比较子数组元素之和与nums[i],前者大就直接加入nums[i],后者大就 以nums[i]新开数组
    4.4、比较完成后,更新最大子序列和

  5. 返回结果

2.1、JavaScript Solution

/**
 * 解题思路:动态规划
 * 1、创建一个空数组,用来存储子数组
 * 2、创建一个保存最大值的变量
 * 3、预先存入第一个元素
 * 4、遍历输入数组:
 *      4.1、对当前要加入子数组的元素进行判断
 *      4.2、是直接加入nums[i],还是以nums[i]新开一个数组
 *      4.3、比较子数组元素之和与nums[i],前者大就直接加入nums[i],后者大就以nums[i]新开数组
 *      4.4、比较完成后,更新最大子序列和
 * 5、返回结果
 */

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxSubArray = function (nums) {
  // 1、创建一个空数组,用来存储子数组
  let subArray = [];
  // 2、创建一个保存最大值的变量
  let max = nums[0];
  // 3、预先存入第一个元素
  subArray[0] = nums[0];

  // 4、遍历输入数组:
  for (let i = 1; i < nums.length; i++) {
    // 4.1、对当前要加入子数组的元素进行判断
    subArray[i] = Math.max(nums[i] + subArray[i - 1], nums[i]);
    // 4.4、比较完成后,更新最大子序列和
    max = Math.max(max, subArray[i]);
  }

  // 5、返回结果
  return max;
};

2.2、TypeScript Solution

function maxSubArray(nums: number[]): number {

    if (nums.length === 0) {
        return 0;
    }

    let subArray: number[] = [];

    let max: number = nums[0];

    subArray[0] = nums[0];

    for (let i: number = 1; i < nums.length; i++) {
        subArray[i] = Math.max(nums[i] + subArray[i - 1], nums[i]);
        max = Math.max(max, subArray[i]);
    }

    return max;
};

热门文章

暂无图片
编程学习 ·

数据结构:双向链表(1)

双向链表基本思想大体结构增加修改MyList测试遍历修改MyList删除修改MyList测试 基本思想 双向链表与单向链表大同小异,只不过双向链表还有个节点指向最后一个节点 大体结构 新建工程,结构如下package list; public class MyList {long size;Node firstNode;Node lastNode;pu…
暂无图片
编程学习 ·

【Linux】——I/O复用之poll

1、poll的概述 在上一篇文章中,我们详细的介绍了I/O复用技术中的select使用。这篇文章我们来主要介绍一下poll. poll系统调用和select类似,也是在指定事件内轮询一定数量的文件描述符,以测试其中是否有就绪的 本质都是统一监听,如果任意一个文件描述符上有关注的事件发生。…
暂无图片
编程学习 ·

华为 openGauss数据库社区 openGauss数据库源代码

2020年7月1日,华为正式宣布开源数据库能力,开放openGauss数据库源代码, 并成立openGauss开源社区, 社区官网(http://opengauss.org)同步上线。关于openGaussopenGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核源自PostgreSQL,深度融合华为在…
暂无图片
编程学习 ·

java.lang.UnsupportedOperationException异常处理

今天写代码的时候遇到的,原因是因为使用Arrays.asList()将数组转为list之后,想调用add方法增加元素时的异常,后来查了资料才发现猫腻 在Arrays中有一个方法Arrays.asList(),这个平常我们都用作数组转List的,但是这个方法转出来的List是无法进行add/remove操作的,原因是由…
暂无图片
编程学习 ·

web编程期末大作业 项目一

作业要求一、登录注册页面 检测用户名密码是否一致,是则跳转至新闻页面增加注册用户登录界面如下: 发现自己实在是不太了解bootstrap的各种样式,界面也不知道该怎么优化,后面的html文档的css就都用的老师给的模板了 -_-||二、操作记录保留 首先先在数库中建立两张表,一个存…
暂无图片
编程学习 ·

【Java】--CyclicBarrier的介绍及应用

CyclicBarrier 简介 CyclicBarrier是java.util.concurrent包下的一个类,CyclicBarrier的字面意思是 可循环(Cyclic) 使用的 屏障(Barrier) 。 CyclicBarrier能让一组线程到达一个屏障(也可叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会打开,所有被屏障拦截的线…
暂无图片
编程学习 ·

网上书城前端界面设计

网上书城界面设计前言界面设计首页登录注册书籍搜索购物车代码实现总结 前言 接着我的上一篇博客来,今天为大家分享的内容是网上书城项目的界面设计以及代码分析 网上书城项目需求分析、功能划分、数据库表设计、工具类介绍 界面设计 首页首页的话,主要涉及到了BootStrap的相…
暂无图片
编程学习 ·

Java数据结构--循环链表

一、简介 1.1 概念对于单链表而言,最后一个结点的地址为空,如果表示最后一个结点的指针域指向头结点,整个链表形成一个环,就构成了单循环链表。 与单链表相比,只是将原来判断指针是否为空变为判断是否是头指针,没有其他的变化。 访问单循环链表某一结点,可以从任何一个结…
暂无图片
编程学习 ·

【算法设计与分析】第2章 枚举算法

第2章 枚举算法基本思想作用案例水仙花数 基本思想 列举问题所涉及的所有情形,并根据问题提出的条件逐个检验哪些是问题的解,哪些应予排除。 作用 1、理论上可解决计算领域中的各种问题 2、问题规模不大,运算速度可接受,设计更高效算法不值得的时候 3、作为底线 4、其他算法…
暂无图片
编程学习 ·

查看、生成 SSH 密钥用于安全登陆

SSH 可以用来登陆服务器,远程执行命令,并用强加密算法编码保护通信安全,目前广泛应用于远程命令控制、文件加密传输等方面。SSH 登陆服务器的方法一般有两种:密码登陆和密钥登陆。 在受信任的设备上使用密钥鉴权方式登陆相比于每次登陆时输入密码更加方便,也免除了密码被偷…
暂无图片
编程学习 ·

169. 多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 class Solution { public:int majori…
暂无图片
编程学习 ·

4.4.1 SpringCloud遇到的坑和实践案例

云课堂的总体架构云课堂Eureka的实践云课堂Ribbon中的实践云课堂Fegin中的实践云课堂Hystrix中的实现云课堂中Zuul中的实践SpringCloud在网易的实践 微服务的概念 一个真正的微服务具备的特性:可组合性 把springboot进行一个随意的组装会形成一个新的系统 每一个服务都是围绕自…
暂无图片
编程学习 ·

UE4基础:玩家出生点(PlayerStart)

玩家出生点(PlayerStart) 玩家出生点PlayerStart 继承于AActor,因此可以被放置到场景中。它的作用就是标记玩家出生的位置,游戏开始后,程序会查找玩家出生点的位置,并生成一个GameMode中配置的APawn,放置到该处,如果关卡里没有PlayerStart ,那么系统会在世界坐标(0,0,0…
暂无图片
编程学习 ·

3D点云—利用形状补全进行3D孪生跟踪

Leveraging Shape Completion for 3D Siamese Tracking 这是CVPR2019录用的一篇三维目标跟踪文章 摘要 点云由于其稀疏性而难以处理,因此自动驾驶汽车更多地依赖外观属性,而不是纯粹的几何特征。但是,3D LIDAR感知可以在充满挑战的光线或天气条件下为城市导航提供关键信息。…
暂无图片
编程学习 ·

YOLOv4目标检测:原理与源码解析

课程链接: https://edu.csdn.net/course/detail/29816YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,引入了许多新的目标检测技巧,可以作为很好的代码阅读案例,让我们深入探究其实现原理。本课程将解…
暂无图片
编程学习 ·

小程序进阶之路:跨平台开发避坑指南

阿里妹导读:小程序的开发不可避免的会面临跨平台开发的问题。各小程序平台有哪些特点?如何处理各平台的差异?本文分享淘票票在跨平台开发上的经验总结,包含了技术演进及差异控制策略,希望能帮助同学们提前避坑。文末福利:下载《小程序大世界》电子书。在 2019 年,阿里巴…