2024年刷题记录
马上要开始找实习了,又开始重启刷题计划了!加油冲冲冲!刷题的顺序follow代码随想录的60天刷题计划!感谢FuCosmo的总结!之前都是按照C++的语法进行刷题的,这次也同样使用C++。
Day 1 数组
这些题过年前都刷过了,所以过的快一些。通过写一些题解的方式来,帮助自己回顾这些方法,记住一些核心点。
704. 二分查找
- 训练是否取等号,这里选择的是双边都闭合的空间
- 对于mid的计算方式,有两种mid = (left + right) / 2或者是mid = left + (left - right) / 2
class Solution {
public:int search(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;int mid;while (left <= right) {mid = (left + right) / 2;if (nums[mid] == target){return mid;} else if (nums[mid] < target){left = mid + 1;} else {right = mid - 1;}}return -1;}
};
27. 移除元素
- 双指针的思想
- 一个指针用来遍历数组中的所以元素(指向当前将要处理的元素)
- 一个指针用来记录下一个将要赋值的位置
class Solution {
public:int removeElement(vector<int>& nums, int val) {int i = 0;int j = 0;while (i < nums.size()) {if (nums[i] != val) {nums[j] = nums[i];j++;}i++;}return j;}
};
977. 有序数组的平方
- 暴力的解放,利用sort函数
- 基本的语法
- vector的创建
vector<int> ans;vector<int> ans(n);
- vector中添加元素
ans.push_back(num);
- vector的排序
sort(ans.begin(), ans.end());
- vector的创建
- 时间复杂度是 O(nlogn),其中 n 是数组 nums的长度。
- 空间复杂度是 O(logn),除了存储答案的数组以外,我们需要 O(logn) 的栈空间进行排序
- 基本的语法
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int i = 0;vector<int> ans;while (i < nums.size()){ans.push_back(nums[i] * nums[i]);i++;}sort(ans.begin(), ans.end());return ans;}
};
- 双指针的解法
- 非递减数组,元素当中存在负数
- 第一个指针指向找到第一个大于等于0的元素
- 如果第一个指针为0,则不需要第二个指针
- 反之,第二个指针指向第一个元素左侧的元素
- 比较左右指针两个元素的大小,逐个加入
- 这里需要用到三个循环
- 同时移动两个指针
- 当一个指针已经移动完,则只移动单侧的指针
- 时间复杂度是O(n)。其中 n 是数组 nums 的长度。
- 空间复杂度是O(1)。除了存储答案的数组以外,我们只需要维护常量空间。
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int i = 0;vector<int> ans;for (int num : nums) {if (num < 0) {i++;} else {break;}}if (i == 0) {for (int num : nums) {ans.push_back(num * num);}return ans;} else {int j = i - 1;while (i < nums.size() && j >= 0) {if (nums[i] * nums[i] < nums[j] * nums[j]) {ans.push_back(nums[i] * nums[i]);i++;} else {ans.push_back(nums[j] * nums[j]);j--;}}while (i < nums.size()) {ans.push_back(nums[i] * nums[i]);i++;}while (j >= 0){ans.push_back(nums[j] * nums[j]);j--;}}return ans;}
- 双指针的解法二
- 一个指针指向第一个元素
- 另一个指针指向最后一个元素
- 从后往前加元素
- 时间复杂度是O(n)。其中 n 是数组 nums 的长度。
- 空间复杂度是O(1)。除了存储答案的数组以外,我们只需要维护常量空间。
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int n = nums.size();vector<int> ans(n);for (int i = 0, j = n - 1, pos = n - 1; i <= j; pos--) {if (nums[i] * nums[i] > nums[j] * nums[j]) {ans[pos] = nums[i] * nums[i];i++;} else {ans[pos] = nums[j] * nums[j];j--;}}return ans;}
};
Day 2
🚩209.长度最小的子数组
- 双指针的思想
- 左右两个指针,当当前区间内的值小于target,则移动右指针;反之移动左指针
- 区间是左闭右开的
- 利用cnt来记录最短的长度;(right - left + 1)
- 这道题感觉是滑动窗口的思想
- 基本语法知识
- 三目运算符:
条件表达式?True : False - INT的最大值:
int ans = INT_MAX
- 三目运算符:
// 有点冗余的写法
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int left = 0;int right = left + 1;int cnt = nums[0];int n = nums.size();int minlength = n + 1;while(right < n) {if (cnt < target) {cnt += nums[right];right++;} else if (cnt >= target) {if ((right - left) < minlength) {minlength = right - left;}cnt -= nums[left];left++;}}// 当right已经走到最右端了,但cnt依旧大于0while(left < n) {if (cnt >= target) {if ((right - left) < minlength) {minlength = right - left;}cnt -= nums[left];left++;} else {break;}}return (minlength > n) ? 0 : minlength;}
};
// 看完题解后的优化代码
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int left = 0;int right = 0;int cnt = 0;int n = nums.size();int minlength = n + 1;while(right < n) {cnt += nums[right];while (cnt >= target) {minlength = min(minlength, right - left + 1);cnt -= nums[left];left++;}right++;}return (minlength > n) ? 0 : minlength;}
};
- 时间复杂度为:O(n)
- 空间复杂度为:O(1)
Day 3 栈与队列
239. 滑动窗口最大值
- 用一个队列来存储当前窗口内的元素,对队列中的元素进行排序,取出最大值
347.前K个高频元素
- 使用字典,key为对应的元素,value为对应的出现次数;遍历整个数组,然后按照value进行排序,然后输出前K个结果;
- 思想是上述的思想;但是如何根据value排序是一个难点
- 这里用到了堆的思想,也就是优先队列的思想
- 基本语法:
- priority_queue的基本函数:
push(), pop(), top(), empty(), size(); - 默认为大根堆
- 如果想要小元素放在队首,则可以使用以下的方式
priority_queue<int,vector<int>,greater<int>>q - C++11中的STL 可以使用
emplace()与emplace_back()来代替insert()与push_back()
- priority_queue的基本函数:
class Solution {public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int,int> ans;for (int num : nums) {ans[num]++;}// 排序priority_queue<pair<int, int>> q;for (auto item : ans) {q.emplace(item.second, item.first);}//求解vector<int> res;while(k) {res.emplace_back(q.top().second);q.pop();--k;}return res;}
};
相关文章:
2024年刷题记录
马上要开始找实习了,又开始重启刷题计划了!加油冲冲冲!刷题的顺序follow代码随想录的60天刷题计划!感谢FuCosmo的总结!之前都是按照C的语法进行刷题的,这次也同样使用C。 Day 1 数组 这些题过年前都刷过了…...
【JGit 】简述及学习资料整理
JGit 介绍 [官网](JGit | The Eclipse Foundation): https://www.eclipse.org/jgit/ 用户指南 : https://github.com/eclipse-jgit/jgit/wiki/User-Guide JGit是一个用于Java编程语言的开源Git实现。它提供了一组Java库和API,使开发人员可以在他们的Java应用程序…...
python数据类型-集合set
1 集合(set)的定义 1.1 集合是一个无序且不重复元素的序列: 1)无序:存储顺序和添加的顺序不一定相同,不支持索引、切片 2)元素不重复:当添加重复元素时,集合会自动去重…...
excel如何指定求和
在Excel中,你可以使用函数来实现动态求和,使得当指定行的数值更新后,和也随之更新。具体来说,你可以使用SUM函数结合一些动态的引用方法。以下是一种实现方式: 假设你要对A列(从A1到A10,以示例…...
服务端实时推送技术之SSE(Server-Send Events)
文章目录 前言一、解决方案:1、传统实时处理方案:2、HTML5 标准引入的实时处理方案:3、第三方推送: 二、SSE1.引入库1、客户端: 2.服务端:三、业务实践:能否做到精准投递? 总结 前言…...
使用IntelliJ IDEA查看接口的全部实现方法
在大型Java项目中,经常会使用接口和抽象类进行代码设计。为了更好地了解代码结构和功能,我们需要快速查看一个接口的所有实现类。IntelliJ IDEA提供了一些方便的方法来实现这一目标。 1. 点击查看接口的实现子类 在IDEA中,你可以轻松地查看…...
阿里云幻兽帕鲁服务器操作系统类型怎么选择?
使用阿里云服务器搭建幻兽帕鲁操作系统类型选Windows还是Linux?如果对Linux熟悉就选择Linux,相对于windows,Linux更少占用系统资源;如果对Linux不熟悉,首选Windows。事实上,阿里云提供的幻兽帕鲁服务器通过…...
Codeforces Round 927 (Div. 3) LR-remainders的题解
原题描述: C.LR-remains 每次测试时限:2 秒 每次测试的内存限制:256 兆字节 输入:标准输入 输出:标准输出 样例1输入: 4 4 6 3 1 4 2 LRRL 5 1 1 1 1 1 1 LLLLL 6 8 1 2 3 4 5 6 RLLLRR 1 10000 1000…...
HarmonyOS—@Observed装饰器和@ObjectLink嵌套类对象属性变化
Observed装饰器和ObjectLink装饰器:嵌套类对象属性变化 概述 ObjectLink和Observed类装饰器用于在涉及嵌套对象或数组的场景中进行双向数据同步: 被Observed装饰的类,可以被观察到属性的变化;子组件中ObjectLink装饰器装饰的状…...
The method toList() is undefined for the type Stream
The method toList() is undefined for the type Stream (JDK16) default List<T> toList() { return (List<T>) Collections.unmodifiableList(new ArrayList<>(Arrays.asList(this.toArray()))); }...
vue+element (el-progress)标签 隐藏百分比(%) ,反向显示 ,自定义颜色, demo 复制粘贴拿去用
1 效果: 2 页面代码: <el-row :gutter"10" ><el-col :span"12"><el-card ><div class"fourqu"><div><span slot"title">{{推送任务TOP5}}</span></div></div><div class&…...
Android轻量级进程间通信Messenger源码分析
一. 概述 Android中比较有代表性的两大通信机制:1. 线程间Handler通信 2. 进程间Binder通信,本篇文章中我们在理解AIDL原理的基础上来解读一下Messenger的源代码, 并结合示例Demo加深理解。 在看本篇文章前,建议先查阅一下笔者的…...
C#开发AGV地图编辑软件
C#自己开发AGV地图编辑软件: 1、自由添加和删除站点、停车位、小车、运行路径。 2、编辑得地图以XML文件保存。 3、导入编辑好地图的XML文件。 4、程序都是源码,可以直接在此基础上进行二次开发。 下载链接:https://download.csdn.net/d…...
嵌入式学习day22 Linux
文件IO: 1. lseek off_t lseek(int fd, off_t offset, int whence); 功能: 重新设定文件描述符的偏移量 参数: fd:文件描述符 offset:偏移量 whence: SEEK_SET 文件开头 …...
不确定性问题的论文笔记
Statistics starting from 01/2024, 仅列出了优秀工作中的一部分 每一年的排列顺序: CVPR, ICLR, ECCV, ICCV, ICML, AAAI, TPAMI,TIP,Arxiv 等 每周更新 2024 论文信息速览笔记是 否 已精读精读笔记Shao W, Xu Y, Peng L, et al. Failure Detection fo…...
C语言推荐书籍
本书详细讲解了C语言的基本概念和编程技巧。全书共17章。第1章、第2章介绍了C语言编程的预备知识。第3章~第15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串…...
基于uniapp微信小程序的汽车租赁预约系统
随着现代汽车租赁管理的快速发展,可以说汽车租赁管理已经逐渐成为现代汽车租赁管理过程中最为重要的部分之一。但是一直以来我国传统的汽车租赁管理并没有建立一套完善的行之有效的汽车租赁管理系统,传统的汽车租赁管理已经无法适应高速发展,…...
ClickHouse 基础(一)
官网 ClickHouse release 24.1, 2024-01-30 以毫秒为单位查询数十亿行 ClickHouse是用于实时应用和分析的最快、资源效率最高的开源数据库。 安装ClickHouse 使用ClickHouse,你有三个选择: ClickHouse云:官方ClickHouse作为一项服务,-由ClickHouse的创…...
07-k8s中secret资源02-玩转secret
一、回顾secret资源的简单实用 第一步:将想要的数据信息【key:value】中的value值,使用base64编码后,写入secret资源清单中; 第二步:创建secret资源; 第三步:pod资源引用secret资源&…...
HTTP特性
大家好我是苏麟 , 今天说说HTTP特性. 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 到目前为止,HTTP 常见到版本有 HTTP/1.1,HTTP/2.0,HTTP/3.0,不同版本的 HTTP 特性是不一样的。 这里先用 HTTP/1.1 版本给大家介…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
