LeetCode Hot 100:普通数组

LeetCode Hot 100:普通数组

53. 最大子数组和

思路 1:动态规划

class Solution
{
public:int maxSubArray(vector<int> &nums){// 特判if (nums.empty())return 0;if (nums.size() == 1)return nums[0];int n = nums.size();// 状态数组vector<int> dp(n + 1, 0);// dp[i]: 以第i个元素结尾,连续子数组的最大和int maxSum = INT_MIN;// 状态转移for (int i = 1; i <= n; i++){if (dp[i - 1] > 0)dp[i] = dp[i - 1] + nums[i - 1];elsedp[i] = nums[i - 1];maxSum = max(maxSum, dp[i]);}return maxSum;}
};

空间优化:

class Solution
{
public:int maxSubArray(vector<int> &nums){// 特判if (nums.empty())return 0;if (nums.size() == 1)return nums[0];int n = nums.size();int pre = 0, cur = 0, maxSum = INT_MIN;for (int i = 0; i < n; i++){if (pre > 0)cur = pre + nums[i];elsecur = nums[i];pre = cur;maxSum = max(maxSum, cur);}return maxSum;}
};

56. 合并区间

思路 1:排序

class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {if (intervals.empty())return {};sort(intervals.begin(), intervals.end(),[](const vector<int>& i1, const vector<int>& i2) {return i1[0] < i2[0];});vector<vector<int>> ans;for (vector<int>& interval : intervals) {int left = interval[0], right = interval[1];if (ans.empty() || ans.back()[1] < left)ans.push_back({left, right});elseans.back()[1] = max(ans.back()[1], right);}return ans;}
};

189. 轮转数组

思路 1:辅助数组

class Solution {
public:void rotate(vector<int>& nums, int k) {int n = nums.size();k %= n;vector<int> ans(nums.begin() + n - k, nums.end());for (int i = 0; i < n - k; i++)ans.push_back(nums[i]);nums = ans;}
};

思路 2:数组翻转

class Solution {
public:void rotate(vector<int>& nums, int k) {k %= nums.size();reverse(nums.begin(), nums.end());reverse(nums.begin(), nums.begin() + k);reverse(nums.begin() + k, nums.end());}
};

238. 除自身以外数组的乘积

思路 1:前后缀分解

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n = nums.size();vector<int> pre(n);pre[0] = nums[0];for (int i = 1; i < n; i++)pre[i] = pre[i - 1] * nums[i];vector<int> suf(n);suf[n - 1] = nums[n - 1];for (int i = n - 2; i >= 0; i--)suf[i] = suf[i + 1] * nums[i];vector<int> ans(n);for (int i = 0; i < n; i++) {int left = i == 0 ? 1 : pre[i - 1];int right = i == n - 1 ? 1 : suf[i + 1];ans[i] = left * right;}return ans;}
};

空间优化:

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n = nums.size();vector<int> ans(n);ans[0] = 1;for (int i = 1; i < n; i++)ans[i] = ans[i - 1] * nums[i - 1];int mult = 1;for (int i = n - 1; i >= 0; i--) {ans[i] = ans[i] * mult;mult *= nums[i];}return ans;}
};

41. 缺失的第一个正数

思路 1:原地哈希

class Solution {
public:int firstMissingPositive(vector<int>& nums) {int n = nums.size();for (int i = 0; i < n; i++)while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i])swap(nums[nums[i] - 1], nums[i]);for (int i = 0; i < n; i++)if (nums[i] != i + 1)return i + 1;return n + 1;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/57331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录 -- 贪心 -- 合并区间

56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 先按照左边界从大到小对数组进行排序&#xff1b; 遍历数组&#xff1a;如果当前遍历的区间左边界小于等于前一个区间的右边界&#xff0c;更新当前区间的左边界为最小的左边界&#xff0c;右边界为最…

Python 网络爬虫教程

在大数据时代&#xff0c;获取数据是至关重要的一步。而网络爬虫是获取网络上公开数据的有效工具之一。本文将介绍如何使用 Python 来编写一个基本的网络爬虫&#xff0c;并通过具体的案例来展示如何抓取和处理网页数据。 1. 什么是网络爬虫&#xff1f; 网络爬虫是一种自动化…

linux centos7系统ARM架构下安装最新版docker 27.3.1及docker-compose v2.3.4

卸载旧版本的docker 相关安装包 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine安装最新版docker&#xff0c;通过以下版本下载arm版本docker包 https://download.…

打造高性能在线电子表格:WebGL 渲染引擎 Kola2d 自研之路

导读&#xff1a;本文主要阐述了 Docs 在线表格为打造极致渲染性能所做的关键优化和过程思考&#xff0c;作为首个在在线电子表格领域自研基于WebGL渲染引擎的「吃螃蟹」者&#xff0c;整个过程面临诸多不确定性与挑战&#xff0c;Kola2d 的整体设计在此期间也经历了几轮推倒重…

linux之网络子系统- 地址解析协议arp 源码分析和邻居通用框架

一、arp 的作用 ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff09;是将IP地址解析为以太网MAC地址&#xff08;物理地址&#xff09;的协议。在局域网中&#xff0c;当主机或其他网络设备有数据要发送给另一个主机或设备时&#xff0c;它必须知…

MySQL中localhost和127.0.0.1的区别

在 MySQL 中&#xff0c;localhost 和 127.0.0.1 是两个不同的概念&#xff0c;它们在网络连接的方式上有所不同&#xff0c;这可能会导致你在使用时遇到问题。 1. localhost vs 127.0.0.1 localhost: 当你使用 localhost 连接 MySQL 时&#xff0c;MySQL 客户端会尝试使用 Un…

酒店预订订房小程序源码系统 多酒店入驻+打造类似美团的酒店模式 带完整的安装代码包以及搭建部署教程

系统概述 随着移动互联网的普及&#xff0c;小程序因其轻量级、无需下载安装、即用即走的特点&#xff0c;迅速成为各行业的标配。对于酒店预订行业而言&#xff0c;小程序不仅能够有效提升用户体验&#xff0c;还能降低运营成本&#xff0c;提高转化率。本源码系统正是基于这…

企业数字化转型的理论指南:构建未来企业的关键策略与实践路径

数字化转型已经成为当今企业发展和市场竞争的核心驱动力&#xff0c;而在这一过程中&#xff0c;企业架构&#xff08;EA&#xff09;发挥着至关重要的作用。这本白皮书《世界级企业架构&#xff1a;建立和发展EA能力的领导者方法》提供了深入的理论指导&#xff0c;为企业如何…

ToolBox没有进行配置 Failed to initialize Toolboxlibrary

solidworks打开右侧提示 ToolBox没有进行配置跟Failed to initialize Toolboxlibrary 解决方法如下 使用xxclean的扩展功能 SW右侧栏是英文 toolbox配置无效 这个按钮

开源大模型项目,助你效率提高 10 倍

随着 AI 的普及&#xff0c;大家使用 AI 工具的时间越来越长了&#xff0c;尤其因为有了像 GPT-4o 和 Claude 这样强大的 LLM。 今天&#xff0c;我将介绍 21 个开源 LLM 项目&#xff0c;它们可以帮助你构建令人兴奋的内容&#xff0c;并将人工智能集成到你的项目中。 Vanna…

【华为HCIP实战课程十七】OSPF的4类及5类LSA详解,网络工程师

一、5类LSA详解 由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了STUB区域和NSSA区域)。 我们在R6设备配置引入直连路由,R6的lo10 属于区域2 interface LoopBack10 ip address 6.6.6.6 255.255.255.255 ospf enable 1 area 0.0.0.2 [R6-ospf-1]import-route dire…

原型模式具体和直接调用构造函数创建实例的区别

原型模式与直接调用构造函数创建实例的区别主要在于创建对象的方式和使用场景。让我们一步一步来理解。 直接调用构造函数创建实例 这是我们通常使用的创建对象的方法。通过调用类的构造函数&#xff0c;传入必要的参数来初始化对象。每次都要通过构造函数为对象设置所有初始值…

容灾与云计算概念

​​​​​​基础知识容灾备份——备份技术系统架构与备份网络方案-CSDN博客 SAN&#xff0c;是storage area network的简称&#xff0c;翻译过来就是存储区域网络。 顾名思义&#xff0c;SAN首先是一个网络&#xff0c;其次它是关于存储的&#xff0c;区域则是指服务器和存储资…

膜结构首次应用于国内游轮项目—轻空间

轻空间&#xff08;江苏&#xff09;膜科技有限公司近日成功中标一项国内游轮项目&#xff0c;这一成就标志着膜结构在游轮船舶行业的首次应用&#xff0c;开启了新的市场探索之旅。 作为行业先锋&#xff0c;轻空间始终致力于将创新技术融入多元化场景。本次游轮项目的成功中标…

基于Bert+Attention+LSTM智能校园知识图谱问答推荐系统

获取更多完整项目代码数据集&#xff0c;点此加入免费社区群 &#xff1a; 首页-置顶必看 1. 项目简介 本项目旨在实现基于ALBERT模型的命名实体识别&#xff08;NER&#xff09;任务。ALBERT&#xff08;A Lite BERT&#xff09;是谷歌提出的轻量级BERT模型&#xff0c;具有…

H5开发和微信小程序开发有什么区别

H5开发和微信小程序在开发语言、运行环境以及用户体验等方面存在区别。具体分析如下&#xff1a; 开发语言 H5&#xff1a;基于HTML5的标准&#xff0c;使用HTML、CSS、JavaScript等Web技术进行开发。微信小程序&#xff1a;采用微信自定义的WXML&#xff08;WeiXin Markup Lan…

Claude 3.5重大升级:Sonnet功能提升,Haiku推出在即,开发者抢先体验AI操控电脑新功能

就在今天&#xff0c;Anthropic公司发布了令人兴奋的升级内容&#xff0c;推出了Claude 3.5 Sonnet和全新的Claude 3.5 Haiku。这次更新不仅带来了功能上的重大突破&#xff0c;还引入了AI操控电脑的新功能&#xff0c;掀起了业界的讨论。本文将详细解读这次发布的亮点及其背后…

超详细JDK安装+环境配置教程

安装jdk 1.首先在JDK官网进行下载 JDK会默认安装在C盘 program file文件下 2.并且在JDK安装的过程中会提示安装JRE JDK和JRE会安装在同一目录下 JDK通过命令行进行使用 JDK的目录 以下是JDK对应的目录 bin:存放可执行程序 其中包含java javac命令 Include&#xff1a;本地…

Android摄像头Camera2和Camera1的一些总结

Android 系统对摄像头的同时使用有限制&#xff0c;不能同时使用摄像头进行预览或者录制音视频。 例如&#xff1a;界面上有两个SurfaceView, 这两个SurfaceView不能同时预览或者录制音视频&#xff0c;只能有一个正常工作&#xff08;一个SurfaceView预览前置摄像头&#xff…

使用docker build自制flink镜像供k8s使用

1、创建一个空目录专门用于自制docker镜像 mkdir -p /opt/module/flink-docker 2、将符合项目要求的本地flink拷贝到目录 cp -r /opt/module/flink-1.16.3 /opt/module/flink-dockercd /opt/module/flink-dockermv flink-1.16.3 flink 3、编写Dockerfile文件 FROM m.daocl…