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

C/C++每日一练(20230419)

目录

1. 插入区间  🌟🌟🌟

2. 单词拆分  🌟🌟

3. 不同路径  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 插入区间

给你一个 无重叠的 ,按照区间起始端点排序的区间列表。

在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。

示例 1:

输入:intervals = [[1,3],[6,9]], newInterval = [2,5]
输出:[[1,5],[6,9]]

示例 2:

输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
输出:[[1,2],[3,10],[12,16]]
解释:这是因为新的区间 [4,8] 与 [3,5],[6,7],[8,10] 重叠。

示例 3:

输入:intervals = [], newInterval = [5,7]
输出:[[5,7]]

示例 4:

输入:intervals = [[1,5]], newInterval = [2,3]
输出:[[1,5]]

示例 5:

输入:intervals = [[1,5]], newInterval = [2,7]
输出:[[1,7]]

提示:

  • 0 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= intervals[i][0] <= intervals[i][1] <= 105
  • intervals 根据 intervals[i][0] 按 升序 排列
  • newInterval.length == 2
  • 0 <= newInterval[0] <= newInterval[1] <= 105

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

```c++
#include <stdio.h>
#include <stdlib.h>
static int compare(const void *a, const void *b)
{
    return ((int *)a)[0] - ((int *)b)[0];
}
int **insert(int **intervals, int intervalsSize, int *intervalsColSize, int *newInterval,
             int newIntervalSize, int *returnSize, int **returnColumnSizes)
{
    int i, len = 0;
    int *tmp = malloc((intervalsSize + 1) * 2 * sizeof(int));
    for (i = 0; i < intervalsSize; i++)
    {
        tmp[i * 2] = intervals[i][0];
        tmp[i * 2 + 1] = intervals[i][1];
    }
    tmp[i * 2] = newInterval[0];
    tmp[i * 2 + 1] = newInterval[1];
    qsort(tmp, intervalsSize + 1, 2 * sizeof(int), compare);
    int **results = malloc((intervalsSize + 1) * sizeof(int *));
    results[0] = malloc(2 * sizeof(int));
    results[0][0] = tmp[0];
    results[0][1] = tmp[1];
    for (i = 1; i < intervalsSize + 1; i++)
    {
        results[i] = malloc(2 * sizeof(int));
        if (tmp[i * 2] > results[len][1])
        {
            len++;
            ________________________;
        }
        else if (tmp[i * 2 + 1] > results[len][1])
        {
            results[len][1] = tmp[i * 2 + 1];
        }
    }
    len += 1;
    *returnSize = len;
    *returnColumnSizes = malloc(len * sizeof(int));
    for (i = 0; i < len; i++)
    {
        (*returnColumnSizes)[i] = 2;
    }
    return results;
}
int main(int argc, char **argv)
{
    if (argc < 3 || argc % 2 == 0)
    {
        fprintf(stderr, "Usage: ./test new_s new_e s0 e0 s1 e1...");
        exit(-1);
    }
    int new_interv[2];
    new_interv[0] = atoi(argv[1]);
    new_interv[1] = atoi(argv[2]);
    int i, count = 0;
    int *size = malloc((argc - 3) / 2 * sizeof(int));
    int **intervals = malloc((argc - 3) / 2 * sizeof(int *));
    for (i = 0; i < (argc - 3) / 2; i++)
    {
        intervals[i] = malloc(2 * sizeof(int));
        intervals[i][0] = atoi(argv[i * 2 + 3]);
        intervals[i][1] = atoi(argv[i * 2 + 4]);
    }
    int *col_sizes;
    int **results = insert(intervals, (argc - 3) / 2, size, new_interv, 2, &count, &col_sizes);
    for (i = 0; i < count; i++)
    {
        printf("[%d,%d]\n", results[i][0], results[i][1]);
    }
    return 0;
}
```

出处:

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

代码:

#include <stdio.h>
#include <stdlib.h>static int compare(const void *a, const void *b)
{return ((int *)a)[0] - ((int *)b)[0];
}int **insert(int **intervals, int intervalsSize, int *intervalsColSize, int *newInterval,int newIntervalSize, int *returnSize, int **returnColumnSizes)
{int i, len = 0;int *tmp = (int*)malloc((intervalsSize + 1) * 2 * sizeof(int));for (i = 0; i < intervalsSize; i++){tmp[i * 2] = intervals[i][0];tmp[i * 2 + 1] = intervals[i][1];}tmp[i * 2] = newInterval[0];tmp[i * 2 + 1] = newInterval[1];qsort(tmp, intervalsSize + 1, 2 * sizeof(int), compare);int **results = (int**)malloc((intervalsSize + 1) * sizeof(int *));results[0] = (int*)malloc(2 * sizeof(int));results[0][0] = tmp[0];results[0][1] = tmp[1];for (i = 1; i < intervalsSize + 1; i++){results[i] = (int*)malloc(2 * sizeof(int));if (tmp[i * 2] > results[len][1]){len++;results[len][0] = tmp[i * 2];results[len][1] = tmp[i * 2 + 1];}else if (tmp[i * 2 + 1] > results[len][1]){results[len][1] = tmp[i * 2 + 1];}}len += 1;*returnSize = len;*returnColumnSizes = (int*)malloc(len * sizeof(int));for (i = 0; i < len; i++){(*returnColumnSizes)[i] = 2;}return results;
}int main(int argc, char* argv[])
{if (argc<3) return 1;int new_interv[2];new_interv[0] = atoi((char*)argv[1]);new_interv[1] = atoi((char*)argv[2]);int i, count = 0;int *size = (int*)malloc((argc - 3) / 2 * sizeof(int));int **intervals = (int**)malloc((argc - 3) / 2 * sizeof(int *));for (i = 0; i < (argc - 3) / 2; i++){intervals[i] = (int*)malloc(2 * sizeof(int));intervals[i][0] = atoi((char*)argv[i * 2 + 3]);intervals[i][1] = atoi((char*)argv[i * 2 + 4]);}int *col_sizes;int **results = insert(intervals, (argc - 3) / 2, size, new_interv, 2, &count, &col_sizes);for (i = 0; i < count; i++){printf("[%d,%d]\n", results[i][0], results[i][1]);}return 0;
}

输出:


2. 单词拆分

给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。

说明:

  • 拆分时可以重复使用字典中的单词。
  • 你可以假设字典中没有重复的单词。

示例 1:

输入: s = "leetcode", wordDict = ["leet", "code"]
输出: true
解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。

示例 2:

输入: s = "applepenapple", wordDict = ["apple", "pen"]
输出: true
解释: 返回 true 因为 "applepenapple" 可以被拆分成 "apple pen apple"。注意你可以重复使用字典中的单词。

示例 3:

输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
输出: false

出处:

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

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:bool wordBreak(string s, vector<string> &wordDict){map<string, int> tmp;for (int i = 0; i < wordDict.size(); i++){tmp[wordDict[i]]++;}int n = s.length();vector<bool> res(n + 1, false);res[0] = true;for (int i = 0; i <= n; i++){for (int j = 0; j < i; j++){if (res[j] && tmp[s.substr(j, i - j)]){res[i] = true;break;}}}return res[n];}
};int main()
{Solution sol;string s = "leetcode";vector<string> wordDict = {"leet", "code"};cout << (sol.wordBreak(s, wordDict) ? "true" : "false") << endl;s = "applepenapple", wordDict = {"apple", "pen"};cout << (sol.wordBreak(s, wordDict) ? "true" : "false") << endl;s = "catsandog", wordDict = {"cats", "dog", "sand", "and", "cat"};cout << (sol.wordBreak(s, wordDict) ? "true" : "false") << endl;return 0;
}

输出:

true
true
false


3. 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

示例 1:

输入:m = 3, n = 7
输出:28

示例 2:

输入:m = 3, n = 2
输出:3
解释:从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下

示例 3:

输入:m = 7, n = 3
输出:28

示例 4:

输入:m = 3, n = 3
输出:6

提示:

  • 1 <= m, n <= 100
  • 题目数据保证答案小于等于 2 * 109

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

```c
#include <stdio.h>
#include <stdlib.h>
static int uniquePaths(int m, int n)
{
    int row, col;
    int *grids = malloc(m * n * sizeof(int));
    for (col = 0; col < m; col++)
    {
        grids[col] = 1;
    }
    for (row = 0; row < n; row++)
    {
        grids[row * m] = 1;
    }
    for (row = 1; row < n; row++)
    {
        for (col = 1; col < m; col++)
        {
            ______________________________;
        }
    }
    return grids[m * n - 1];
}
int main(int argc, char **argv)
{
    if (argc != 3)
    {
        fprintf(stderr, "Usage: ./test m n\n");
        exit(-1);
    }
    printf("%d\n", uniquePaths(atoi(argv[1]), atoi(argv[2])));
    return 0;
}
···

出处:

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

代码:

#include <stdio.h>
#include <stdlib.h>static int uniquePaths(int m, int n)
{int row, col;int *grids = (int*)malloc(m * n * sizeof(int));for (col = 0; col < m; col++){grids[col] = 1;}for (row = 0; row < n; row++){grids[row * m] = 1;}for (row = 1; row < n; row++){for (col = 1; col < m; col++){grids[row * m + col] = grids[row * m + col - 1] + grids[(row - 1) * m + col];}}return grids[m * n - 1];
}int main()
{printf("%d\n", uniquePaths(3, 7));printf("%d\n", uniquePaths(3, 2));printf("%d\n", uniquePaths(7, 3));printf("%d\n", uniquePaths(3, 3));return 0;
}

输出:

28
3
28
6


🌟 每日一练刷题专栏 🌟

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

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

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

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

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

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

相关文章:

C/C++每日一练(20230419)

目录 1. 插入区间 &#x1f31f;&#x1f31f;&#x1f31f; 2. 单词拆分 &#x1f31f;&#x1f31f; 3. 不同路径 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日…...

[自注意力神经网络]Mask Transfiner网络-论文解读

本文为CVPR2022的论文。国际惯例&#xff0c;先贴出原文和源码&#xff1a; 原论文地址https://arxiv.org/pdf/2111.13673.pdf源码地址https://github.com/SysCV/transfiner 一、概述 传统的Two-Stage网络&#xff0c;如Mask R-CNN虽然在实例分割上取得了较好的效果&#xff…...

漫画:是喜,还是悲?AI竟帮我们把Office破活干完了

图文原创&#xff1a;亲爱的数据 国产大模型烈火制造。阿里百度字节美团各科技大佬不等闲。 大模型嘛&#xff0c;重大工程&#xff0c;对我等“怀保小民”来说&#xff0c;只关心怎么用&#xff0c;不关心怎么造。 我来介绍一下自己&#xff0c;我是一个写稿男团组合的成员&am…...

ChatGPT的原理分析

1.前言 ChatGPT是一种基于自然语言处理和人工智能技术的聊天机器人&#xff0c;它的基础是由OpenAI研发的GPT模型&#xff0c;其中GPT是Generative Pre-trained Transformer的缩写。GPT模型的训练使用了海量的语料库&#xff0c;可以预测下一个单词、短语、句子或文本&#xf…...

在线免费把Markdown格式文件转换为PDF格式

用CSDN的MarkDown编辑器在线转换 CSDN的MarkDown编辑器说实话还是挺好用的。 导出PDF操作步骤&#xff0c;图文配合看&#xff1a; 在MD编辑模式下写好MarkDown文章或者直接把要转换的MarkDown贴进来&#xff1b; 使用预览模式&#xff0c;然后在预览文件上右键选择打印&…...

R7-5 列车厢调度

R7-5 列车厢调度 分数 25 全屏浏览题目 切换布局 作者 周强 单位 青岛大学 1 <--移动方向/3 \2 -->移动方向 大家或许在某些数据结构教材上见到过“列车厢调度问题”&#xff08;当然没见过也不要紧&#xff09;。今天&#xff0c;我们就来实际操作一下列车…...

English Learning - L2 第 16 次小组纠音 弱读和语调 2023.4.22 周六

English Learning - L2 第 16 次小组纠音 弱读和语调 2023.4.22 周六 共性问题help /help/ 中的 e 和 lsorry /ˈsɒri/ 中的 ɒ 和 ilook out /lʊk aʊt/ 中的 ɒ 和 aʊdont /dəʊnt/ 中的 əʊemergency /ɪˈmɜːʤənsɪ/ 中的 ɜːname /neɪm/ 中的 eɪright /raɪt/…...

( “树” 之 前中后序遍历) 145. 二叉树的后序遍历 ——【Leetcode每日一题】

基础概念&#xff1a;前中后序遍历 1/ \2 3/ \ \ 4 5 6层次遍历顺序&#xff1a;[1 2 3 4 5 6]前序遍历顺序&#xff1a;[1 2 4 5 3 6]中序遍历顺序&#xff1a;[4 2 5 1 3 6]后序遍历顺序&#xff1a;[4 5 2 6 3 1] 层次遍历使用 BFS 实现&#xff0c;利用的就是 BFS…...

NPOI與Crystal report 13.0關於ICSharpCode.SharpZipLib控件版本衝突的解決方法

公司原來的系統用了Crystal report 13.0&#xff0c;它關聯使用ICSharpCode.SharpZipLib.dll &#xff08;壓縮控件&#xff09;的版本為0.85.1.271&#xff1b;後來因需要新增加 NPOI2.3控件&#xff0c;它關聯使用了ICSharpCode.SharpZipLib.dll 的版本為 高版本0.86&#xf…...

Sass @extend 与 继承

Sass extend 与 继承 extend 指令告诉 Sass 一个选择器的样式从另一选择器继承。 如果一个样式与另外一个样式几乎相同&#xff0c;只有少量的区别&#xff0c;则使用 extend 就显得很有用。 以下 Sass 实例中&#xff0c;我们创建了一个基本的按钮样式 .button-basic&#…...

权限控制导入到项目中

在项目中应用 进行认证和授权需要前面课程中提到的权限模型涉及的7张表支撑&#xff0c;因为用户信息、权限信息、菜单信息、角色信息、关联信息等都保存在这7张表中&#xff0c;也就是这些表中的数据是进行认证和授权的依据。所以在真正进行认证和授权之前需要对这些数据进行…...

CVPR2020:训练多视图三维点云配准

CVPR2020&#xff1a;训练多视图三维点云配准 Learning Multiview 3D Point Cloud Registration 源代码和预训练模型&#xff1a;https://github.com/zgojcic/3D_multiview_reg 论文地址&#xff1a; https://openaccess.thecvf.com/content_CVPR_2020/papers/Gojcic_Learn…...

string容器及其简单使用

string容器 概述声明和初始化获取字符串长度字符串拼接字符串比较字符串插入和删除字符串转换 概述 string是C中的一个标准库容器&#xff0c;用于处理字符串。它提供了一系列的操作函数&#xff0c;使得我们可以像处理其他容器一样方便地处理字符串。下面是string容器的详细介…...

芴甲氧羰酰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS

修饰性PEG芴甲氧羰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS是保护氨基的PEG衍生物之一 结构式&#xff1a; 芴甲氧羰酰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS聚乙二醇化可以提高聚乙二醇分子的稳定性&#xff0c;降低其免疫原性&#xff0c;仅用于科研实验。 FMOC-NH…...

【JavaWeb】Servlet(崔老师版)

文章目录 1.概述1.1 JavaWeb三大组件1.2 Servlet作用 2.ServletConfig接口3.Servlet接口3.1 实现Servlet的方式3.2 Servlet生命周期 4.HttpServlet抽象类5.ServletContext5.1 概述5.2 获取ServletContext5.3 JavaWeb四大域对象5.4 获取应用初始化参数5.5 ServletContext获取资源…...

ITSS服务经理 、服务工程师线上开班在即

为了促进企业信息技术服务-运行维护服务能力&#xff0c;全面系统的提升员工的IT服务知识和技能水平&#xff0c;且更好的满足参训企业的时间需求&#xff0c;我司将于5月份开展ITSS服务经理、服务工程师线上班。 日期和形式 五月份&#xff1a;ITSS服务项目经理&#xff1a;…...

【LeetCode】199.二叉树的右视图

1.问题 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: []…...

Shell编程(三)grep sed awk文本处理三剑客

上一章&#xff1a; Shell编程(二&#xff09;_做测试的喵酱的博客-CSDN博客 一、ps命令 指令&#xff1a; ps作用&#xff1a; 主要是查看服务器的进程信息选项含义&#xff1a; -e&#xff1a;等价于 ‘-A’ &#xff0c;表示列出全部的进程 -f&#xff1a;显示全部的列&am…...

一步步带你学习Python编程:从零开始的查缺补漏

在快节奏的生活中&#xff0c;很难找到时间来学习新的技能。但有时候&#xff0c;我们会突然发现自己有一些空闲时间&#xff0c;而又不想虚度光阴。无聊的时候&#xff0c;我们可以选择学习一项新技能来充实自己。最近&#xff0c;我就因为有些无聊&#xff0c;决定重新学习Py…...

常见容器的方法

常见容器 向量 (vector)常用方法代码实例 列表 (list)常用方法 集合 (set)常用方法 映射 (map)方法 向量 (vector) 常用方法 vector::push_back(): 将元素插入向量尾部。 vector::pop_back(): 弹出向量尾部的元素。 vector::insert(): 在指定位置插入元素。 vector::erase():…...

炸裂实锤!随手乱按挖出编译器「乱码隐藏保留字」编译报错直接封神

文章目录封面文案一、专栏开篇回顾二、初见疑点&#xff1a;反复刷屏的神秘乱码片段三、三层硬核现场取证&#xff0c;逐层锁死真相1. IDE标识实锤&#xff1a;专属K图标 关键字同款高亮2. 编译现场终极定罪&#xff1a;报错和普通未定义变量完全不同对比区分&#xff0c;一眼…...

基于北方苍鹰优化算法优化径向基函数神经网络(NGO - RBF)的时间序列预测

基于北方苍鹰优化算法优化径向基函数神经网络(NGO-RBF)的时间序列预测 NGO-RBF时间序列 优化参数为扩散速度&#xff0c;采用交叉验证防止过拟合 matlab代码注&#xff1a;暂无Matlab版本要求 -- 推荐 2018B 版本及以上在时间序列预测领域&#xff0c;寻找高效准确的模型一直是…...

医用擦拭纸选购指南:看懂这五大认证,避开医疗耗材采购“隐形坑

# 医用擦拭纸选购指南&#xff1a;看懂这五大认证&#xff0c;避开医疗耗材采购“隐形坑”> 在医疗领域&#xff0c;每一片看似普通的擦拭纸&#xff0c;都直接关系到诊疗安全、院感控制和患者健康。对于医疗器械经销商、医院后勤管理者而言&#xff0c;选择供应商时最核心的…...

从Sketchfab下载的glTF模型怎么用?手把手教你用Assimp 5.3.1在Visual Studio 2022里解析《蔚蓝档案》角色数据

从Sketchfab下载的glTF模型实战解析&#xff1a;用Assimp 5.3.1提取《蔚蓝档案》角色数据 当你在Sketchfab上发现一个精美的《蔚蓝档案》角色模型&#xff0c;下载glTF格式文件后&#xff0c;接下来该怎么办&#xff1f;本文将带你从零开始&#xff0c;使用Assimp 5.3.1库在Vi…...

快速部署DDColor:本地环境搭建与老照片修复完整流程

快速部署DDColor&#xff1a;本地环境搭建与老照片修复完整流程 1. 引言&#xff1a;让黑白记忆重获新生 在数字影像技术高度发达的今天&#xff0c;我们随手就能拍摄高清彩色照片。但那些承载着家族记忆和历史瞬间的黑白老照片&#xff0c;却因为技术限制而失去了色彩的温度…...

Get Shit Done:基于上下文工程的AI开发框架解决Claude Code上下文衰退难题

Get Shit Done&#xff1a;基于上下文工程的AI开发框架解决Claude Code上下文衰退难题 【免费下载链接】get-shit-done A light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TCHES. 项目地址: https://…...

Matplotlib 函数手册:3D 绘图

Matplotlib 的三维绘图并不是一套独立系统&#xff0c;而是在原有 Figure、Axes 与子图机制上的扩展。三维图仍沿用标题、坐标轴标签与布局调整等基本框架&#xff0c;只是绘图对象从二维平面延伸到了三维空间。在较新的 Matplotlib 版本中&#xff0c;只要使用 projection3d 创…...

Rocky Linux 9最小化安装后,我第一时间会做的10个安全加固设置(新手必看)

Rocky Linux 9最小化安装后的10个关键安全加固指南 当你完成Rocky Linux 9的最小化安装&#xff0c;系统虽然干净但远未达到安全标准。作为企业级RHEL的替代品&#xff0c;Rocky Linux继承了其稳定性与安全性基因&#xff0c;但默认配置仍需优化才能抵御现代网络威胁。本文将分…...

GLM-4V-9B真实案例展示:从上传JPG到输出结构化文本的端到端演示

GLM-4V-9B真实案例展示&#xff1a;从上传JPG到输出结构化文本的端到端演示 1. 项目背景与核心价值 GLM-4V-9B作为多模态大模型的优秀代表&#xff0c;能够同时理解图像和文本信息&#xff0c;实现真正的视觉-语言交互。但在实际部署中&#xff0c;很多开发者会遇到环境兼容性…...

5分钟部署Qwen3-Reranker-0.6B:解决模型下载失败、权限问题等部署难题

5分钟部署Qwen3-Reranker-0.6B&#xff1a;解决模型下载失败、权限问题等部署难题 1. 引言 Qwen3-Reranker-0.6B作为一款轻量级但功能强大的文本重排序模型&#xff0c;在实际部署过程中常常会遇到各种"拦路虎"。本文将带你快速解决这些部署难题&#xff0c;让你在…...