C/C++每日一练(20230515) 区间和的个数、BST最近公共祖先、最接近元素

news2024/11/24 14:04:05

目录

1. 区间和的个数  🌟🌟🌟

2. 二叉搜索树的最近公共祖先  🌟

3. 找最接近元素  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 区间和的个数

给你一个整数数组 nums 以及两个整数 lower 和 upper 。求数组中,值位于范围 [lower, upper] (包含 lower 和 upper)之内的 区间和的个数 。

区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。

示例 1:

输入:nums = [-2,5,-1], lower = -2, upper = 2
输出:3
解释:存在三个区间:[0,0]、[2,2] 和 [0,2] ,对应的区间和分别是:-2 、-1 、2 。

示例 2:

输入:nums = [0], lower = 0, upper = 0
输出:1

提示:

  • 1 <= nums.length <= 10^5
  • -2^31 <= nums[i] <= 2^31 - 1
  • -10^5 <= lower <= upper <= 10^5
  • 题目数据保证答案是一个 32 位 的整数

出处:

https://edu.csdn.net/practice/27859951

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    int countRangeSum(vector<int> &nums, int lower, int upper)
    {
        int n = nums.size();
        long presum = 0;
        multiset<long> S;
        S.insert(0);
        int ret = 0;
        for (int i = 0; i < n; i++)
        {
            presum += nums[i];
            ret += distance(S.lower_bound(presum - upper), S.upper_bound(presum - lower));
            S.insert(presum);
        }
        return ret;
    }
};

输出:


2. 二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

例如,给定如下二叉搜索树:  root = [6,2,8,0,4,7,9,null,null,3,5]

示例 1:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6 
解释: 节点 2 和节点 8 的最近公共祖先是 6。

示例 2:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出: 2
解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。

说明:

  • 所有节点的值都是唯一的。
  • p、q 为不同节点且均存在于给定的二叉搜索树中。

出处:

https://edu.csdn.net/practice/27859952

代码:

#include <bits/stdc++.h>
using namespace std;
struct TreeNode
{
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution
{
public:
    TreeNode *lowestCommonAncestor(TreeNode *root, TreeNode *p, TreeNode *q)
    {
        if (root == NULL)
            return NULL;
        if ((root->val > q->val) && (root->val > p->val))
            return lowestCommonAncestor(root->left, p, q);
        else if ((root->val < q->val) && (root->val < p->val))
            return lowestCommonAncestor(root->right, p, q);
        return root;
    }
};

输出:


3. 找最接近元素

目标值与数组所有元素去比对,找出最接近的元素,输出下标。

举例如下:一个数组{915,941,960,976,992,1015,1034,1050,1073,1089,1115,1131,1150,1166,1182,1208,1227};目标值假设是1000,最接近元素为992,下标为4

以下程序实现了这一功能,请你填补空白处内容:

```c++
#include <stdio.h>
int main()
{
    int min = (1 << 31) - 1;
    int idx = 0;
    int arr[] = {915, 941, 960, 976, 992, 1015, 1034, 1050, 1073, 1089, 1115, 1131, 1150, 1166, 1182, 1208, 1227};
    int n = 1000;
    for (int i = 0; i < sizeof(arr) / sizeof(int); i++)
    {
        int diff = arr[i] - n;
        if (diff < 0)
            diff = -diff;
        _________________;
    }
    printf("最接近的是%d 下标是%d", arr[idx], idx);
    return 0;
}
```

出处:

https://edu.csdn.net/practice/27859953

代码:

#include <stdio.h>
int main()
{
    int min = (1 << 31) - 1;
    int idx = 0;
    int arr[] = {915, 941, 960, 976, 992, 1015, 1034, 1050, 1073, 1089, 1115, 1131, 1150, 1166, 1182, 1208, 1227};
    int n = 1000;
    for (int i = 0; i < sizeof(arr) / sizeof(int); i++)
    {
        int diff = arr[i] - n;
        if (diff < 0)
            diff = -diff;
        if (diff < min)
        {
            min = diff;
            idx = i;
        }
    }
    printf("最接近的是%d 下标是%d", arr[idx], idx);
    return 0;
}

输出:


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端路由、vue-router常见用法、路由重定向、动态路由匹配、声明式导航 编程式导航 、导航守卫

前端路由、vue-router常见用法、路由重定向、动态路由匹配、声明式导航 & 编程式导航 、导航守卫 前端路由的概念与原理前端路由 vue-router 的基本使用vue-router 的常见用法路由重定向动态路由匹配声明式导航 & 编程式导航导航守卫 后台管理案例 前端路由的概念与原理…

mysqld之mha高可用

1.MHA的相关知识 1.1 什么是 MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点故障的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在…

C语言设计三子棋

引入 谈到三子棋&#xff0c;大家应该都不陌生&#xff0c;学生时代我们大多人都爱拿作文本有事没事就跟同桌下两把&#xff0c;只要任意一方三点连成一线&#xff0c;就可以胜利。今天我作为一个计算机方面的博主&#xff0c;将会用C语言实现这个简单的小游戏&#xff08;人机…

sort命令 uniq命令 tr命令 cut命令

sort命令 ——以行为单位对文件内容进行排序&#xff0c;也可以根据不同的数据类型来排序 比较原则是从首字符向后&#xff0c;依次按ASCII码值进行比较&#xff0c;最后将他们按升序输出 语法格式&#xff1a; sort [选项] 参数 cat file | sort 选项 -n按照数字进行排序…

MySQL高可用之MHA集群

一、MHA概述 1.1 什么是 MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点故障的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在…

【模式识别9】python计算目标检测IoU、TP、FP、FN、Precision、Recall指标

python计算目标检测IoU、TP、FP、FN、Precision、Recall指标 1. 基础概念1.1 TP、TN、FP、FN1.2 IoU1.3 Precision&#xff08;P&#xff09;、Recall&#xff08;R&#xff09;、F1-score 2. python代码3. 总结 代码资源&#xff1a;IoU_P_R.py 1. 基础概念 1.1 TP、TN、FP、…

2023/5/14总结

哈夫曼树 哈夫曼树&#xff1a;给定n个权值作为n个叶子结点&#xff0c;构造一棵二叉树&#xff0c;若该树的带权路径长度&#xff08;WPL&#xff09;达到最小&#xff0c;则称该二叉树为哈夫曼树&#xff0c;也被称为最优二叉树。 怎样才能使带权路径长度最短&#xff1a;根据…

CTF-PHP反序列化漏洞5-反序列化字符逃逸

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

简单聊聊微前端

简单聊聊微前端 介绍微前端的优点应用间相互独立&#xff0c;互不依赖可以同时使用不同的技术栈可拓展性高可维护性更强&#xff0c;减少代码量提高开发和部署的效率团队的高度自主权错误隔离 微前端的缺点依赖项冗余CSS样式冲突和重叠性能比较差应用间的通信不够便捷 实现微前…

CSS的基础知识讲解

文章目录 一.什么是CSS二. 选择器2.1 标签选择器2.2 类名选择器2.3 ID选择器2.4 属性选择器2.5 子选择器2.6 后代选择器2.7 伪类选择器 三.盒子模型3.1 什么是盒子模型3.2 盒子的组成部分边框内边距外边距 四.弹性盒子布局4.1 什么是块级元素和行内元素块级元素行内元素行内元素…

◆ 前端工程化 ◆ webpack 的基本使用 ◆ webpack 中的插件 ◆ webpack 中的 loader ◆ 打包发布 ◆ Source Map

◆ 前端工程化 ◆ webpack 的基本使用 ◆ webpack 中的插件 ◆ webpack 中的 loader ◆ 打包发布 ◆ Source Map ◆ 前端工程化◆ webpack 的基本使用◆ webpack 中的插件◆ webpack 中的 loader1. loader 概述打包处理css文件打包处理less文件打包处理样式表中与url路径相关的…

Python——2

一、循环 1.range() 函数 用于生成一个整数序列&#xff0c;返回的是一个迭代对象&#xff0c;可用 in / not in查看。 &#xff08;1&#xff09;range(stop) 创建一个 [0,stop) 的整数序列&#xff0c;步长为1。 &#xff08;2&#xff09;range(start, stop) 创建一个 [s…

面试谎报了职级,本来是6,谎报成7,已经到HR这一步了,怎么了?

面试时谎报职级&#xff0c;公司能查出来吗&#xff1f; 一位网友说&#xff0c;自己在业务面时谎报了职级&#xff0c;把6报成7&#xff0c;现在已经到hr这一步了&#xff0c;该怎么办&#xff1f;是继续编吗&#xff1f; 有人不明白&#xff0c;为什么要谎报职级&#xff1f;…

Pycharm 安装教程,及常用快捷键,附教程

简介 PyCharm是一款Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如&#xff0c; 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。此外&#xff0c;该IDE提供了一些高级功能&a…

有史以来最强的5G入门科普!

一个简单且神奇的公式 今天的故事&#xff0c;从一个公式开始讲起。 这是一个既简单又神奇的公式。说它简单&#xff0c;是因为它一共只有3个字母。而说它神奇&#xff0c;是因为这个公式蕴含了博大精深的通信技术奥秘&#xff0c;这个星球上有无数的人都在为之魂牵梦绕。…

CloudCompare二次开发之如何配置PCL点云库?

文章目录 0.引言1.修改两个CMakeLists.txt文件2.源码编译3.测试PCL 0.引言 因笔者课题涉及点云处理&#xff0c;需要通过PCL进行点云数据分析处理&#xff0c;查阅现有网络资料&#xff0c;实现了VisualStudio2015(x86)配置PCL1.8.1点云库&#xff08;见&#xff1a;VisualStud…

基于卷积的图像分类识别(七):SENet

系列文章目录 本专栏介绍基于深度学习进行图像识别的经典和前沿模型&#xff0c;将持续更新&#xff0c;包括不仅限于&#xff1a;AlexNet&#xff0c; ZFNet&#xff0c;VGG&#xff0c;GoogLeNet&#xff0c;ResNet&#xff0c;DenseNet&#xff0c;SENet&#xff0c;MobileN…

网络编程 lesson3 UDP基础编程

目录 UDP介绍 UDP编程 函数接口 recvfrom sendto 小练习&#xff1a;实现服务器和客户端相连&#xff08;使用UDP实现&#xff09; client server UDP介绍 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是一种在计算机网络中常用的传输…

C++常量成员函数(类成员函数后加const、类成员函数参数列表后加const)常量对象(类名前加const)和非常量对象

文章目录 常量对象和非常量对象&#xff08;常量对象不能调用非常量成员函数&#xff09;常量成员函数&#xff08;常量成员函数不能修改类的数据成员&#xff1b;常量成员函数只能调用常量成员函数&#xff0c;不能调用非常量成员函数&#xff09; 常量对象和非常量对象&#…

网络编程 lesson1 网络概念

目录 网络发展史&#xff08;了解&#xff09; 局域网和广域网 局域网 广域网 IP地址 IP地址划分&#xff08;IPV4&#xff09; IP地址取址范围&#xff1a; 特殊地址 子网掩码 子网号&#xff08;注意和前面进行区分&#xff09; 练习 练习1&#xff1a; 练习2&…