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

刷爆leetccode Day5

leetcode

  • 21. ⼭峰数组的峰顶(easy)
  • 22. 寻找峰值(medium)
  • 23. 搜索旋转排序数组中的最小值(medium)
  • 24. 0〜n-1中缺失的数字(easy)
  • 25. 【模板】⼀维前缀和(easy)

21. ⼭峰数组的峰顶(easy)

题目

class Solution {
public:
    int peakIndexInMountainArray(vector<int>& arr) {
     //端点是上升得来的
     //因此端点应该在左区间
     //左端点的左区间小于等于左端点
     //左端点的右区间大于左端点
     int left=0,right=arr.size()-1;
     while(left<right)
     {
        int mid=left+(right-left+1)/2;
        if(arr[mid]>=arr[mid-1])
        left=mid;
        else
        right=mid-1;
     }
     return right;   
    }
};

22. 寻找峰值(medium)

题目

class Solution {
public:
    int findPeakElement(vector<int>& nums) {
        int left=0,right=nums.size()-1;
        while(left<right)
        {
            int mid=left+(right-left+1)/2;
            if(nums[mid]>=nums[mid-1])
            left=mid;
            else right=mid-1;
        }
        return left;
    }
};

23. 搜索旋转排序数组中的最小值(medium)

题目

class Solution {
public:
    int findMin(vector<int>& nums) {
        int left=0,right=nums.size()-1,target=nums[nums.size()-1];
        while(left<right)
        {
            int mid=left+(right-left)/2;
            if(nums[mid]>target)
            left=mid+1;
            else
            right=mid;
        }
        return nums[right];
    }
};

24. 0〜n-1中缺失的数字(easy)

题目

class Solution {
public:
    int takeAttendance(vector<int>& records) {
        int left=0,right=records.size()-1;
        while(left<right)
        {
            int mid=left+(right-left)/2;
            if(records[mid]==mid)
            left=mid+1;
            else
            right=mid;
        }
        return records[right]==right?right+1:right;
    }
};

25. 【模板】⼀维前缀和(easy)

题目

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n,q;
    cin>>n>>q;
    vector<int>v(n+1,0);
    for(int i=1;i<n+1;i++)
    cin>>v[i];
    vector<long long>dp(n+1,0);//防止溢出
    for(int j=1;j<n+1;j++)
    dp[j]=dp[j-1]+v[j];//下标从1开始保证等式成立,数组大小应为n+1
    while(q--)
    {
        int l,r;
        cin>>l>>r;
        cout<<dp[r]-dp[l-1]<<endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

http://www.kler.cn/news/361041.html

相关文章:

  • linux介绍与基本指令
  • spring源码拓展点3之addBeanPostProcesser
  • impdp+remap_schema导入后登录报ORA-01017: Invalid Username/password
  • 【人工智能-初级】第6章 决策树和随机森林:浅显易懂的介绍及Python实践
  • [LeetCode 题3] 没有重复字符的最长的子字符串
  • typescript 中的类型推断
  • 7-1 大写字母转换为小写字母(C++;cin;cout)
  • 数据库表的创建
  • Spring配置/管理bean-IOC(控制反转) 非常详细!基于XML及其注解!案例分析! 建议复习收藏!
  • 开源图像超分ECBSR项目源码分析
  • L1练习-鸢尾花数据集处理(分类/聚类)
  • STM32CubeIDE(Eclipse)Post-build steps添加带参.exe实现全流程(2):带参调用.exe的几种方法
  • 搭建知识库 | 知识管理在汽车行业中的作用
  • 缓存框架JetCache源码解析-缓存变更通知机制
  • 建库建表练习
  • c语言 atoi 函数的功能和模拟实现
  • YOLO11改进 | 注意力机制 | 正确的 Self-Attention 与 CNN 融合范式,性能速度全面提升【独家创新】
  • 【LVGL快速入门(二)】LVGL开源框架入门教程之框架使用(UI界面设计)
  • 揭秘 Feign 调用机制:微服务通信的无缝集成
  • 信创服务器下搭建nfs共享存储方案
  • spring源码拓展点3之addBeanPostProcesser
  • MIT6.S081 LAB page tables (2024)
  • C++ 游戏开发:从基础到进阶
  • 2025秋招八股文--网络原理篇
  • React 基础阶段学习计划
  • 点云数据介绍