蓝桥杯算法日记|贪心、双指针

ops/2025/2/12 12:58:18/

3412 545 2928 2128

贪心学习总结:

1、一般经常用到sort(a,a+n);【a[n]】排序,可以给整数排,也可以给字符串按照字典序排序

2、每次选最优

 双指针

有序数组、字符串、二分查找、数字之和、反转字符串、回文数、颠倒二进制

对撞指针

一个是最左边,另一个是最右边,条件l<=r

回文#include <bits/stdc++.h>
using namespace std;
int main()
{// 请在此输入您的代码string s;cin>>s;int n=s.size();int l=0,r=n-1;while(l<=r){if(s[l]!=s[r]){cout<<"N"<<'\n';exit(0);}l++;r--;}cout<<"Y"<<'\n';return 0;
}

快慢指针

同一侧开始遍历序列,且一动的步长一个快一个慢【l,r】,两指针一不同的速度、不同策略移动,直到快指针移动到数组尾端、或者两指针相交,或者其他条件为止。

快指针移动策略,慢指针移动策略

for(慢指针移动策略){

while(快指针移动策略)

if{题目条件}结果;

其他补充;

}

#include <bits/stdc++.h>
using namespace std;
int main()
//{
//  // 请在此输入您的代码
//  int n,s;cin>>n>>s;
//  int a[n];
//  for(int i=0;i<n;i++){cin>>a[i];}
//  //输出美丽区间和》s并且越短越美丽
//  //区间问题,想到了前缀和
//  int sum[n];sum[0]=a[0];
//  for(int i=1;i<n;i++){
//    sum[i]=sum[i-1]+a[i];
//  }
//  for(int i=0;i<n;i++){
//    for(int j=i+1;j<n;j++){
//      if(i=0){if(sum[j]>s){cout<<j-i-1<<'\n';exit(0);}}
//      else{if(sum[j]-sum[i]>s){cout<<j-i-1<<'\n';exit(0);}}
//    }
//  }
//  return 0;
//}
//正确率对一个 ,最短的不一定先出现 
{
//随时更新最短长度 int n,s;cin>>n>>s;int a[n];for(int i=1;i<=n;i++){cin>>a[i];}int ans=n+1;for(int i=1,j=0,sum=0;i<=n;i++){//区间变大  while(j<i||(j<n&&sum<s)){sum=sum+a[++j];cout<<sum<<" ";} if(sum>=s)ans=min(ans,j-i+1);sum=sum-a[i];cout<<sum<<'\n'; //收缩左边界,保证i+1后,sum } cout<<ans<<'\n';return 0;
} 
#include <iostream>
using namespace std;
int main()
{// 请在此输入您的代码int n,m,k;cin>>n>>m>>k;int a[n];for(int i=1;i<=n;i++){cin>>a[i];}int sum=0,res=0;for(int i=1,r=0;i<=n;i++){//不满足条件,则移动快指针while(r<i||(sum<k&&r+1<=n)){sum=sum+(a[++r]>=m);}//满足条件if(sum>=k)res=res+1+n-r;sum=sum-(a[i]>=m);}cout<<res<<'\n';
//错误代码:// for(int i=1;i<=n;i++){//   for(int j=i;j<=n;j++){//     //至少有k个数是大于等于m//     if(a[j]>=m)sum++;//     if(sum=k){res=1+n-j;break;}//   }// }// cout<<res<<'\n';return 0;
}

今日打卡:

2.10
挑选字符串

https://www.lanqiao.cn/problems/1621/learning/
美丽的区间
https://www.lanqiao.cn/problems/1372/learning/
回文判定
https://www.lanqiao.cn/problems/1371/learning/


http://www.ppmy.cn/ops/157776.html

相关文章

基于Spring Boot的网上蛋糕售卖店管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

python基础入门:附录:常用第三方库推荐(NumPy、Django等)

Python常用第三方库全景指南&#xff1a;从基础到前沿工具集 一、数据科学核心套件 数值计算三剑客 # NumPy数组操作示例 import numpy as np arr np.arange(1, 10).reshape(3,3) print(arr arr.T) # 矩阵乘法# Pandas数据分析示例 import pandas as pd df pd.DataFrame…

Excel大数据量导入导出

github源码 地址&#xff08;更详细&#xff09; : https://github.com/alibaba/easyexcel 文档&#xff1a;读Excel&#xff08;文档已经迁移&#xff09; B 站视频 : https://www.bilibili.com/video/BV1Ff4y1U7Qc 一、JAVA解析EXCEL工具EasyExcel Java解析、生成Excel比较…

消费电子产品中的噪声对TPS54202的影响

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时&#xff0c;也能帮助其他需要参考的朋友。如有谬误&#xff0c;欢迎大家进行指正。 一、概述 在白色家电领域&#xff0c;降压转换器的应用非常广泛&#xff0c;为了实现不同的功能就需要不同的电源轨。TPS542…

Maven 下载与配置教程:附百度网盘地址

一、引言 在 Java 开发领域&#xff0c;Maven 是一款广泛使用的项目管理和构建工具。它能够帮助开发者自动化项目的构建、依赖管理和文档生成等任务&#xff0c;从而提高开发效率和项目质量。本文将详细介绍 Maven 的下载方法、安装步骤、配置教程以及使用技巧&#xff0c;并提…

XML 元素:结构化数据的基石

XML 元素&#xff1a;结构化数据的基石 引言 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言&#xff0c;它已经成为互联网上数据交换的事实标准。XML 元素是构成 XML 文档的基本单位&#xff0c;本文将深入探讨 XML 元素的定义、类型、属性以…

【蓝桥杯】大纲

1.算法类 1.1.枚举算法[1-3] 就是把所有可能的情况都一一列举出来,然后从中找到符合要求的答案。 比如从 1 到 100 找能被 5 整除的数,就一个一个试,这就是枚举。 1.2.排序算法 冒泡排序[2] 像气泡往上冒一样,每次比较相邻的两个数,如果顺序不对就交换,一趟一趟地…

前端工程化与构建工具详解

四、项目设计与架构 1. 设计模式 观察者模式 vs 发布订阅模式 观察者模式&#xff1a; 直接依赖&#xff1a;观察者直接订阅目标对象&#xff0c;目标对象维护观察者列表。适用场景&#xff1a;简单的一对多依赖关系&#xff08;如事件监听&#xff09;。示例&#xff1a;cla…