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

算法练习——力扣随笔【LeetCode】【C++】

文章目录

  • LeetCode 练习随笔
    • 力扣上的题目和 OJ题目相比不同之处?
    • 定义问题
    • 排序问题
    • 统计问题
    • 其他

在这里插入图片描述

LeetCode 练习随笔

做题环境 C++

中等题很值,收获挺多的

不会的题看题解,一道题卡1 h +,多来几道,时间上耗不起。

力扣上的题目和 OJ题目相比不同之处?

一开始上手力扣不习惯,OJ 的题目提交的是完整代码,力扣上的C++只提交目标函数代码,比如某个题目你只需要完成topKFrequent(nums,k)这个函数。

class Solution {vector<int> topKFrequent(vector<int>& nums, int k) {}
};

这也就意味着程序设计的输入不需要自己额外设计了,同时限制了你数据的输入和返回内容的格式。
多亏了oj许多来自力扣的题并补全了完整代码(目标函数部分空缺),渐渐习惯了编写目标函数的答题习惯。

定义问题

  • 在哪定义结构体

    有两个位置可写:

    1)类里面,讲究的话写在private中,这里就不讲究了。

    class Solution {
    public:struct node{int data;  };vector<int> topKFrequent(vector<int>& nums, int k) {}
    };
    

    2)顶部区域

     struct node{int data;  };class Solution {
    public:struct node{int data;  };vector<int> topKFrequent(vector<int>& nums, int k) {}
    };
    
  • 在哪定义全局变量

    1)顶部区域

    #include<algorithm>
    int a =3;
    class Solution {
    public:vector<int> topKFrequent(vector<int>& nums, int k) {vector<int>v;v.push_back(a);
    return v;}
    };
    

    2)换个方式,传参方式改为引用

    很多全局变量是可以被替代的,比如希望值被修改并返回到原来作用域,但返回值位置紧张。

    暴力时,全局变量开大数组还是有点用处的。

  • 在哪定义头文件

    一般是全面的,多虑了。

    下面这种做题区域顶部写头文件试过,编译通过。

    #include<algorithm>class Solution {
    public:vector<int> topKFrequent(vector<int>& nums, int k) {}
    };
    

排序问题

  • vector 存入结构体怎么自定义比较规则?

    1)自定义规则为结构体形式(优先队列也可用)

    class Solution
    {public:typedef struct node{int data;int sum;} ll;
    //    static bool cmp(ll a, ll b)
    //    {
    //        return a.sum > b.sum;
    //    }struct CompareBySumDesc{bool operator()( ll a,  ll b) {return a.sum > b.sum;}};vector<int> topKFrequent(vector <int> &nums,int k){vector<ll>v;//...//vector排序sort(v.begin(),v.end(),CompareBySumDesc());
    //        sort(v.begin(),v.end(),cmp);//...return res;}};
    

    2)自定义规则为静态函数(简单)

    class Solution
    {public:typedef struct node{int data;int sum;} ll;static bool cmp(ll a, ll b){return a.sum > b.sum;}//    struct CompareBySumDesc
    //    {
    //        bool operator()(const ll a, const ll b) const
    //        {
    //           return a.sum > b.sum;
    //        }
    //    };vector<int> topKFrequent(vector <int> &nums,int k){vector<ll>v;//...//vector排序
    //        sort(v.begin(),v.end(),CompareBySumDesc());sort(v.begin(),v.end(),cmp);//...return res;}};
    
  • vector 存入结构体怎么逆置?

    用 stack。

  • 存入结构体的 priority_queue 怎么自定义比较规则?

    给 ll 按照 sum 排序

    class Solution
    {
    public:typedef struct node{int data;int sum;} ll;//试过了,static 函数行不通,只能 struct cmp{bool operator()( ll a,  ll b){return a.sum > b.sum;}};void f(){priority_queue<ll, vector<ll>, cmp> pq;};
    int main()
    {Solution().f();return 0;
    }
    //默认降序//没有结构体,升序
    priority_queue <int,vector<int>,greater<int> > q;
    
  • 使用 priority_queue 实现堆排序?

    优先队列本身是堆实现的。只需维护好优先队列的容量 k,超过pop掉。

统计问题

map 统计的神。遍历别忘了迭代器初始化。

其他

  • 删除 vector 任意位置元素?

    vector<int>v;
    //删除 v[i]
    swap( v[i],v[v.size()-1]);
    v.pop_back();
    

    其实只是 v.size()减少,内存不释放。

     vector<int >v;v.push_back(11);v.push_back(22);v.push_back(33);v.pop_back();v.pop_back();v.pop_back();cout<<v.size()<<endl;v.push_back(44);cout<<v[0]<<endl;cout<<v[1]<<endl;cout<<v[2]<<endl;
    

    这里存入三个元素,之后全部删除,v.size() 结果是 0,是预期的结果,

    但此时通过下标访问v[0]~v[2],原来的值仍然可以访问到,删除时内存没有释放掉。

    之后再加入新的元素44,v[0] 内容被覆盖了。

  • vector<vector<int > >v;尖括号嵌套尽可能规范地隔开,

    priority_queue <int,vector<int>,greater<int>> pq;这种尖括号紧贴一起依稀记得编译没通过。

  • 连续子序列和问题,优先考虑滑动窗口。

相关文章:

算法练习——力扣随笔【LeetCode】【C++】

文章目录 LeetCode 练习随笔力扣上的题目和 OJ题目相比不同之处&#xff1f;定义问题排序问题统计问题其他 LeetCode 练习随笔 做题环境 C 中等题很值&#xff0c;收获挺多的 不会的题看题解&#xff0c;一道题卡1 h &#xff0c;多来几道&#xff0c;时间上耗不起。 力扣上的题…...

web服务器(Tomcat)

目录 一、web服务器 1. 常见web服务器 2. web服务器简介 二、 Apache Tomcat服务器 1. Tomcat服务器简介 2. Tomcat服务器基本使用 3. 启动tomcat常见问题 &#xff08;1&#xff09;启动tomcat控制台乱码 &#xff08;2&#xff09;启动tomcat闪退问题 &#xff08;…...

测试方案、功能测试报告、性能测试报告

测试方案内容概要&#xff1a; 项目内容介绍&#xff0c;测试计划安排&#xff08;人员时间&#xff09;&#xff0c;测试环境&#xff08;系统配置&#xff09;需求功能点&#xff08;内容介绍&#xff0c;测试安排&#xff09;&#xff0c;重点难点场景&#xff0c;系统集成…...

【代码随想录day21】二叉搜索树的最近公共祖先

题目 思路 解题的关键是知道自顶向低递归遍历&#xff0c;第一次遇到root在p和q的区间中时&#xff0c;则root就是p和q的最近公共祖先节点。 递归法 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val x # …...

ssm文章发布管理系统java小说作品发表jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 ssm文章发布管理系统 系统有2权限&#xff1a;前台账…...

AXI协议之AXILite开发设计(二)

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 二、AXI-Lite关键代码分析 1、时钟与…...

Qgis二次开发-QgsMapTool地图交互工具详解

1.简介 QgsMapTool地图工具是用于操作地图画布的用户交互式工具。例如&#xff0c;地图平移和缩放功能被实现为地图工具。 QgsMapTool是抽象基类&#xff0c;以下是类的继承关系&#xff1a; 2.常用接口 virtual void canvasDoubleClickEvent (QgsMapMouseEvent *e)重写鼠标…...

MySQL基础(四)数据库备份

目录 前言 一、概述 1.数据备份的重要性 2.造成数据丢失的原因 二、备份类型 &#xff08;一&#xff09;、物理与逻辑角度 1.物理备份 2.逻辑备份 &#xff08;二&#xff09;、数据库备份策略角度 1.完整备份 2.增量备份 三、常见的备份方法 四、备份&#xff08…...

子类化QThread来实现多线程,moveToThread函数的作用

子类化QThread来实现多线程&#xff0c; QThread只有run函数是在新线程里的&#xff0c;其他所有函数都在QThread生成的线程里。正确启动线程的方法是调用QThread::start()来启动。 一、步骤 子类化 QThread&#xff1b;重写run&#xff0c;将耗时的事件放到此函数执行&#…...

经典面试题(力扣,接雨水)

接雨水 方法一思路测试代码复杂度测试结果 方法二思路测试代码复杂度测试结果 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1]…...

2023年深圳杯数学建模C题无人机协同避障航迹规划

2023年深圳杯数学建模 C题 无人机协同避障航迹规划 原题再现&#xff1a; 平面上A、B两个无人机站分别位于半径为500 m的障碍圆两边直径的延长线上&#xff0c;A站距离圆心1 km&#xff0c;B站距离圆心3.5 km。两架无人机分别从A、B两站同时出发&#xff0c;以恒定速率10 m/s…...

PostgreSQL--实现数据库备份恢复详细教学

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;RodmaChen PostgreSQL--实现数据库备份恢复详细教学 一. 数据库备份二. 数据库恢复三. 存留问题 数据库备份恢复功能是每个产品所需的&#xff0c;以下是简单的脚本案例&a…...

JDK工具之jstack说明

JDK工具之jstack说明 前言什么是jstack&#xff1f;如何使用jstack&#xff1f;获取Java进程的PID分析jstack输出 常用的jstack命令选项jstack的应用场景结论 前言 作为Java开发人员&#xff0c;在开发和维护复杂的Java应用程序时&#xff0c;我们经常会遇到各种各样的问题&am…...

34 | 牛顿迭代法

文章目录 牛顿迭代法一、原理二、Python实现三、练习题四、总结牛顿迭代法 一、原理 牛顿迭代法(Newton’s Method)是一种用于寻找方程的实根的数值方法。其基本思想是通过一系列逼近来求解方程的根。对于方程 f ( x ) = 0 f(x) = 0 f(x...

ChatGPT如何帮助学生学习

​ 一些教育工作者担心学生可能使用ChatGPT作弊。因为这个AI工具能写报告和计算机代码&#xff0c;画出复杂图表……甚至已经有许多学校把ChatGPT屏蔽。 研究发现&#xff0c;学生作弊的主要原因是想考得好。是否作弊与作业和考试的打分方式有关&#xff0c;所以这与技术的便…...

easyexcel导出excel-50行代码搞定大量数据导出

文章目录 一、写在前面二、使用步骤定义导出的数据实体导出 一、写在前面 场景&#xff1a; 当数据量导出过大时如果一次从数据库取出所有数据会导致内存飙升导致系统奔溃&#xff0c;所以我们采取循环读取和循环写入。 准备: mave导入&#xff1a;easyexcel:3.0.5 二、使用…...

OpenAI宣布安卓版ChatGPT正式上线;一站式 LLM底层技术原理入门指南

&#x1f989; AI新闻 &#x1f680; OpenAI宣布安卓版ChatGPT正式上线 摘要&#xff1a;OpenAI今日宣布&#xff0c;安卓版ChatGPT已正式上线&#xff0c;目前美国、印度、孟加拉国和巴西四国的安卓用户已可在谷歌Play商店下载&#xff0c;并计划在下周拓展到更多地区。Chat…...

Rust vs Go:常用语法对比(二)

21. Swap values 交换变量a和b的值 a, b b, a package mainimport "fmt"func main() { a : 3 b : 10 a, b b, a fmt.Println(a) fmt.Println(b)} 103 fn main() { let a 3; let b 10; let (a, b) (b, a); println!("a: {a}, b: {b}", aa,…...

对于Vue3的一些思考

看完 Vue Hooks: 让Vue开发更简单与高效 - 掘金 一些小心得 vue3&#xff1a; 组合式API&#xff08;是利用架构&#xff0c;强制达到拆分目的&#xff09; 达到解耦的目的。对于vue3来说 每个模块的每个逻辑都是 一个一个独立的方法。通过 方法方法整体业务 代码风格&#…...

Bean的生命周期 - spring

前言 本篇介绍了Bean的生命周期&#xff0c;认识PostConstruct注释&#xff0c;PreDestroy注释&#xff0c;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1. spring生命周期2. Bean的生命周期3. 为什么先设置…...

无机布防火卷帘门报价透明,包工包料,一次说清所有费用

很多客户在选购无机布防火卷帘门时&#xff0c;最关心实际成交价格&#xff0c;也担心报价不清晰&#xff0c;后期产生各类额外支出。行业内产品定价参差不齐&#xff0c;选材做工不同&#xff0c;最终价位自然存在差距&#xff0c;挑选时不能只看表面低价。 &#x1f449; 点击…...

癫痫手术精准定位:基于脑电信号昼夜节律与多生物标志物的机器学习分析框架

1. 项目概述&#xff1a;当机器学习遇见脑电信号&#xff0c;如何让癫痫手术更精准&#xff1f;作为一名长期耕耘在生物医学信号处理与机器学习交叉领域的工程师&#xff0c;我常常思考如何将算法模型从实验室的“玩具”变成临床医生手中可靠的“手术刀”。癫痫&#xff0c;这个…...

PA100K数据集实战:从下载到结构化解析全流程

1. PA100K数据集初探&#xff1a;为什么选择它&#xff1f;如果你正在研究行人属性识别&#xff0c;PA100K绝对是个绕不开的宝藏数据集。这个数据集包含了10万张真实监控场景下的行人图像&#xff0c;每张图都标注了26种常见属性——从衣着风格&#xff08;比如是否穿T恤、裙子…...

第三幕 御酒掺土,江山为祭

金牌监制&#xff0c;您这一刀改得极其精准&#xff0c;直接把整部戏的格局从“江湖恩怨”拉升到了“家国博弈”的层面&#xff01;确实&#xff0c;如果只谈慈悲&#xff0c;唐三藏只是个高僧&#xff1b;但如果加上李世民的重托和大唐的国运&#xff0c;他就是一个背负着沉重…...

数组专项(一):数组排序、去重、查找

大家好,欢迎来到《算法面试60讲(2026最新版全真题带解析)》第19篇!上一篇我们彻底吃透了字符串专项的核心难点——BF暴力匹配与KMP高效匹配算法,搞定了字符串模块面试最难的算法考点。从本节课开始,我们正式进入算法面试第一高频模块:数组专项。 在算法面试中,数组是出…...

基于MAX78000的离线鸟类声音识别:边缘AI从数据到部署全流程解析

1. 项目概述&#xff1a;当边缘AI“听懂”鸟鸣在野外生态监测或自家后院观鸟时&#xff0c;你是否有过这样的经历&#xff1a;听到一阵清脆或婉转的鸟鸣&#xff0c;却完全不知道是哪位“歌唱家”在表演&#xff1f;传统的鸟类识别依赖专家经验和图鉴比对&#xff0c;不仅门槛高…...

深度解析:UI-TARS视觉语言模型驱动的自动化操作框架核心技术架构

深度解析&#xff1a;UI-TARS视觉语言模型驱动的自动化操作框架核心技术架构 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-…...

如何在5分钟内使用CrewAI Studio快速搭建AI工作流:零代码AI智能体开发终极指南

如何在5分钟内使用CrewAI Studio快速搭建AI工作流&#xff1a;零代码AI智能体开发终极指南 【免费下载链接】CrewAI-Studio A user-friendly, multi-platform GUI for managing and running CrewAI agents and tasks. Supports Conda and virtual environments, no coding need…...

Jetson Orin上TVA模型DLA精准卸载配置

重磅预告&#xff1a;本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容&#xff0c;该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著&#xff0c;特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...

告别Windows卡顿!在VMware里给Kubuntu 22.04 LTS分区和安装的保姆级避坑指南

告别Windows卡顿&#xff01;在VMware里给Kubuntu 22.04 LTS分区和安装的保姆级避坑指南你是否已经厌倦了Windows系统越来越慢的启动速度、频繁的后台更新和资源占用&#xff1f;当你的电脑开始频繁卡顿&#xff0c;或许该考虑给系统来一次"减负"了。Kubuntu 22.04 L…...