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

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

目录

1. 移动数组中的元素

2. 搜索二维矩阵

3. 三角形最小路径和

🌟 每日一练刷题专栏 🌟

Golang 每日一练 专栏

C/C++ 每日一练 ​专栏

Python 每日一练 专栏

Java 每日一练 专栏


1. 移动数组中的元素

将一维数组中的元素循环左移 k 个位置

输入:

第 1 行是一维数组元素的个数 n (数组大小)

第 2 行是一个整数 k , 表示移动的位置

下面 n 行为数组的元素个数

输出:

输出 n 行,表示移动后的数字

代码:

#include <stdio.h>
#define N 10000
int main()
{int k, a[N], b[N], n, t, w, i;scanf("%d", &n);scanf("%d", &k);for (i = 0; i < n; i++)scanf("%d", &a[i]);for (i = 0; i < k % n; i++)b[i] = a[i];for (i = 0; i < n; i++){if (i < n - k % n)a[i] = a[i + k % n];elsea[i] = b[i - n + k % n];}for (i = 0; i < n; i++)printf("%d\n", a[i]);return 0;
}

输入输出:

5
3
1 2 3 4 5

4
5
1
2
3


2. 搜索二维矩阵

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

  • 每行中的整数从左到右按升序排列。
  • 每行的第一个整数大于前一行的最后一个整数。

示例 1:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true

示例 2:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
输出:false

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 100
  • -10^4 <= matrix[i][j], target <= 10^4

代码:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>static int binary_search(int *nums, int len, int target)
{int low = -1;int high = len;while (low + 1 < high){int mid = low + (high - low) / 2;if (target > nums[mid]){low = mid;}else{high = mid;}}if (high == len || nums[high] != target){return -high - 1;}else{return high;}
}static bool searchMatrix(int **matrix, int matrixRowSize, int matrixColSize, int target)
{if (matrixRowSize == 0 || matrixColSize == 0){return false;}if (target < matrix[0][0] || target > matrix[matrixRowSize - 1][matrixColSize - 1]){return false;}int row = 0;int *nums = NULL;if (matrixRowSize > 0){nums = (int*)malloc(matrixRowSize * sizeof(int));for (row = 0; row < matrixRowSize; row++){nums[row] = matrix[row][0];}row = binary_search(nums, matrixRowSize, target);if (row >= 0){return true;}else{row = -row - 1;if (row == 0){return false;}else{row--;}}}int col = binary_search(matrix[row], matrixColSize, target);return col >= 0;
}int main()
{int row = 3;int col = 4;int target = 3;int **mat = (int**)malloc(row * sizeof(int *));mat[0] = (int*)malloc(col * sizeof(int));mat[0][0] = 1;mat[0][1] = 3;mat[0][2] = 5;mat[0][3] = 7;mat[1] = (int*)malloc(col * sizeof(int));mat[1][0] = 10;mat[1][1] = 11;mat[1][2] = 16;mat[1][3] = 20;mat[2] = (int*)malloc(col * sizeof(int));mat[2][0] = 23;mat[2][1] = 30;mat[2][2] = 34;mat[2][3] = 50;printf("%s\n", searchMatrix(mat, row, col, target) ? "true" : "false");return 0;
}

输出:

true


改为C++ 用vector方便,代码比较简洁,

#include <bits/stdc++.h>
using namespace std;int binary_search(vector<int> nums, int len, int target)
{int low = -1;int high = len;while (low + 1 < high) {int mid = low + (high - low) / 2;if (target > nums[mid])low = mid;elsehigh = mid;}if (high == len || nums[high] != target)return -high - 1;elsereturn high;
}bool searchMatrix(vector<vector<int>> matrix, int target)
{int matrixRowSize = matrix.size();int matrixColSize = matrix.front().size();if (matrixRowSize == 0 || matrixColSize == 0)return false;if (target < matrix.front().front() || target > matrix[matrixRowSize - 1][matrixColSize - 1])return false;int row = 0;vector<int> nums(matrixRowSize);if (matrixRowSize > 0) {for (row = 0; row < matrixRowSize; row++)nums[row] = matrix[row][0];row = binary_search(nums, matrixRowSize, target);if (row < 0) {row = -row - 1;if (row != 0) row--;else return false;} else return true;}int col = binary_search(matrix[row], matrixColSize, target);return col >= 0;
}int main()
{vector<vector<int>> matrix = {{1,3,5,7},{10,11,16,20},{23,30,34,60}};cout << (searchMatrix(matrix, 3) ? "true" : "false") << endl;cout << (searchMatrix(matrix, 13) ? "true" : "false") << endl;return 0;
}

3. 三角形最小路径和

给定一个三角形 triangle ,找出自顶向下的最小路径和。

每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。

示例 1:

输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
输出:11
解释:如下面简图所示:
2
3 4
6 5 7
4 1 8 3
自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。

示例 2:

输入:triangle = [[-10]]
输出:-10

提示:

  • 1 <= triangle.length <= 200
  • triangle[0].length == 1
  • triangle[i].length == triangle[i - 1].length + 1
  • -10^4 <= triangle[i][j] <= 10^4

进阶:

  • 你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题吗?

代码:

#include <bits/stdc++.h>
using namespace std;class Solution
{
public:int minimumTotal(vector<vector<int>> &triangle){int n = triangle.size();if (n == 0)return 0;if (n == 1)return triangle[0][0];vector<vector<int>> info(n, vector<int>(n, 0));info[0][0] = triangle[0][0];for (int i = 1; i < n; ++i){for (int j = 0; j <= i; ++j){if (j == 0)info[i][j] = triangle[i][j] + info[i - 1][j];else if (j == i)info[i][j] = triangle[i][j] + info[i - 1][j - 1];else{int temp = info[i - 1][j] > info[i - 1][j - 1] ? info[i - 1][j - 1] : info[i - 1][j];info[i][j] = temp + triangle[i][j];}}}int res = info[n - 1][0];for (int i = 0; i < n; ++i){if (info[n - 1][i] < res){res = info[n - 1][i];}}return res;}
};int main()
{Solution s;vector<vector<int>> triangle = {{2},{3,4},{6,5,7},{4,1,8,3}};cout << s.minimumTotal(triangle) << endl;triangle = {{-10}};cout << s.minimumTotal(triangle) << endl;return 0;
}

输出:

11
-10


附录

二分查找

又称折半查找、二分搜索、折半搜索等,是一种在静态查找表中查找特定元素的算法。
所谓静态查找表,即只能对表内的元素做查找和读取操作,不允许插入或删除元素。

使用二分查找算法,必须保证查找表中存放的是有序序列(升序或者降序)。
存储无序序列的静态查找表,除非先对数据进行排序,否则不能使用二分查找算法。 


🌟 每日一练刷题专栏 🌟

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

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

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

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

Golang 每日一练 专栏

​​

C/C++ 每日一练 ​专栏

​​​

Python 每日一练 专栏

Java 每日一练 专栏

相关文章:

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

目录 1. 移动数组中的元素 2. 搜索二维矩阵 3. 三角形最小路径和 &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang 每日一练 专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 Java 每日一练 专栏 1. 移动数组中的元素 将一维数组中的元素循环左移 k 个位置 输入…...

裸辞3个月,面试了25家公司,终于找到心仪的工作了

​上半年裁员&#xff0c;下半年裸辞&#xff0c;有不少人高呼裸辞后躺平真的好快乐&#xff01;但也有很多人&#xff0c;裸辞后的生活五味杂陈。 面试25次终于找到心仪工作 因为工作压力大、领导PUA等各种原因&#xff0c;今年2月下旬我从一家互联网小厂裸辞&#xff0c;没…...

【Linux学习】进程间通信——system V(共享内存 | 消息队列 | 信号量)

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 进程间通信——共享内存 | 消息队列 | 信号量&#x1f3c0;共享内存⚽系统调用shmgetkey值⚽系统…...

解决 IDA 防F5转伪C笔记

某app砸壳后放到IDA,根据堆栈查到该位置如下; G调到,0x1b81bcc 看下: BR 调到后面 x8 x9地址,汇编指令; 找到x9的地址,然后减去基地址也就是首地址,得到便宜地址; hook x9: var moduleAddr = Module.findBaseAddress("XX"); var line = moduleAddr.add...

【面试题】你需要知道的webpack高频面试题

大厂面试题分享 面试题库前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库谈谈你对webpack的看法webpack是一个模块打包工具&#xff0c;可以使用它管理项目中的模块依赖&#xff0c;并编译输出模块所需的静态文件。它…...

【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.60】损失函数改进为wiou

前言作为当前先进的深度学习目标检测算法YOLOv8&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系列文章&#xff0c;将重点对YOLOv8的如何改进进行详细的介绍&…...

2023年中职网络安全竞赛——数字取证调查(新版)attack解析(详细)

数字取证调查 任务环境说明: 服务器场景:FTPServer20221010(关闭链接)服务器场景操作系统:未知FTP用户名:attack817密码:attack817分析attack.pcapng数据包文件,通过分析数据包attack.pcapng找出恶意用户第一次访问HTTP服务的数据包是第几号,将该号数作为Flag值提交;…...

Cadence Allegro 导出Net Single Pin and No Pin报告详解

⏪《上一篇》   🏡《上级目录》   ⏩《下一篇》 目录 1,概述2,Net Single Pin and No Pin作用3,Net Single Pin and No Pin示例4,Net Single Pin and No Pin导出方法4.1,方法14.2,方法2B站关注“硬小二”浏览更多演示视频...

蓝桥冲刺31天之317

在这个时代&#xff0c;我们总是在比较&#xff0c;觉得自己不够好 其实不必羡慕别人的闪光点 每个人都是属于自己的限量版 做你喜欢并且擅长的事&#xff0c;做到极致 自然会找到自己独一无二的价值 鸟不跟鱼比游泳&#xff0c;鱼不跟鸟比飞翔 你我各有所长 A&#xff1a;组队…...

站上风口,文心一言任重道远

目录正式发布时机选择逻辑推理AI绘画用户选择总结自从OpenAI公司的chatGPT发布以来&#xff0c;吸引了全球目光&#xff0c;同时也引起了我们的羡慕&#xff0c;希望有国产的聊天机器人&#xff0c;盼星星盼月亮&#xff0c;终于等来了百度文心一言的发布。 正式发布 3月16日…...

Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)

一、前言 采用painter的方式绘制解码后的图片&#xff0c;方式简单易懂&#xff0c;巨大缺点就是占CPU&#xff0c;一个两个通道还好&#xff0c;基本上CPU很低&#xff0c;但是到了16个64个通道的时候&#xff0c;会发现CPU也是很吃紧&#xff08;当然强劲的电脑配置另当别论…...

百度发布文心一言,我想说几句

大家好&#xff0c;我是记得诚。 今天下午百度公司正式发布了文心一言&#xff0c;算是国内第一个交卷的互联网公司。 在ChatGPT和GPT-4的双重夹击下&#xff0c;可想而知百度的压力。 ChatGPT发布的时候&#xff0c;热度非常的高&#xff0c;大家对其都非常的感兴趣。 我是…...

简单了解JSP

JSP概念与原理概念: Java Server Pages&#xff0c;Java服务端页面一种动态的网页技术&#xff0c;其中既可以定义 HTML、JS、CSS等静态内容&#xff0c;还可以定义Java代码的动态内容JSP HTML Java, 用于简化开发JSP的本质上就是一个ServletJSP 在被访问时&#xff0c;由JSP容…...

Qt(c++)调用海康威视监控摄像头

文章目录一.海康威视监控摄像头开发SDK介绍二.海康SDK模块说明三.Qt项目中海康威视SDK配置四.实时预览摄像头图像程序一.海康威视监控摄像头开发SDK介绍 设备网络SDK是基于设备私有网络通信协议开发的&#xff0c;为嵌入式网络硬盘录像机、NVR、网络摄像机、网络球机、视频服务…...

深度学习部署笔记(十五): CUDA_Run_Time_API_parallel_多流并行,以及多流之间互相同步等待的操作方式

// CUDA运行时头文件 #include <cuda_runtime.h>#include <chrono> #include <stdio.h> #include <string.h>using namespace std;#define checkRuntime(op) __check_cuda_runtime((op), #op, __FILE__, __LINE__)bool __check_cuda_runtime(cudaErro…...

【Spring】spring框架简介

一、框架 1.框架的基本特点: 框架(Framework)&#xff0c;是基于基础技术之上&#xff0c;从众多业务中抽取出的通用解决方案;框架是一个半成品&#xff0c;使用框架规定的语法开发可以提高开发效率&#xff0c;可以用简单的代码就能完成复杂的基础业务;框架内部使用大量的设…...

WuThreat身份安全云-TVD每日漏洞情报-2023-03-17

漏洞名称:TP-LINK Archer AX21 命令注入漏洞 漏洞级别:严重 漏洞编号:CVE-2023-1389,CNNVD-202303-1280 相关涉及:TP-LINK Archer AX21 1.1.4 Build 20230219之前的固件版本 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-06347 漏洞名称:D-L…...

postman 调用webservice

有个外部接口需要提供古老的webservice 格式接口。1 设置格式按照xml 格式设置。2 消息体xml 封装不加envelope:<soap:Envelope xmlns:soap"" target"_blank">http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault&…...

基于华为模拟器(ensp)的静态路由配置实验

一 实验需求静态路由实验&#xff0c;建立拓扑pc1>>R1>>R2>>R3>>pc2&#xff0c;使pc1与pc2能相互通信。二 实验拓扑三 ip地址规划设备接口ip地址AR1G0/0/0192.168.10.254/24G0/0/112.1.1.1/24AR2G0/0/012.1.1.2/24G0/0/123.1.1.2/24 AR3G0/0/023.1.1.…...

模拟实现字符串函数(长度受限制的详讲)

上次发布了长度不受限制的字符串函数的模拟实现方法&#xff0c;这次就给大家说说长度受限制的字符串函数。首先&#xff0c;长度受限制和不受限制有什么区别呢&#xff1f;其实从某种意义上来讲&#xff0c;长度受限制的字符串函数比长度不受限制的字符串安全&#xff0c;为什…...

Linux系统swap分区动态调整实战指南

1. 为什么需要动态调整swap分区&#xff1f; 第一次接触Linux服务器管理时&#xff0c;我发现一个奇怪现象&#xff1a;明明物理内存还剩不少&#xff0c;系统却开始频繁使用swap分区&#xff0c;导致应用响应变慢。后来才知道&#xff0c;这是典型的swap配置不合理案例。swap分…...

用MATLAB玩转三维可视化:手把手教你绘制动态曲面图(含peaks函数详解)

MATLAB三维可视化实战&#xff1a;从静态曲面到动态交互的全方位指南 科研工作者常面临海量数据的可视化挑战&#xff0c;而MATLAB提供的三维图形工具链能将这些抽象数字转化为直观的空间形态。本文将带您深入探索三维可视化的核心技巧&#xff0c;从基础绘图到高级交互&#x…...

【2026年小红书春招- 3月25日 -第二题- 互评操作】(题目+思路+JavaC++Python解析+在线测试)

题目内容 现在有 n n n 条$ Plog$ 在首页上排成一列,队尾在下侧,队头在上侧。 用长度为 n n n 的$ 01 $串 s = s 1 , s 2 , … , s n s=s_1,s_2,…,s_n...

Kotlin协程flow缓冲buffer任务流,批次任务中选取优先级最高任务最先运行(十)

Kotlin协程flow缓冲buffer任务流&#xff0c;批次任务中选取优先级最高任务最先运行&#xff08;十&#xff09; 在 https://blog.csdn.net/zhangphil/article/details/159286201 基础上改进&#xff0c;简化LoadMgr提交简单任务的方法 。 Kotlin协程Flow结合缓冲(buffer)实现…...

Audio Flamingo 3:打破模态壁垒的音频智能突破性技术解析

Audio Flamingo 3&#xff1a;打破模态壁垒的音频智能突破性技术解析 【免费下载链接】audio-flamingo-3 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/audio-flamingo-3 在音频AI领域面临"模态孤岛"困境与长音频理解需求激增的双重挑战下&#xff0…...

AnimateDiff开源贡献:PyTorch核心代码解读与修改

AnimateDiff开源贡献&#xff1a;PyTorch核心代码解读与修改 1. 引言 如果你对AI视频生成感兴趣&#xff0c;可能已经听说过AnimateDiff这个强大的文生视频框架。它能够将静态的文字描述转化为生动的视频内容&#xff0c;效果相当惊艳。但你是否想过&#xff0c;这个看似神秘…...

金融量化分析的革命:GS Quant如何重塑华尔街的交易智慧

金融量化分析的革命&#xff1a;GS Quant如何重塑华尔街的交易智慧 【免费下载链接】gs-quant 用于量化金融的Python工具包。 项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant 想象一下&#xff0c;你是一位对冲基金的量化分析师&#xff0c;每天需要处理数…...

SeqGPT-560M入门指南:Streamlit组件封装——可复用NER输入/输出UI组件

SeqGPT-560M入门指南&#xff1a;Streamlit组件封装——可复用NER输入/输出UI组件 1. 项目简介&#xff1a;一个专为信息抽取而生的智能系统 如果你正在处理海量的非结构化文本&#xff0c;比如从新闻稿里提取人名和公司&#xff0c;从简历里抓取联系方式和职位&#xff0c;或…...

小白友好:通义千问1.8B-GPTQ量化版快速上手与场景应用

小白友好&#xff1a;通义千问1.8B-GPTQ量化版快速上手与场景应用 1. 为什么选择通义千问1.8B-GPTQ量化版 如果你正在寻找一个能在普通电脑上流畅运行的AI对话模型&#xff0c;通义千问1.8B-GPTQ量化版值得考虑。这个版本是阿里云团队专为资源有限环境优化的轻量级模型&#…...

红外波段光子晶体设计避坑指南:CST布里渊区扫描常见错误解析

红外波段光子晶体设计避坑指南&#xff1a;CST布里渊区扫描常见错误解析 在红外波段光子晶体设计中&#xff0c;布里渊区扫描是获取能带结构的关键步骤&#xff0c;但许多工程师在使用CST进行仿真时&#xff0c;常因参数设置不当导致结果失真或计算失败。本文将深入解析220THz红…...