刷爆Leetcode Day2

leetcode

  • 6. 和为s的两个数字
  • 7.三数之和
  • 8. 四数之和
  • 9. 长度最小的子数组
  • 10. 无重复字符的最长子串

6. 和为s的两个数字

题目

class Solution {
public:vector<int> twoSum(vector<int>& price, int target) {//排序+双指针sort(price.begin(),price.end());int left=0,right=price.size()-1;while(left<right){int ret=price[left]+price[right];if(ret>target){right--;}else if(ret<target){left++;}else{//隐式类型转换return {price[left],price[right]};}}return {};}
};

7.三数之和

三数之和

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {//延续上一题的做法,不过只是target会改变//复杂的是这里需要去重也就是三元组之间没有交集(参考集合)sort(nums.begin(),nums.end());vector<vector<int>> vv;int n=nums.size();//i++不能在这里,否则会跳过部分元素//三元组,因此i最多等于n-3for(int i=0;i<n-2;){//对于一个已经排好序的数组来说,正整数不需要固定了,因为三数之和一定大于0if(nums[i]>0)break;int left=i+1,right=n-1,target=-nums[i];while(left<right){int sum = nums[left] + nums[right];if(sum>target)right--;else if(sum<target)left++;else{vv.push_back({nums[left],nums[right],nums[i]});left++;right--;//去重,防止越界如[0,0,0,0,0,0]left会减到-1while(left<right&&nums[left]==nums[left-1])left++;while(left<right&&nums[right]==nums[right+1])right--;}}i++;while(i<n-2&&nums[i]==nums[i-1])i++;}return vv;}
};

8. 四数之和

四数之和

class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {//延续上一题,不过在此之上要多固定一个sort(nums.begin(),nums.end());vector<vector<int>> vv;int n=nums.size();for(int i=0;i<n-3;){for(int j=i+1;j<n-2;){int left=j+1,right=n-1;while(left<right){//数据太大了整形存不下来,[1000000000,1000000000,1000000000,1000000000],用long long//可以先去减target,nums[i]-(long long)这样的话会进行提升做64位的计算,放到后面也会存储不下来long long aim=nums[i]-(long long)target+nums[j]+nums[right]+nums[left];if(aim<0)left++;else if(aim>0)right--;else{vv.push_back({nums[left],nums[right],nums[i],nums[j]});left++;right--;//去重while(left<right&&nums[left]==nums[left-1])left++;while(left<right&&nums[right]==nums[right+1])right--;}}j++;while(j<n-2&&nums[j]==nums[j-1])j++;}i++;while(i<n-3&&nums[i]==nums[i-1])i++;}return vv;}
};

9. 长度最小的子数组

长度最小的子数组

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {//滑动窗口问题//暴力求解:枚举+我们可以通过左下标和右下标划分子数组+遍历子数组求和,O(n^3)//滑动窗口是基于“同向双指针”的思想,也就是左右指针朝一个方向移动这是基于求和的单调性int left=0,right=-1,n=nums.size(),sum=0,len=100001;for(int left = 0, right = 0; right < n; right++){//循环进或者循环出,不要用if来判断sum += nums[right]; // 进窗⼝ while(sum >= target) // 判断 {len = len>right-left+1?right-left+1:len;// 更新结果 sum -= nums[left++]; // 出窗⼝ }}//注意len最大为100000,可能整个数组求和都小于target,此时判断len是否等于100001来判断村子不符合条件的子数组return len == 100001 ? 0 : len;}
};

10. 无重复字符的最长子串

无重复字符的最长子串

class Solution {
public:int lengthOfLongestSubstring(string s) {//滑动窗口问题//我们需要一个哈希表来映射相同元素以便可以去重//对于一个重复子串,我们很容易想到除非我们跳过重复元素,否则重复子串的子串一定是减少的//通过整形数组实现哈希表int n=s.size();int len=0;// 创建⼀个哈希表,统计频次int hash[96] = { 0 };for (int left=0,right = 0; right < n; right++){ //映射char gap=31;// 寻找结束为⽌ hash[s[right]-31]++; // 统计字符出现的频次 while (hash[s[right]-31] > 1) // 如果出现重复的{hash[s[left]-31]--;left++;} // 如果没有重复,就更新 ret len=len>right-left+1?len:right-left+1;}return len;}
};

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

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

相关文章

C++ operator new和operator delete的深入讲解

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 前言 关于operator new和operator delete我们需要明确一个概念&#xff0c;这两个都是…

15.5 JDBC数据库编程5——DAO

目录 15.1.1 引言 实体类Product.java 异常类DaoException.java Dao.java ProductDao.java ProductDaoImpl.java ProductDaoTest.java 15.1.1 引言 Java是面向对象编程语言&#xff0c;主要操作对象&#xff0c;而关系数据库的数据并不是对象&#xff0c;Java程序插入…

linux线程 | 线程的控制(下)

前言&#xff1a; 本节内容是线程的控制部分的第二个小节。 主要是列出我们的线程控制部分的几个细节性问题以及我们的线程分离。这些都是需要大量的代码去进行实验的。所以&#xff0c; 准备好接受新知识的友友们请耐心观看。 现在开始我们的学习吧。 ps:本节内容适合了解线程…

对MVC详细解读

一、MVC模式的详细组成部分 1. 模型&#xff08;Model&#xff09; 数据结构&#xff1a; 模型通常使用类或结构来定义应用程序的数据结构。例如&#xff0c;在Ruby on Rails中&#xff0c;模型通常与数据库表相对应&#xff0c;使用Active Record模式。 数据访问层&#xff1…

动态内存管理(C语言 VS C++)

目录 一.动态内存管理的前置知识 1.栈区 a.栈区的特点 b.注意事项 2.堆区 a.堆区的特点 b.注意事项 3.全局/静态区 a.作用域和生命周期 b.注意事项 4.常量区 二.C语言动态内存管理 1.malloc 函数 a.接口简介与使用实例 b.注意要点 2.calloc 函数&#xff1a; 3.…

Flink Web UI 是使用和调试保姆级教程(持续更新)

Flink Web UI 是调试和监控 Flink 应用程序的重要工具&#xff0c;通过它&#xff0c;你可以实时查看正在运行的 Flink 任务的详细信息&#xff0c;包括作业的状态、性能指标、各子任务的运行情况、故障恢复情况等。Flink Web UI 的这些功能为开发者和运维人员提供了调试和优化…

化学元素分子量、氧化物系数计算python类

在网上找到的分子量计算类&#xff0c;做了少量修改,有原子量、分子量、氧化物系数的计算。 import re wt_dict{ #该原子量数据从CRC手册第95版提取。"H": 1.008,"He": 4.002602,"Li": 6.94,"Be": 9.0121831,"B": 10.…

【入门篇】2.4 map映射文件解析

目录 一,编译产物 1.1 .o 文件(目标文件): 1.2 .hex 文件(十六进制文件) 1.3 .bin 文件(二进制文件) 1.4 .elf 文件(可执行链接格式文件) 1.5 .map 文件(映射文件) 1.6 .lst 文件(列表文件) 二,map文件解析 2.1 程序段交叉引用关系(Section Cross Refe…

Git基础-配置http链接的免密登录

问题描述 当我们在使用 git pull 或者 git push 进行代码拉取或代码提交时&#xff0c; 若我们的远程代码仓库是 http协议的链接时&#xff0c;就是就会提示我们进行账号密码的登录。 每次都要登录&#xff0c;这未免有些麻烦。 本文介绍一下免密登录的配置。解决方案 1 执行…

如何在CSS中修改滚动条样式

修改滚动条样式在CSS中是一个有趣而常见的需求&#xff0c;特别是当你希望网页设计更加个性化时。虽然并不是所有浏览器都完全支持修改滚动条样式&#xff0c;但我们可以使用一些专门的CSS选择器来控制滚动条外观。以下是一个详细讲解&#xff0c;适合整理成博客发布。 如何在C…

软考系统分析师知识点十三:软件需求工程

前言 今年报考了11月份的软考高级&#xff1a;系统分析师。 考试时间为&#xff1a;11月9日。 倒计时&#xff1a;24天。 目标&#xff1a;优先应试&#xff0c;其次学习&#xff0c;再次实践。 复习计划第一阶段&#xff1a;扫平基础知识点&#xff0c;仅抽取有用信息&am…

FPGA采集adc,IP核用法,AD驱动(上半部分)

未完结&#xff0c;明天补全 IP核&#xff1a;集成的一个现有的模块 串口写好后基本不会再修改串口模块内部的一些逻辑&#xff0c;将串口.v文件添加进来&#xff0c;之后通过他的上层的接口去对他进行使用&#xff0c;所以我们打包IP&#xff0c;之后就不用去添加源文件了&a…

仿 Mac 个人网站开发 |项目复盘

一、前言 1.1 灵感来源 早年有幸看到国外大佬做的一个 基于 Web 的 Windows XP 桌面娱乐系统, 那时刚好有搭建一个个人博客的想法, 所以就想是否可以基于 WEB 实现一个仿 Mac UI 的个人博客, 以应用的形式来展示博客各个功能! 1.2 相关链接(求个 Star) 前端开源代码后端开源…

Linux之实战命令32:chroot应用实例(六十六)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

【MySQL】入门篇—SQL基础:SQL语言概述

SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理和操作关系数据库的标准语言。随着信息技术的快速发展&#xff0c;数据成为企业和组织最重要的资产之一。有效地存储、查询和管理数据对于业务决策和运营至关重要。 SQL作为与关…

Java类与对象的分配机制

在Java中&#xff0c;类和对象是不同的概念。 类是一种数据类型&#xff0c;它定义了对象的行为和属性。类可以包含成员变量和方法。 对象是类的实例&#xff0c;它是在程序运行时根据类创建的。每个对象都有自己独立的内存空间&#xff0c;可以访问类中定义的成员变量和方法…

ali 231普通滑块82y版本

有需求可以联系博主 let v Died_in2021

【含开题报告+文档+PPT+源码】基于人脸识别的课堂考勤系统的设计与实现

开题报告 随着科技的不断发展&#xff0c;人脸识别技术已经逐渐渗透到各个领域&#xff0c;包括教育领域。传统的课堂考勤方式通常依赖于学生签到或教师手动记录&#xff0c;这种方式存在着许多不足之处&#xff0c;例如容易出现人为错误、耗费时间和资源等。为了解决这些问题…

诺贝尔经济学奖历史名单数据集(1969-2024年)

2024年诺贝尔经济学奖授予了达龙阿西莫格鲁&#xff08;Daron Acemoglu&#xff09;、西蒙约翰逊&#xff08;Simon Johnson&#xff09;和詹姆斯A罗宾逊&#xff08;James A. Robinson&#xff09;&#xff0c;以表彰他们在理解制度如何影响经济发展方面的贡献。&#xff08;“…

mysql学习教程,从入门到精通,sql序列使用(45)

sql序列使用 在SQL中&#xff0c;序列&#xff08;Sequence&#xff09;是一种数据库对象&#xff0c;用于生成唯一的数值&#xff0c;通常用于自动递增的主键。不同的数据库管理系统&#xff08;DBMS&#xff09;对序列的支持和语法可能有所不同。以下是一些常见的DBMS&#…