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

news2024/11/22 22:04:33

文章目录

  • 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;这种尖括号紧贴一起依稀记得编译没通过。

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

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

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

相关文章

Pytorch个人学习记录总结 06

目录 神经网络-卷积层 torch.nn.Conv2d 神经网络-最大池化的使用 torch.nn.MaxPool2d 神经网络-卷积层 torch.nn.Conv2d torch.nn.Conv2d的官方文档地址 CLASS torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue,…

TMS FNC Dashboard Pack Crack

TMS FNC Dashboard Pack Crack TTMSFNCWidgetProgress&#xff1a;循环进度指示器 TTMSFNCWidget设定值&#xff1a;带范围和设定值的值指示器 TTMSFNCWidgetMultiProgress&#xff1a;多个值的基于同心圆的进度指示器 TTMSFNCWidgetDistributionIndicator&#xff1a;各种模式…

【Kubernetes部署篇】ingress-nginx高可用架构实施部署

文章目录 一、环境说明二、实施过程1、部署Ingress Controller2、安装并配置Nginx3、安装并配置Keepalived3、测试keepalived主备切换 三、创建Ingress规则&#xff0c;测试七层转发 一、环境说明 1、环境说明&#xff1a; IP地址主机名称备注16.32.15.201node-1K8S节点16.32…

AMS358i和施耐德TM241 EtherNet 通信

产品、配件及工具型号 设备名称 型号 数量 激光测距 AMS358i 1 直流电源24VDC 1 连接电缆 KD U-M12-5A-V1-050 1 交换机 1 施耐德PLC TM241 1 AMS358i通信网线 KSS ET-M12-4A-RJ45-A-P7-020 1 网线 双向水晶头 2 电气连接图及说明 点击桌面的Somachi…

【NLP】使用 Keras 保存和加载深度学习模型

一、说明 训练深度学习模型是一个耗时的过程。您可以在训练期间和训练后保存模型进度。因此&#xff0c;您可以从上次中断的地方继续训练模型&#xff0c;并克服漫长的训练挑战。 在这篇博文中&#xff0c;我们将介绍如何保存模型并使用 Keras 逐步加载它。我们还将探索模型检查…

虹科活动 | 虹科ADAS自动驾驶研讨会

​​虹科ADAS/自动驾驶研讨会将于8月7日在上海闵行展开——加快ADAS/AD开发步伐&#xff01; 期待您的参与&#xff01;

Day45: 300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组

目录 300.最长递增子序列 思路 674. 最长连续递增序列 思路 718. 最长重复子数组 思路 300.最长递增子序列 300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 思路 1. 确定dp数组及其下标含义 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列…

【每日运维】判断服务器时间同步是否正常

对于 ntpd 服务 ntpq -premote&#xff1a;时间同步源的 IP 地址或域名refid&#xff1a;参考 ID&#xff0c;它是一个代表时间源的唯一标识符st&#xff1a;层级&#xff0c;表示时间同步源的层级关系。较低的层级意味着更接近原子钟的时间源t&#xff1a;状态&#xff0c;表…

uni-app:script中设置的data,在界面的显示(包含图片src为data中的数据该如何展示),以及控制台的输出

样式&#xff1a; 两个图标的区别&#xff1a; 第一个图标是图片文件直接在文件夹static中展示 前台代码展示&#xff1a; <image class"logo" src"/static/logo.png"></image> 第二个图标是从服务器端进行的引用 在script中的data中进行的设…

【C++修炼之路】stl 中的容器适配器

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录 一、stack二、queue三、deque四、priority_queue1、仿函数2、实现 如果无聊的话&#xff0c;就来逛逛 我的博客栈 吧! &#x1…

从新手到大师:优雅的Vim熟练之旅(万文详解)

从新手到大师&#xff1a;优雅的Vim熟练之旅 博主简介一、前言1.1、Vim编辑器的重要性和流行性1.2、目标 二、Vim简介2.1、什么是Vim2.2、历史和背景简介2.3、Vim的优势和适用场景 三、安装和设置Vim3.1、下载和安装Vim编辑器3.2、基本配置&#xff1a;.vimrc文件的重要性和常用…

Spinger ESE独立出版|2023年第二届能源与环境工程国际会议(CFEEE 2023)

会议简介 Brief Introduction 2023年第二届能源与环境工程国际会议(CFEEE 2023) 会议时间&#xff1a;2023年9月1日-3日 召开地点&#xff1a;中国三亚 大会官网&#xff1a;CFEEE 2023-2023 International Conference on Frontiers of Energy and Environment Engineering 由I…

leetcode 491. 递增子序列

2023.7.23 本题本质上也是要选取递归树中的满足条件的所有节点&#xff0c;而不是选取叶子节点。 故在将符合条件的path数组放入ans数组后&#xff0c;不要执行return。 还一点就是这个数组不是有序的&#xff0c;并且也不能将它有序化&#xff0c;所以这里的去重操作不能和之前…

MyBatis框架提供的分页助手插件pagehelper

使用MyBatis框架提供的分页助手插件可以很方便地实现分页查询。以下是一个基于MyBatis分页助手插件完成分页查询的示例&#xff1a; 1.首先&#xff0c;确保在项目的依赖中添加了MyBatis分页助手插件的依赖&#xff0c;例如&#xff1a; <dependency><groupId>co…

【C语言】getchar和putchar函数详解:字符输入输出的利器

目录 &#x1f4cc;getchar函数 ▪️ 函数原型&#xff1a; ▪️ 目的&#xff1a; ▪️ 返回值&#xff1a; ▪️ 用法&#xff1a; &#x1f4cc;putchar函数 ▪️ 函数原型&#xff1a; ▪️ 目的&#xff1a; ▪️ 参数&#xff1a; ▪️ 返回值&#xff1a; ▪…

20 QTreeWidget控件

代码&#xff1a; //treeWidget树控件//1&#xff1a;设置头部标签 QStringList()匿名对象创建ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");//2&#xff1a;设置itemQTreeWidgetItem * liItem new QTreeWidg…

刘铁猛C#教程笔记——操作符

C#语言中的操作符 表中位于同一行的操作符优先级相同&#xff0c;从上到下优先级依次减弱&#xff1b; 操作符的用法举例 成员访问运算符——“.”&#xff1a;用于访问类中的成员或者访问位于某个名空间中的类&#xff0c;如&#xff1a; using System; using System.Collec…

Unity进阶--fsm状态机的使用笔记

文章目录 Unity进阶--fsm状态机的使用笔记第一种用基础的if播放实现动画控制switch--case实现状态机使用状态机 Unity进阶–fsm状态机的使用笔记 第一种用基础的if播放实现动画控制 朴实无华&#xff0c;简单易懂&#xff0c;但是耦合性太差。 switch–case实现状态机 写对应…

【JAVA】云HIS系统功能菜单知识(二)

随着医疗信息化和互联网技术的不断发展&#xff0c;云HIS在大数据管理和应用的优势日益凸显。对于医疗机构而言&#xff0c;云HIS平台可以帮助其实现更高效的医疗服务管理&#xff0c;并提高医疗服务的整体水平和效率。 一、系统管理 1.医院信息 基本信息、法人代表、主要负责…

IntelliJ IDEA2023中利用maven-archetype-quickstart模板创建项目无src文件夹及maven插件下载过慢问题的解决

目录 介绍问题之解决问题2的解决问题1的解决 介绍 昨天下载并安装了IntelliJ IDEA 2023的最新版&#xff08;以下简称为IDEA 2023&#xff09;&#xff0c;学习利用该IDE编写Java项目及将其与maven结合构建项目。我所安装的maven是去年暑假安装的&#xff0c;版本为Apache Mav…