每日算法(第十六期)

news/2024/10/25 17:20:32/

先来回顾一下上期的问题及答案:

「最大子序和」(Maximum Subarray)。

题目描述: 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

解题思路:

  • 使用动态规划的思想解决问题。

  • 定义两个变量 maxSumcurrSum,分别表示最大和和当前连续子数组的和,初始化为数组的第一个元素。

  • 遍历数组,对于每个元素,计算当前元素加入之后的连续子数组的和,与当前元素自身进行比较,取较大的值作为新的 currSum

  • 同时,更新 maxSum,记录最大的和。

  • 最终返回 maxSum

时间复杂度分析:

  • 遍历整个数组的时间复杂度为 O(n),其中 n 是数组的长度。

空间复杂度分析:

  • 只使用了常量级别的额外空间,所以空间复杂度为 O(1)。

例如:

console.log(maxSubArray([-2, 1, -3, 4, -1, 2, 1, -5, 4])); // 6
console.log(maxSubArray([1])); // 1
console.log(maxSubArray([5, 4, -1, 7, 8])); // 23

代码实现:

function maxSubArray(nums) {let maxSum = nums[0];let currSum = nums[0];for (let i = 1; i < nums.length; i++) {currSum = Math.max(nums[i], currSum + nums[i]);maxSum = Math.max(maxSum, currSum);}return maxSum;
}

在上述例子中,给定数组分别为 [-2, 1, -3, 4, -1, 2, 1, -5, 4][1][5, 4, -1, 7, 8]。通过调用 maxSubArray 函数找到具有最大和的连续子数组。最大和分别为 6123

2023年6月6日

「无重复字符的最长子串」(Longest Substring Without Repeating Characters)

题目描述: 给定一个字符串 s,请找出其中不含有重复字符的最长子串的长度。 解题思路:

使用滑动窗口的思想解决问题。

  1. 定义两个指针 start 和 i,分别表示子串的起始位置和结束位置。

  2. 遍历字符串 s,对于每个字符,判断其是否在当前子串中出现过。

  3. 如果字符已经出现过,则更新 start 为该字符上次出现的位置的下一个位置。

  4. 更新 maxLength,记录最长的不重复子串的长度。

  5. 最终返回 maxLength。

上面问题的答案会在第二天的公众号推文中公布,大家可以关注公众号:程序员每日三问,第一时间获得推送内容。

学习不打烊,充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题(死磕自己,愉悦大家) 希望大家在这浮夸的程序员圈里保持冷静,每天坚持花20分钟来学习与思考,在千变万化,类库层出不穷的今天,不要等到找工作时才狂刷题,提倡每日学习。


http://www.ppmy.cn/news/237053.html

相关文章

如何使用 Raycast 一键打开预设工作环境

工作中&#xff0c;你一定遇到过这样的场景&#xff1a;你正在认真写代码&#xff0c;线上突然出现报警。看到报警信息之后&#xff0c;你不得不打开浏览器&#xff0c;点开收藏夹&#xff0c;打开监控页面、告警页面、trace 页面、日志搜索平台……有时&#xff0c;还需要打开…

惊爆!Python打造花式照片墙!

大家注意&#xff1a;因为微信最近又改了推送机制&#xff0c;经常有小伙伴说错过了之前被删的文章&#xff0c;比如前阵子冒着风险写的爬虫&#xff0c;再比如一些限时福利&#xff0c;错过了就是错过了。 所以建议大家加个星标&#xff0c;就能第一时间收到推送。&#x1f44…

摄影光学与镜头pdf_光学镜头概述及分类.pdf

光学镜头概述及分类 光学镜头概述及分类 学镜头一般称为摄像镜头或摄影镜头&#xff0c;简称镜头&#xff0c;其功能就是 学成像。镜头是机器视觉系统中的重要组件&#xff0c;对成像质量有 着关键性的作用&#xff0c;它对成像质量的几个最主要指标都有影响&#xff0c;包括&a…

HALCON联合C#检测表面缺陷——镜头的选型(二)

镜头分类 镜头有多种分类方法: 按功能分类:定焦镜头、变焦(倍)镜头、定光圈镜头; 按用途分类:远心镜头、FA镜头、线扫镜头、微距镜头(或者显微镜头); 按视角分类:普通镜头、广角镜头、远摄镜头; 按焦距分类:短焦距镜头、中焦距镜头、长焦距镜头。 工业应用中,最常用…

深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__QObject的主线程的事件循环

深入理解Qt多线程编程&#xff1a;QThread、QTimer与QAudioOutput的内在联系__QObject的主线程的事件循环 1. Qt多线程编程的基础1.1 QObject和线程&#xff08;QObject and Threads&#xff09;1.2 QThread的使用和理解&#xff08;Understanding and Using QThread&#xff0…

机器视觉之镜头简介

一、什么是镜头 简单讲镜头就是在其一端收集物体的光线&#xff0c;并将光线在另一端汇聚为实像&#xff0c;并投影到接收面的物体。此时&#xff0c;汇集光线的点称为焦点&#xff0c;镜头中心到焦点的距离称为焦点距离。 当镜头为凸镜时&#xff0c;焦点距离将根据镜头的厚…

机器视觉——镜头介绍

为什么需要镜头&#xff1f; 肉眼结构&#xff1a; 镜头相当于充当晶状体这一环节&#xff0c;简而言之&#xff0c;镜头主要的作用就是聚光。为什么要聚光&#xff1f;比如说在大晴天用放大镜生火&#xff0c;你会发现阳光透过放大镜聚集到一点上&#xff0c;也就是说&#xf…

Landscape Photography: Telephoto Lenses 风景摄影:长焦镜头 Lynda课程中文字幕

Landscape Photography: Telephoto Lenses 中文字幕 风景摄影&#xff1a;长焦镜头 中文字幕Landscape Photography: Telephoto Lenses 亲近自然&#xff0c;亲近自然 探索远摄镜头在风景摄影中提供的创意选项 这个有针对性的摄影技巧小组适用于任何对孤立拍摄对象&#xff0c…