当前位置: 首页 > news >正文

网站推广优化开发建设/网络营销做的比较好的企业

网站推广优化开发建设,网络营销做的比较好的企业,淄博哪个网站做房屋出赁好,wordpress仪表盘登录哈希 128.最长连续序列 128. 最长连续序列 - 力扣(LeetCode) 这个题要求O(n)的时间复杂度,我一开始想的是双指针算法(因为我并不是很熟悉set容器的使用),但是双指针算法有小部分数据过不了。 题解给的哈…

哈希

128.最长连续序列

128. 最长连续序列 - 力扣(LeetCode)

这个题要求O(n)的时间复杂度,我一开始想的是双指针算法(因为我并不是很熟悉set容器的使用),但是双指针算法有小部分数据过不了。

题解给的哈希算法太妙了,简单来说就是通过unordered_set来去重,然后对于序列中的每一个元素num,使用count操作来查找序列中是否存在num-1,不存在的话,说明这个元素num是连续序列的首元素,最后比较得到最大值就行。

 set、multiset、map、multimap
特点:底层是红黑树,键值有序,set 、 map 键不可重复,multiset 和 multimap 可重复;
复杂度:插入、删除、查找都为O(logN);

unordered_set,unordered_map,unordered_multiset,unordered_multimap
特点:底层实现是哈希表,键值无序,unordered_set 和 unordered_map 键不可重复,而另外两个可以重复;
复杂度:插入、删除、查找平均为O(1),最坏为O(N),空间换时间;

C++代码 

class Solution {
public:int longestConsecutive(vector<int>& nums) {unordered_set<int>num_set;for(auto &num:nums)num_set.insert(num);int ans=0;for(auto &num:num_set){if(num_set.count(num-1)==0){int cur=num;int curans=1;while(num_set.count(cur+1)){cur+=1;curans+=1;}ans=max(ans,curans);}}return ans;}
};

python代码

class Solution:def longestConsecutive(self, nums: List[int]) -> int:ans=0num_set=set(nums)for num in num_set:if num-1 not in num_set:cur_num=numcur_ans=1while cur_num+1 in num_set:cur_num+=1cur_ans+=1ans=max(ans,cur_ans)return ans

 双指针

283.移动零

283. 移动零 - 力扣(LeetCode)

方法一:用双指针算法把非0的元素移动到前面去,最后补0

class Solution {
public:void moveZeroes(vector<int>& nums) {int j=0;for(int i=0;i<nums.size();i++){if(nums[i]){nums[j++]=nums[i];}}for(int i=j;i<nums.size();i++){nums[i]=0;}}
};

 方法二:我也不知道题解怎么想出来的

class Solution {
public:void moveZeroes(vector<int>& nums) {int j=0;for(int i=0;i<nums.size();i++){if(nums[i]){int temp=nums[i];nums[i]=nums[j];nums[j]=temp;j++;}}}
};

python代码

class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""j=0for i in range(len(nums)):if nums[i]:nums[j],nums[i]=nums[i],nums[j]j+=1

11.盛最多水的容器 

11. 盛最多水的容器 - 力扣(LeetCode)

 这道题的最优解法是左右双指针法。双指针法的难点在于难于想到,难以证明。

 AcWing 1575. 从暴力优化到双指针,明明白白(图解) - AcWing

 移动短的一边是因为:如果移动长的一边,宽已经由短的一边固定了,长度在不断缩减,所以以后的面积只会比现在小;如果移动短的一边,即使长度变短了,但是宽度和长度的乘积可能会变大;最后就是将最大值返回

class Solution {
public:int maxArea(vector<int>& height) {int ans=-1;int i=0,j=height.size()-1;while(i!=j){ans=max(ans,(j-i)*min(height[i],height[j]));if(height[i]<height[j])i++;else j--;}return ans;}
};

python

class Solution:def maxArea(self, height: List[int]) -> int:ans=-1i=0j=len(height)-1while(i!=j):ans=max(ans,(j-i)*min(height[i],height[j]))if(height[i]<height[j]):i+=1else:j-=1return ans

 15.三数之和

15. 三数之和 - 力扣(LeetCode)

  1. 排序:使用std::sort对数组进行排序。
  2. 外层循环:从第一个元素开始,每次选择一个元素作为三元组的第一个数。
  3. 内层循环:使用两个指针leftright从中间开始向两边扩展,寻找和为0的三元组。
  4. 跳过重复元素:在添加三元组到结果数组之前,检查当前元素是否与前一个元素相同,如果是,则跳过当前元素,避免重复。

定一找二,变双指针

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {std::sort(nums.begin(), nums.end());vector<vector<int>> ans;int n = nums.size();for (int i = 0; i < n - 2; i++) {if (i && nums[i] == nums[i - 1]) continue; // 跳过重复的元素int left = i + 1, right = n - 1;while (left < right) {long long sum = nums[i] + nums[left] + nums[right];if (sum == 0) {ans.push_back({nums[i], nums[left], nums[right]});while (left < right && nums[left] == nums[left + 1]) left++; // 跳过重复的元素while (left < right && nums[right] == nums[right - 1]) right--; // 跳过重复的元素left++;right--;} else if (sum < 0) {left++;} else {right--;}}}return ans;}
};

相关文章:

力扣刷题(自用)

哈希 128.最长连续序列 128. 最长连续序列 - 力扣&#xff08;LeetCode&#xff09; 这个题要求O(n)的时间复杂度&#xff0c;我一开始想的是双指针算法&#xff08;因为我并不是很熟悉set容器的使用&#xff09;&#xff0c;但是双指针算法有小部分数据过不了。 题解给的哈…...

网站开发:使用VScode安装yarn包和运行前端项目

一、首先打开PowerShell-管理员身份运行ISE 输入命令&#xff1a; set-ExecutionPolicy RemoteSigned 选择“全是”&#xff0c;表示允许在本地计算机上运行由本地用户创建的脚本&#xff0c;没有报错就行了 二、接着打开VScode集成终端 输入 npm install -g yarn 再次输入以…...

Linux_线程的使用

目录 1、线程与进程的关系 2、线程的优缺点 3、创建线程 4、查看启动的线程 5、验证线程是共享地址空间的 6、pthread_create的重要形参 6.1 线程id 6.2 线程实参 7、线程等待 8、线程退出 9、线程取消 10、线程tcb 10.1 线程栈 11、创建多线程 12、__th…...

[word] word如何编写公式? #微信#知识分享

word如何编写公式&#xff1f; word如何编写公式&#xff1f;Word中数学公式是经常会使用到的&#xff0c;若是要在文档中录入一些复杂的公式&#xff0c;要怎么做呢&#xff1f;接下来小编就来给大家讲一讲具体操作&#xff0c;一起看过来吧&#xff01; 方法一&#xff1a;…...

Pytest 框架快速入门

Pytest 框架常用功能介绍 一、简介 Pytest 是一个功能强大的 Python 测试框架&#xff0c;具有简单易用、测试用例清晰易读、支持参数化、可运行由 Nose 和 unittest 编写的测试用例、拥有丰富的第三方插件且可自定义扩展、支持重复执行失败的用例以及方便与持续集成工具集成…...

抖音视频素材去哪里找啊?视频素材网站库分享

在这个视觉盛宴的抖音平台上&#xff0c;高质量和有趣的视频素材常常是吸引观众的重要钥匙。如果你也正在寻找那些能让你的视频作品更加出色的资源&#xff0c;那么恭喜你&#xff0c;今天我将为你介绍10个超实用的视频素材网站&#xff0c;让你的抖音视频创作充满创意和效率。…...

win10 langchain-chatchat-0.3.1安装及测试

git clone https://github.com/chatchat-space/Langchain-Chatchat.git conda create -n langchain3 python3.11 conda activate langchain3 xinference安装用另一篇文章的内容处理。 pip install langchain-chatchat -U -i https://pypi.tuna.tsinghua.edu.cn/simple pip in…...

Redis 教程:从入门到入坑

目录 1. Redis 安装与启动1.1. 安装 Redis1.1.1. 在Linux上安装1.1.2. 在Windows上安装 1.2. 启动 Redis1.2.1. 在Linux上启动1.2.2. 在Windows上启动 1.3. 连接Redis1.3.1. 连接本地Redis1.3.2. 连接远程Redis1.3.2.1. 服务器开放端口1.3.2.2. 关闭防火墙1.3.2.3. 修改配置文件…...

计算机图形学入门31:动画与模拟的求解

1.前言 上一篇介绍了动画与模拟的很多方法、模拟各种运动、基本知识。定义一个物体的速度和加速度&#xff0c;算出物体在任何时刻的位置&#xff0c;但是没有介绍具体怎么实现。这篇文章就是从上一篇的概念出发&#xff0c;介绍怎么把一个物体或多个物体运动的位置、不同时间出…...

Jmeter-单用户单表查询千条以上数据,前端页面分页怎么做

这里写自定义目录标题 单用户单表查询千条以上数据 单用户单表查询千条以上数据 对于单用户查询千条以上数据&#xff0c;但是前端页面做了分页的情况下 可以直接把查询接口下的分页限制去掉&#xff0c;便可查询出当前页面查询条件下的全部数据 例如去掉如下内容&#xff1…...

夏日养猫攻略!你家猫咪缺水了吗?补水罐头秘籍大公开

炎炎夏日&#xff0c;高温来袭&#xff0c;这几天又有几只猫咪因为中暑被送到我们医院了&#xff0c;经过诊断&#xff0c;发现猫咪体温超过40C&#xff0c;而且严重缺水。 各位铲屎官真的得注意&#xff0c;酷暑炎热&#xff0c;给猫咪补水很重要。猫咪的汗腺数量远远不及人类…...

生成名片格式

/*** 生成名片* param array arr2 卡片素材* param array strs 素材文字 数组* param function successFn 回调函数* * */PosterCanvasCard: function(arr2, strs, successFn, errFun) {let that this;const ctx uni.createCanvasContext(myCanvas);ctx.clearRect(0, 0, 0, 0…...

Linux常用命令(简要总结)

Linux常用命令 Linux 是一个强大的操作系统&#xff0c;广泛应用于服务器、开发和嵌入式系统中。掌握一些常用的 Linux 命令对于高效地使用系统至关重要。以下是一些常用的 Linux 命令及其简要说明&#xff1a; 文件和目录操作 ls&#xff1a;列出目录内容 ls ls -l # …...

从挑战到实战!TDengine 新能源行业研讨会要点回顾

近年来&#xff0c;随着全球对可再生能源需求的不断增长&#xff0c;新能源行业迎来了前所未有的发展机遇。然而&#xff0c;伴随着行业的快速发展&#xff0c;海量数据的管理和高效利用成为了行业面临的重要挑战。如何通过先进的数据管理技术提升新能源系统的效率和可靠性&…...

Linux 之 设置环境变量

设置环境变量 启动帐号后自动执行的是 文件为 .bashrc&#xff0c;然后通过这个文件可设置自己的环境变量&#xff1b; 临时设置环境变量&#xff1a; 在终端中使用 export 命令可以临时设置环境变量&#xff0c;例如&#xff1a;export PATH$PATH:/your/custom/path这种方法设…...

postgresql删除用户

背景 **角色与用户**&#xff1a;在 PostgreSQL 中&#xff0c;用户和组的概念是通过“角色”来统一实现的。角色可以有登录权限&#xff08;在这种情况下&#xff0c;它们通常被称为“用户”&#xff09;&#xff0c;也可以没有&#xff08;在这种情况下&#xff0c;它们通常用…...

【java深入学习第5章】Spring Boot 统一功能的实现及处理方式

Spring Boot 统一功能处理 在开发 Web 应用程序时&#xff0c;为了提高代码的可维护性和可扩展性&#xff0c;我们通常会采用一些统一的功能处理方式。本文将介绍如何在 Spring Boot 中实现统一的数据返回格式、异常处理和功能处理&#xff0c;并通过一个图书管理系统的案例来…...

【常见开源库的二次开发】基于openssl的加密与解密——单向散列函数(四)

目录&#xff1a; 目录&#xff1a; 一、什么是单项散列函数&#xff1f; 1.1 如何验证文件是否被修改过 1.2 单项散列函数&#xff1a; 二、单向hash抗碰撞 2.1 弱抗碰撞&#xff08;Weak Collision Resistance&#xff09; 2.2 强抗碰撞&#xff08;Strong Collision Resista…...

获取不重复流水号(java)

一&#xff1a;概述 很多业务场景都需要获取不重复的业务流水号&#xff0c;当微服务项目或服务多节点部署时&#xff0c;获取流水号场景使用分布式锁性能低下&#xff0c;可以基于数据库行锁实现获取不重复流水号。 二&#xff1a;创建流水号数据库 CREATE TABLE serial (i…...

【python虚拟环境管理】【mac m3】 使用pipx安装poetry

文章目录 一. 安装 pipx二. 安装Poetry1. 安装2. advanced 操作 官网文档&#xff1a;https://python-poetry.org/docs/ pipx介绍文档&#xff1a;https://blog.51cto.com/u_15064632/2570626 一. 安装 pipx pipx 用于全局安装 Python 命令行应用程序&#xff0c;同时在虚拟环…...

git使用以及理解

git练习网站 Learn Git Branching git操作大全Oh Shit, Git!?! git commit git branch name git merge bugFix 合并俩个分支 git rebase main git checkout headgit switch head 会导致HEAD分离 &#xff0c;就是指head->HEAD->c1 相对引用 ------------------- …...

openlayers 3d 地图 非三维 立体地图 行政区划裁剪 地图背景

这是实践效果 如果没有任何基础 就看这个专栏&#xff1a;http://t.csdnimg.cn/qB4w0 这个专栏里有从最简单的地图到复杂地图的示例 最终效果&#xff1a; 线上示例代码&#xff1a; 想要做这个效果 如果你的行政区划编辑点较多 可能会有卡顿感 如果出现卡顿感需要将边界点相应…...

GEO数据挖掘从数据下载处理质控到差异分析全流程分析步骤指南

0. 综合的教学视频介绍 GEO数据库挖掘分析作图全流程每晚11点在线教学直播录屏回放视频&#xff1a; https://www.bilibili.com/video/BV1rm42157CT/ GEO数据从下载到各种挖掘分析全流程详解&#xff1a; https://www.bilibili.com/video/BV1nm42157ii/ 一篇今年近期发表的转…...

‍我想我大抵是疯了,我喜欢上了写单元测试

前言 大家好我是聪。相信有不少的小伙伴喜欢写代码&#xff0c;但是对于单元测试这些反而觉得多此一举&#xff0c;想着我都在接口文档测过了&#xff01;还要写什么单元测试&#xff01;写不了一点&#xff01;&#xff01; 由于本人也是一个小小程序猿&#x1f649;&#xf…...

【Visual Studio】Visual Studio使用技巧及报错解决合集

目录 目录 一.概述 二.Visual Studio报错问题及解决方法 三.Visual Studio操作过程中遇到的问题及解决方法 四.Visual Studio编译优化选项 五.Visual Studio快捷键 一.概述 持续更新Visual Studio报错及解决方法&#xff0c;包括Visual Studio报错问题及解决方法、Visua…...

服务器数据恢复—raid5阵列热备盘同步失败导致lun不可用的数据恢复案例

服务器存储数据恢复环境&#xff1a; 华为S5300存储中有一组由16块FC硬盘组建的RAID5磁盘阵列&#xff08;包含一块热备盘&#xff09;。 服务器存储故障&#xff1a; 该存储中的RAID5阵列1块硬盘由于未知原因离线&#xff0c;热备盘上线并开始同步数据&#xff0c;数据同步到…...

算法题目整合

文章目录 121. 小红的区间翻转142. 两个字符串的最小 ASCII 删除总和143. 最长同值路径139.完美数140. 可爱串141. 好二叉树 121. 小红的区间翻转 小红拿到了两个长度为 n 的数组 a 和 b&#xff0c;她仅可以执行一次以下翻转操作&#xff1a;选择a数组中的一个区间[i, j]&…...

万界星空科技AI低代码平台:重塑数字化创新边界

在这个日新月异的数字化时代&#xff0c;技术的飞速发展正以前所未有的力量重塑着每一个行业。企业如何在瞬息万变的市场环境中保持竞争力&#xff0c;实现业务的快速迭代与创新&#xff1f; 重塑开发模式&#xff0c;加速数字化转型 传统软件开发周期长、成本高、门槛高&…...

iredmail服务器安装步骤详解!如何做配置?

iredmail服务器安全性设置指南&#xff1f;怎么升级邮件服务器&#xff1f; iredmail是一个功能强大的邮件服务器解决方案&#xff0c;它集成了多个开源软件&#xff0c;使您能够快速部署和管理邮件服务。AokSend将逐步引导您完成安装过程&#xff0c;无需深入的编程知识即可轻…...

【vue深入学习第1章】Vue.js 中的 Ajax 处理:vue-resource 库的深度解析

在现代前端开发中&#xff0c;Ajax 请求是与后端进行数据交互的关键技术。Vue.js 作为一个渐进式 JavaScript 框架&#xff0c;提供了多种方式来处理 Ajax 请求&#xff0c;其中 vue-resource 是一个较为常用的库。尽管 vue-resource 在 Vue 2.x 之后不再是官方推荐的 Ajax 处理…...