【c++日常刷题】两个数字的交集、点击消除、最小花费爬楼梯

两个数字的交集⭐

两个数组的交集_牛客题霸_牛客网 (nowcoder.com)

题目描述:

解题思路:

通过遍历num1,如果遍历到的元素如果在num2中能找到,则这是num1和num2的公告元素;

这里需要借助两个数组来实现:

代码:

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {int t=min(nums1.size(),nums2.size());vector<int>f;unordered_set<int>a;unordered_set<int>b(nums2.begin(),nums2.end());for(auto e:nums1){if(b.find(e)!=b.end()&&a.find(e)==a.end()){f.push_back(e);a.insert(e);}}return f;}
};

点击消除⭐⭐

点击消除_牛客题霸_牛客网 (nowcoder.com)

题目描述:

 解题思路:(两种)

第一种:

采用压栈,出栈的方法:

入栈前要判断一下要入栈的元素和栈顶元素是否一样,一样则栈顶元素出栈,否则该元素入栈;

代码:

#include <iostream>
using namespace std;int main() {string s;cin>>s;string a;for(auto e:s){if(a.empty()){a.push_back(e);}else if(a.back()==e){a.pop_back();}else{a.push_back(e);}}if(a.empty())cout<<'0'<<endl;else cout<<a<<endl;
}

第二种:

用迭代器来写,题目要求消除相邻的两个一样的,那么就依次遍历如果遍历到的元素和下一个元素一样,则删除这两个元素,注意:如果现在指向元素的前一个存在的话要把他给--;

代码:

#include <iostream>
using namespace std;int main() {string s;cin>>s;string::iterator it=s.begin();while(it!=s.end()){if(*it==*(it+1)){it=s.erase(it,it+2);}else if(*(it-1)&&*it==*(it-1)){it=s.erase(it-1,it+1);}else{it++;}}if(s.empty())cout<<'0'<<endl;elsecout<<s<<endl;
}

最小花费爬楼梯⭐⭐

最小花费爬楼梯_牛客题霸_牛客网 (nowcoder.com)

题目描述:

思路:

动态规划,到达第i个台阶的花费b[i]=min(b[i-1]+a[i-1],b[i-2]+a[i-2]);

代码:

#include <iostream>
using namespace std;int main() {int n;cin>>n;int a[n+1],b[n+1];for(int i=0;i<n;i++)cin>>a[i];b[0]=0,b[1]=0;for(int i=2;i<=n;i++){b[i]=min(b[i-1]+a[i-1],b[i-2]+a[i-2]);}cout<<b[n]<<endl;}

 数组中两个字符串的最小距离⭐⭐

数组中两个字符串的最小距离_牛客题霸_牛客网 (nowcoder.com)

题目描述:

思路:

模拟+贪心

代码:

#include <iostream>
#include<math.h>
using namespace std;int main() {int n;string str1, str2;cin >> n;cin>>str1>>str2;int pre1=-1,pre2=-1,ret=0X3f3f3f;string s;for(int i=0;i<n;i++){cin>>s;if(s==str1)pre1=i;else if(s==str2)pre2=i;if(pre1!=-1&&pre2!=-1){ret=min(ret,abs(pre1-pre2));}}if(pre1==-1||pre2==-1)cout<<"-1"<<endl;elsecout<<ret<<endl;}

简写单词⭐

简写单词_牛客题霸_牛客网 (nowcoder.com)

题目描述:

思路:

本题比较简单,主要是注意一下ASCII的大小写字母的转换:

a->97

A->65

代码:

#include <iostream>
using namespace std;int main() {string s;string a;while(cin>>a){if('A'<=a[0]&&a[0]<='Z')s+=a[0];else{s+=a[0]-32;}}cout<<s<<endl;
}

dd爱框框⭐⭐⭐

dd爱框框 (nowcoder.com)

题目描述:

思路:

滑动窗口:

代码:

#include<iostream>
using namespace std;
int n,x;
int main(){cin>>n>>x;int a[n];for(int i=0;i<n;i++){cin>>a[i];}int ret=0X3f3f3f;int l=-1,r=-1;int ll=0,rr=0;int sum=0;while(rr<n){sum+=a[rr];while(sum>=x){if(ret>(rr-ll+1)){ret=rr-ll+1;r=rr;l=ll;}sum-=a[ll];ll++;}rr++;}cout<<l+1<<" "<<r+1<<endl;
}

除2!⭐⭐⭐

除2! (nowcoder.com)

题目描述:

思路:

用优先队列(大堆),在放入数据后自动排序,sum记录数组总和;每次操作,从头遍历,如果是偶数把这个数/2,更新sum,不是的话,直接pop(),因为我们已经用sum记录数据总和,pop()后不会影响sum;

注意数据大小(long long);

代码:

#include<iostream>
#include<queue>
using namespace std;
int n,k;
int main(){cin>>n>>k;priority_queue<long long >q;long long sum=0;for(int i=0;i<n;i++){int a;cin>>a;q.push(a);sum+=a;}while(k--){for(int i=0;i<q.size();i++){if(q.top()%2==0){int t=q.top()/2;q.pop();q.push(t);sum-=t;break;}else{q.pop();}}}cout<<sum<<endl;
}

主持人调度一⭐⭐⭐

主持人调度(一)_牛客题霸_牛客网 (nowcoder.com)

题目描述:

思路:

本题主要就是二维数组的排序,sort可以直接排;

依[[33,38],[90,92],[87,88],[98,100],[20,32],[11,12],[45,57],[2,4],[63,71],[73,75],[95,96],[13,19]]样例为例;

排序后:

我们只需要判断每一行的第一个数是否大于上一行的第一个数;

如果都大于的话,则返回true;注意:这里要从第二行开始判断⭐

代码:

bool hostschedule(vector<vector<int> >& schedule) {sort(schedule.begin(),schedule.end());int t=schedule[0][1];for(int i=1;i<schedule.size();i++){if(schedule[i][0]<t){return false;}t=schedule[i][1];}return true;}

分割等和子集⭐⭐⭐⭐

分割等和子集_牛客题霸_牛客网 (nowcoder.com)

题目描述:

思路:本质就是01背包问题:第i个数取还是不取;

代码:

#include <iostream>
#include<cstring>
using namespace std;
const int N=505,M=505*110/2;
int n;
int a[N];
bool f[N][M];
int main() {cin>>n;int sum=0;for(int i=0;i<n;i++){cin>>a[i];sum+=a[i];}if(sum%2!=0){cout<<"false"<<endl;}else{sum/=2;f[0][0]=true;for(int i=1;i<n;i++){for(int j=0;j<=sum;j++){if(j<a[i]){f[i][j]=f[i-1][j];}else{f[i][j]=f[i-1][j]||f[i-1][j-a[i]];}}if(f[i][sum]){cout<<"true"<<endl;return 0;}}}
}

小红的ABC⭐⭐

小红的ABC (nowcoder.com)

题目描述:

思路:

依次遍历:分别判断即可;

注意:reserve的使用;头文件:<algorithm>

如:

string a;

reverse(a.begin(),a.end());  

代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;int main(){string s;cin>>s;int t=0X3f3f3f;for(int i=0;i<s.size();i++){string b;b+=s[i];for(int j=i+1;j<s.size();j++){b+=s[j];string c=b;reverse(b.begin(),b.end());// cout<<c<<" "<<b<<endl;if(c==b&&b.size()<t){t=b.size();break;}b=c;}}if(t==0X3f3f3f){cout<<"-1"<<endl;}else{ cout<<t<<endl;}
}

不相邻取数⭐⭐⭐

不相邻取数_牛客题霸_牛客网 (nowcoder.com)

题目描述:

思路:(打家劫舍dp)

对于不取的情况又要判断一下:第i-1的前一个是取还是不取------->可得dp方程;

代码:

#include <iostream>
using namespace std;int main() {int n;cin>>n;int a[n];for(int i=0;i<n;i++){cin>>a[i];}int f[n][2];f[0][0]=0;f[0][1]=a[0];for(int i=1;i<n;i++){f[i][1]=f[i-1][0]+a[i];f[i][0]=max(f[i-1][0],f[i-1][1]);}cout<<max(f[n-1][0],f[n-1][1]);}

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

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

相关文章

energy 发布 v2.4.5

更新内容 修复 energy cli install 命令安装开发环境 修复 动态库加载error未暴露 增加 JS ipc.on 监听模式&#xff0c;异步返回结果 修复 energy cli 不能强制退出问题 修复 MacOS 开发模式 debug 时不更新 helper 进程 优化 energy cli 在 MacOS 开发模式和安装包制作 link…

LeetCode 19. 删除链表的倒数第 N 个结点(java)

目录 题目描述: 代码: 第一种: 第二种: 题目描述: 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;h…

IMU应用于监测进食

最近&#xff0c;日本研究团队成功研发了一种创新的进食速度监测系统&#xff0c;巧妙融合IMU技术&#xff0c;旨在深入研究并有效评估个体在自由生活环境下的进食习惯。 实验中&#xff0c;科研团队把IMU传感器固定在受试者佩戴的腕带中&#xff0c;以监测并记录进食手腕时的运…

WSL开发--利用Git连接远程仓库(详细步骤)

这篇文章主要介绍了如何将本地项目推送到 GitLab 上&#xff0c;并且避免每次提交都需要输入用户名和密码。文中分步讲解了配置 GitLab SSH 密钥以及配置 Git 远程仓库地址的方法。以下是文章的优化和简洁版&#xff1a; 将本地项目推送到 GitLab 并配置 SSH 免密登录 为了方便…

LeetCode100之盛最多水的容器(11)--Java

1.问题描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量 注意 你不能倾斜容器 示例1 输入&…

算法实现 - 快速排序(Quick Sort) - 理解版

文章目录 算法介绍算法分析核心思想三个版本运行过程挖坑法Hoare 原版前后指针法 算法稳定性和复杂度稳定性时间复杂度平均情况O(nlogn)最差情况O( n 2 n^2 n2) 空间复杂度 算法介绍 快速排序是一种高效的排序算法&#xff0c;由英国计算机科学家C. A. R. Hoare在1960年提出&a…

设备搜索相关协议使用

一、实现原理 首先&#xff0c;Client -> Gateway : 发送 UDP 广播包&#xff08;含厂商自定义协议)这一步表示客户端开始向网络中发送一个包含厂商自定义协议的 UDP 广播包&#xff0c;目的是寻找本厂商的设备&#xff08;网关&#xff09;。客户端此时处于活动状态activa…

视频去水印怎么办?两种方法教会你

视频有水印的话确实很恼火&#xff0c;想要干净的去除视频水印&#xff0c;这里分享两种简单又实用的方法。 方法一&#xff1a;美图秀秀 大家都熟悉的修图神器&#xff0c;功能超全。不仅能把照片P得美美哒&#xff0c;还能去掉照片和视频上的水印呢&#xff01;用起来挺顺手…

【案例】旗帜飘动

开发平台&#xff1a;Unity 6.0 开发工具&#xff1a;Shader Graph 参考视频&#xff1a;Unity Shader Graph 旗帜飘动特效   一、效果图 二、Shader Graph 路线图 三、案例分析 核心思路&#xff1a;顶点偏移计算 与 顶点偏移忽略 3.1 纹理偏移 视觉上让旗帜保持动态飘动&a…

PHP合成图片,生成海报图,poster-editor使用说明

之前写过一篇使用Grafika插件生成海报图的文章&#xff0c;但是当我再次使用时&#xff0c;却发生了错误&#xff0c;回看Grafika文档&#xff0c;发现很久没更新了&#xff0c;不兼容新版的GD&#xff0c;所以改用了intervention/image插件来生成海报图。 但是后来需要对海报…

智慧汇聚:十款企业培训工具打造学习型企业

在当今快速变化的商业环境中&#xff0c;企业要想保持竞争力&#xff0c;就必须不断适应新技术、新市场和新的工作方式。构建一个学习型企业&#xff0c;不仅能够促进员工的个人成长&#xff0c;还能增强团队的整体能力和企业的创新能力。为了实现这一目标&#xff0c;借助先进…

「C/C++」C/C++标准库 之 #include<cstdlib> 通用工具函数库

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

pycharm调用方法时显示为灰色

不用担心&#xff0c;亮的证明是被用过得&#xff0c;灰色的没有被用&#xff0c;引用一下就会变正常了

机器学习:我们能用机器学习来建立投资模型吗

机器学习模型能解决什么投资问题&#xff1f; 利用机器学习解决投资问题的思路&#xff0c;其实和在互联网领域解决推荐、广告问题的思路是一样的&#xff0c;只不过利用的特征完全变了。推荐、广告模型利用的是用户的年龄、性别&#xff0c;物品的类别、价格等特征&#xff0c…

ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力

新版本发布 ClkLog在上线近1年后&#xff0c;获得了客户的一致肯定与好评&#xff0c;并收到了不少客户对功能需求的反馈。根据客户的反馈&#xff0c;我们在今年三季度对ClkLog的版本进行了重新的规划与调整&#xff0c;简化了原有的版本类型&#xff0c;方便客户进行选择。 与…

【Java设计模式】16-26章

行为型模式&#xff1a; 第16章 12模板方法模式(Template) 16.1 豆浆制作问题 16.2 模板方法模式基本介绍 16.3 模板方法模式原理类图 16.4 模板方法模式解决豆浆制作问题 package com.atguigu.template;//抽象类&#xff0c;表示豆浆 public abstract class SoyaMilk {//模板…

上市公司环境信息披露质量评分数据王婉菁版(2008-2023年)噪声光污染辐射废水减排等治理

数据来源基础数据来源于上市公司年报、社会责任报告、环境报告以及证监会和统计局。时间跨度2008-2023区域跨度企业及行业层面 核心解释变量&#xff1a;环境信息披露质量&#xff0c;是由上市公司环境管理、负债、业绩于治理、披露载体等各项信息披露质量评分加总。 被解释变…

Llama 3.2 Vision Molmo:多模态开源生态系统基础

编者按&#xff1a; 视觉功能的融入对模型能力和推理方式的影响如何&#xff1f;当我们需要一个既能看懂图像、又能生成文本的 AI 助手时&#xff0c;是否只能依赖于 GPT-4V 这样的闭源解决方案&#xff1f; 我们今天为大家分享的这篇文章&#xff0c;作者的核心观点是&#xf…

el-table 滚动条重置 手动控制滚动条

最近在使用 el-table 的时候&#xff0c;出现一个问题&#xff1a; 表头过长的时候&#xff0c;会有左右滑动的操作&#xff0c;当我们把表格拉到最右侧&#xff0c;这个时候重新请求数据的话&#xff0c;表格位置还是在最右侧&#xff0c;不会恢复原位。 那我们想恢复原位&a…

Windows的MySQL开机自动启动问题

标题 问题描述 问题描述 在Windows系统中&#xff0c;我设置好了MySQL服务为自动启动&#xff0c;但在开机后发现MySQL服务任没有自动运行。我有点苦恼&#xff0c;每次连接MySQL&#xff0c;都要进入计算机管理&#xff0c;手动打开。 解决方法&#xff1a; 1.前提安装好MySQ…