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

leetcode究极刷题笔记(11~15)

(11)盛最多水的容器(中等)

实现思路:
定义两个指针(a,b),分别指向数组的前后位置,如果此时a的值小于b的话,就将a右移一位,如果此时b指向的值小于a的话,就将b向左边移动一位。

具体实现代码如下:

class Solution {
public:int maxArea(vector<int>& height) {int res=0;for(int i=0,j=height.size()-1;i<j;){res=max(res,min(height[i],height[j])*(j-i));if(height[i]<height[j]) i++;else j--;}return res;}};

(12)整数转化罗马数字(中等)

实现思路:
此题就是一个模拟实现,我们将对应的每一种特殊情况拿出来进行对比参照,将数字以此减少并加上对应的罗马数字即可解决本题

具体代码如下:

class Solution {
public:string intToRoman(int num) {int values[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};string reps[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};string res;for(int i=0;i<=12;i++){while(num>=values[i]){num-=values[i];res+=reps[i];}}return res;}
};

(13)罗马数字转整数(简单)

实现思路:
与上题类似,具体看代码即可

代码实现如下:

class Solution {
public:int romanToInt(string s) {unordered_map<char,int> count;count['I']=1,count['V']=5;count['X']=10,count['L']=50;count['C']=100,count['D']=500;count['M']=1000;int res=0;for(int i=0;i<s.size();i++){if(i+1<s.size() && count[s[i]]<count[s[i+1]]){res-=count[s[i]];}else{res+=count[s[i]];}}return res;}
};

(14)最长公共前缀(简单)

实现思路:
本题实现比较简单,具体看代码即可。

代码实现如下:

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {string res;if(strs.empty()) return res;for(int i=0;;i++){if(i>=strs[0].size()) return res;//对应的就是最后的结束条件char c=strs[0][i];for(auto& str:strs){if(str.size()<=i || str[i]!=c){return res;}}res+=c;}return res;}
};

(15)三数之和(中等)

实现思路:
主要的思路就是利用双指针算法,首先我们先排序,因为有序是双指针算法的必要条件,之后我们定义三个指针,确定其中一个i,然后让j与k进行遍历查找三者和为0的组合,如果此时i,j,k各自前后互相相同的话,直接跳过即可。

具体实现代码如下:

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(),nums.end());vector<vector<int>> res;for(int i=0;i<nums.size();i++){if(i && nums[i]==nums[i-1])continue;//continue函数的意思就是下面的带啊吗不进行,但是整体的循环并未停止,相当于循环了一次但是不做任何事for(int j=i+1,k=nums.size()-1;j<k;j++){if(j>i+1 && nums[j]==nums[j-1]) continue;while(j<k-1 && nums[i]+nums[j]+nums[k-1]>=0) k--;if(nums[i]+nums[j]+nums[k]==0){res.push_back({nums[i],nums[j],nums[k]});}}}return res;}
};

希望以上文章对您有帮助!!!
 

http://www.lryc.cn/news/42525.html

相关文章:

  • 【C语言】一篇带你从零了解 枚举
  • 用Pytorch搭建一个房价预测模型
  • 《Netty》从零开始学netty源码(十五)之ServerSocketChannel
  • Java stream性能比较
  • 【数据结构与算法】设计循环队列
  • 最新版!国内IT软件外包公司汇总~
  • MySQL的COUNT语句,竟然都能被面试官虐的这么惨!?
  • 数位DP 详解及其案例实战 [模板+技巧+案例]
  • 并发编程(六)—AbstractExecutorService源码分析
  • 015行为型-职责链模式
  • python例程:五子棋(控制台版)程序
  • leveldb的Compaction线程
  • 邪恶的想法冒出,立马启动python实现美女通通下
  • 蓝桥杯刷题冲刺 | 倒计时18天
  • 经典算法面试题——Java篇-附带赠书活动,评论区随机选取一人赠书
  • 支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了
  • 【C语言进阶】 12. 假期测评①
  • 给程序加个进度条吧,1行Python代码,快速添加~
  • 常见的Keil5编译报错及其原因和解决方法
  • Django 实现瀑布流
  • 传输层协议----UDP/TCP
  • 教你如何快速在Linux中找到某个目录中最大的文件
  • Java二叉树面试题讲解
  • rancher2.6进阶之nfs动态创建pv配置
  • 快速上手vue elementUI好看的登录界面
  • Vue趣味【Vue3+Element Plus+Canvas实现一个简易画板;支持导出为图片】
  • 【Spring Cloud Alibaba】2.服务注册与发现(Nacos安装)
  • 深度学习 Day28——利用Pytorch实现好莱坞明星识别
  • Android中使用FCM进行消息推送
  • 从 X 入门Pytorch——BN、LN、IN、GN 四种归一化层的代码使用和原理