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

每日总结3.26

力扣刷题

1217.玩筹码(√)
(逻辑分析,把奇数位全移动到一个上面,偶数位全移到一个上面,不消耗。然后把其中较少的移到较多的上面)

1736.替换隐藏数字得到的最晚时间(√)
(贪心,我们可以从高位向低位枚举,在保证时间有效的情况下,使得每一位尽可能取最大值。)

1323. 6和9组成的最大数字(√)
(找到最高位上的6,转化为9)
{stoi():字符型转整形    to_string():整形转字符型}

11.  盛最多水的容器(正解:双指针)


暴力,超时:

int maxArea(int* height, int heightSize) {
    int a=0,num=0;
    for(int i=0;i<heightSize;i++)
    {
        for(int j=i+1;j<heightSize;j++)
        {
            int b=height[i]<height[j]?height[i]:height[j];
            num=b*(j-i);
            if(num>a)
            {
                a=num;
            }
        }
    }
    return a;
}

正解:双指针(指针指向首位两项,比较两项大小,将小项下标前移)


int maxArea(int* height, int heightSize) {
    int an=0;
    for(int i=0,j=heightSize-1;i<j&&i<heightSize&&j>0;)
    {
        int num=fmin(height[i],height[j])*(j-i);
        if(num>an)
        {
            an=num ;
        }
        if(height[i]>height[j])
        {
            j--;
        }
        else
        {
            i++;
        }
    }
    return an;
}


135.分发糖果

(两个条件,分两次遍历。
第一次,右孩子比左孩子大的情况: 
if(ratings[i]<ratings[j])  a[j]=a[i]+1;
第二次,左孩子比右孩子大的情况(从后先前遍历):
if(ratings[i]>ratings[j]){a[i]=fmax(a[i],a[j]+1);


int candy(int* ratings, int ratingsSize) {
    int a[100005]={1,};
    for(int i=0,j=i+1;i<ratingsSize&&j<ratingsSize;j++,i++)
    {
         if(ratings[i]<ratings[j])
            {            
                a[j]=a[i]+1;
            }
        }

        for(int i=ratingsSize-2,j=i+1;i>=0&&j>=0;i--,j--)
        {
            if(ratings[i]>ratings[j])
            {
                a[i]=fmax(a[i],a[j]+1);
            }
        }
        int num=0;
       for(int i=0;i<ratingsSize;i++)
       {
        num+=a[i];
       }
       return num;
    }

134.加油站

int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize) {
    int a=0,b=0,start=0;
    for(int i=0;i<gasSize;i++)
    {
        a+=gas[i]-cost[i];
        b+=gas[i]-cost[i];
        if(a<0)
        {
            start=i+1;
            a=0;
        }
    }
    if(b<0)
    {
        return -1;
    }
    else
    {
        return start;
    }
}


蓝桥刷题

1.
分巧克力(二分法)

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=100005;
struct Node{
  int x,y;
}p[N];
int n,k;
bool check(int m)
{
  int ans=0;
  for(int i=0;i<n;i++)
  {
    ans+=(p[i].x/m)*(p[i].y/m);
  }
  if(ans>=k)
  {
    return true;
  }
  else
  {
    return false;
  }
}
signed main()
{
  cin>>n>>k;
  for(int i=0;i<n;i++)
  {
    cin>>p[i].x>>p[i].y;
  }
  int l=1;int r=100005;
  int max=0;
//找到最长
  while(l<=r)
  {
    int mid=(l+r)/2;
    if(check(mid))
    {
        max=mid;
      l=mid+1;
    }
    else
    {
      r=mid-1;
    }
  }
  
  cout<<max;
  return 0;
}

 

 

http://www.dtcms.com/a/91871.html

相关文章:

  • 算法题(108):
  • IM腾讯Trtc与vod云点播:实现合流录制并上传,根据参数返回视频地址
  • JSON简介及C++中的JSON使用指南
  • LangChain4j(1):初识LangChain4j
  • 【Linux】POSIX信号量与基于环形队列的生产消费者模型
  • ADS 学习和培训资源 - Keysight ADS
  • Netty——TCP 粘包/拆包问题
  • 信息系统运行管理员教程1--信息系统运维概述
  • 人员进出新视界:视觉分析算法的力量
  • MySQL入门级操作
  • Ubuntu服务器中Swapper如何与虚拟内存配合
  • 【八股】未知宽高元素水平垂直居中的三种方法
  • CNN基础考点
  • 【C++ Linux编程进阶 从0实现muduo库系列】第五讲:实现C++日志库
  • system V 消息队列信息量(了解)
  • 基于MoE架构的AIGC引擎:海螺AI重新定义人机协同新范式
  • 青柠视频云支持808协议和1078协议,支持SIP信令日志追踪
  • C++ queue容器总结
  • Android系统的安全问题 - Linux的能力模型(Capability)和 SELinux 的区别
  • MarkLogic索引详解
  • C++20 中的std::c8rtomb和 std::mbrtoc8
  • LangChain开发(六)多模态输入与自定义输出
  • 国外计算机证书推荐(考证)(6 Sigma、AWS、APICS、IIA、Microsoft、Oracle、PMI、Red Hat)
  • Vue 把 Echarts 图传给后端:文件流信息方式传递
  • BFS专项练习 —— 蓝桥杯刷题
  • Java基础 3.26
  • uniapp主题切换功能,适配H5、小程序
  • PyCharm操作基础指南
  • 智能科技与美学融合,赵伟辰荣膺 2025 iF 设计大奖
  • Redis Stack 基础知识-构建现代实时数据平台