![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
nudt_qxx
这个作者很懒,什么都没留下…
展开
-
cuda从入门到精通(五)CUDA实现AI模型中的softmax
NVIDIA提供了许多CUDA库,如cuBLAS和cuDNN,这些库为许多常见的线性代数运算提供了高效的实现。例如,在上述示例中,我们在GPU上分配了额外的内存来存储输入和输出的副本。为了避免这种情况,我们可以从每个输入值中减去最大值,这样可以确保所有的输入值都在可接受的范围内。:了解你正在使用的硬件的特性,并根据这些特性进行优化。例如,不同的GPU可能有不同的内存带宽和计算能力,这可能会影响你的代码的性能。这些只是优化CUDA代码的一些基本建议,具体的优化策略可能会根据你的应用和硬件的特性而有所不同。原创 2024-03-19 13:08:39 · 652 阅读 · 0 评论 -
leetcode 240. 搜索二维矩阵 II
由于每一列的元素都是升序排列的,那么在当前的搜索矩阵中,所有位于第 y 列的元素都是严格大于 target 的,因此我们可以将它们全部忽略,即将 y 减少 1;,由于每一行的元素都是升序排列的,那么在当前的搜索矩阵中,所有位于第 x 行的元素都是严格小于 target 的,因此我们可以将它们全部忽略,即将 x 增加 1。编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target :如果搜索到返回true,否则返回false。每列的元素从上到下升序排列。原创 2024-03-07 19:19:03 · 326 阅读 · 0 评论 -
求每个cluster中box的个数
有一堆box,若干个box有交集就是一个簇,求每个cluster中box的个数。注意:可以自定义box的结构体, 无需考虑旋转角度。请用C+实现上述代码。原创 2024-03-07 11:12:28 · 200 阅读 · 0 评论 -
leetcode.15三数之和
然后,我们遍历数组,对于每个元素,我们使用两个指针分别指向当前元素的下一个元素和数组的末尾,然后向中间移动两个指针,直到两个指针相遇。在移动指针的过程中,我们需要判断三个指针指向的元素之和是否等于0,如果等于0,我们将这三个元素加入结果集中;然后,我们遍历数组,对于每个元素,我们使用两个指针分别指向当前元素的下一个元素和数组的末尾,然后向中间移动两个指针,直到两个指针相遇。同样地,在移动指针的过程中,我们也需要判断当前指针指向的元素是否与前一个元素相同,如果相同,我们也需要跳过当前元素,以避免重复计算。原创 2024-03-05 20:10:29 · 255 阅读 · 0 评论 -
leetcode 经典题目42.接雨水
如果当前元素的高度小于栈顶元素的高度,我们将当前元素的索引入栈;如果当前元素的高度大于或等于栈顶元素的高度,我们将栈顶元素出栈,并计算出栈元素对应的雨水量。首先,我们需要遍历数组,对于每个元素,我们将其高度与栈顶元素的高度进行比较。如果当前元素的高度小于栈顶元素的高度,我们将当前元素的索引入栈;如果当前元素的高度大于或等于栈顶元素的高度,我们将栈顶元素出栈,并计算出栈元素对应的雨水量。需要注意的是,在计算雨水量时,我们需要考虑当前元素与栈顶元素之间的距离,以及当前元素和栈顶元素之间的最小高度。原创 2024-03-05 20:00:50 · 665 阅读 · 0 评论 -
leetcode 11.盛最多水的容器
首先,我们需要两个指针,分别指向数组的左右两端。然后,我们比较两个指针指向的值,将较小的值对应的指针向中间移动,同时计算当前两个指针之间的面积。最后,我们比较所有计算出的面积,返回最大的面积即可。来确定当前两个指针之间的最大高度,这是因为如果两个指针之间的最大高度小于当前指针的高度,那么即使将指针向中间移动,也无法增加面积。的值,将较小的值对应的指针向中间移动,同时计算当前两个指针之间的面积,并更新最大面积。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。,分别指向数组的左右两端。原创 2024-03-05 19:54:43 · 384 阅读 · 0 评论 -
leetcode128. 最长连续序列
找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为。给定一个未排序的整数数组。解释:最长数字连续序列是。原创 2024-03-04 22:00:17 · 324 阅读 · 0 评论 -
迭代法实现二叉树前序/中序/后序遍历
二叉树前序/中序/后序遍历是最简单的题目之一,类似于二分/快排/链表反转,是在求职期间必熟必会的算法!在这里记录下三种遍历的迭代实现,动画版解释戳。原创 2024-03-03 19:22:53 · 230 阅读 · 0 评论 -
秒杀leetcode子数组问题的模板“前缀和+哈希表”
umap 的初始值为。以上代码实现了一个函数 subarraySum,用于计算一个整数数组 nums 中所有和为 k 的子数组的数量。中的每个元素 n,将其加到 sum 上,然后计算当前子数组和减去 k 的结果 cur。答: 假设当前前缀和为sum,我们的目标是求解一个连续的和为k的子数组,假设子数组标号从i到j,即求。给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数。中存在,则表示存在一个前缀和为 cur 的子数组,其和为 k,因此将。原创 2024-03-03 14:07:36 · 794 阅读 · 0 评论 -
C语言中 #include 的尖括号(<>)和双引号(““)的区别
用尖括号是在宏展开的时候,系统首先从C语言函数库中找文件 用双引号的则从项目目录中找文件。所以, 在使用中,一般如果头文件是系统函数库中的, 则用尖括号,否则用双引号。原创 2022-02-08 16:25:42 · 2063 阅读 · 0 评论 -
在线运行C++的网站整理(持续更新)
1.https://godbolt.org/2.https://wandbox.org/原创 2022-01-05 10:01:52 · 7558 阅读 · 0 评论 -
从C++11到C++23(六)C++20利用contains查询map是否存在某个键
在C++20以前,如果map查询是否存在某个键,需要语法为1.使用map::find:if ( m.find(key) != m.end() ) { std::cout << "Found\n";} else { std::cout << "Not found\n";}2.使用count函数,使用下面三条任意一条判断语句即可:m.count(key) > 0m.count(key) == 1m.count(key) != 0区别:map和set两原创 2021-08-11 10:13:40 · 7267 阅读 · 0 评论 -
从C++11到C++23(五)C++20新增starts_with和ends_with用法
不得不说,C++20真是越来越接近Python语法。在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数判断文本是否以某个或某几个字符开始,endswith()函数判断文本是否以某个或某几个字符结束。例如>>> s = "hello world">>> s.startswith("h")True>>> s.startswith("he")True>>原创 2021-08-10 20:13:29 · 3745 阅读 · 3 评论 -
leetcode 3. 最长不含重复的子字符串的五种解法
leetcode链接:最长不含重复的子字符串题目描述给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。原创 2021-07-10 12:15:51 · 532 阅读 · 0 评论 -
c++ 打印获取当前系统时间时分秒
#include <iostream>#include <cstdio>#include <chrono>#include <cinttypes>#include <ctime>#include <sstream>#include <iomanip>using namespace std; int main() { std::time_t t = std::time(n原创 2021-06-17 12:36:58 · 1040 阅读 · 0 评论 -
C++ std::multiplies实现无视类型执行乘法
std::multiplies是乘法的二元函数对象。常被用于std::transform或者std::accumulate等的运算算子。例子一.实现两个数组元素的相乘// C++ program to illustrate std::multiplies // by multiplying the respective elements of 2 arrays #include <iostream> // std::cout #include <functional> /原创 2021-06-09 18:13:01 · 903 阅读 · 0 评论 -
按照正则表达式批量删除某个路径下的文件
#include <iostream>#include <cstdlib>#include <regex>#include <glob.h>bool rmConfigFile(const std::string &pattern, std::string &files_path){ std::string files_pattern = files_path + "*"; glob_t glob_result;原创 2021-04-28 15:47:06 · 572 阅读 · 0 评论 -
C++实现常见shell命令cp mv rm mkdir
#include <dirent.h>#include <stdlib.h>#include <string.h>#include <sys/stat.h>#include <sys/time.h>#include <sys/types.h>#include <unistd.h>#include <cstdio>#include <cstdlib>// mkdir 新建文件夹i.原创 2021-04-06 12:26:47 · 784 阅读 · 0 评论 -
C++ map分别按照key和value排序
#include <iostream>#include <map>#include <set>#include <algorithm>using namespace std;// Function to convert a map<key,value> to a multimap<value,key>multimap<int, string> invert(map<string, int> &am原创 2020-12-26 12:54:37 · 551 阅读 · 0 评论 -
C++ OpenCV进行透视变换后再把坐标映射回原图
//test.cpp//g++ test.cpp -std=c++11 `pkg-config --cflags --libs opencv` -ldl -Wl,-rpath,. -o test#include <opencv2/opencv.hpp>#include "opencv2/core/core.hpp"#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/calib3d/calib3d.hpp"#include原创 2020-12-14 10:19:50 · 1125 阅读 · 0 评论 -
C++ OpenCV图像2d坐标和齐次坐标的互转
//g++ test.cpp -std=c++11 `pkg-config --cflags --libs opencv` -ldl -Wl,-rpath,. -o test#include "opencv2/core/core.hpp"#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/calib3d/calib3d.hpp"#include <iostream>using namespace std;using n原创 2020-12-11 17:26:02 · 1158 阅读 · 0 评论 -
C++ vector正确删除元素Erase–remove用法
来源:维基百科动机一个常见的编程任务是从集合collection中删除等于某个值或满足某个标准的所有元素。C++语言可以通过手写循环完成这个任务。但更好的办法是使用C++标准模板库中的算法来实现。erase用于从一个集合中删除一个元素,但是对于基于数组的容器,如vector,存储在被删除元素后的所有元素都需要向前以东以避免集合中有一个空位(gap),在同一容器中多次调用产生了大量移动元素的开销。algorithm库提供了remove与remove_if算法。由于这些算法运行在两个前向迭代器确定的元素转载 2020-12-09 11:14:55 · 8237 阅读 · 1 评论 -
leetcode 215. TopK的四种解法
leetcode链接:数组中的第K个最大元素题目描述在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设k总是有效的,且 1 ≤ k ≤ 数组的长度。思路分析这是一道非常经典的题目,在LeetcodeTop中出现频率更是高居第一!思路一最简答的原创 2020-11-17 12:41:40 · 467 阅读 · 0 评论 -
leetcode 381.O(1) 时间插入、删除和获取随机元素 - 允许重复
leetcode链接:O(1) 时间插入、删除和获取随机元素 - 允许重复题目描述设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。注意: 允许出现重复元素。insert(val):向集合中插入元素 val。remove(val):当 val 存在时,从集合中移除一个 val。getRandom:从现有集合中随机获取一个元素。每个元素被返回的概率应该与其在集合中的数量呈线性相关。API示例// 初始化一个空的集合。RandomizedCollection colle原创 2020-10-31 10:47:41 · 238 阅读 · 0 评论 -
C++ 利用正则表达式按特定字符切割字符串
// This file is a "Hello, world!" in C++ language by GCC for wandbox.#include <iostream>#include <vector>#include <regex>#include <string>std::vector<std::string> split(const std::string& input,原创 2020-10-26 15:19:21 · 3564 阅读 · 0 评论 -
leetcode 1512. 好数对的数目
leetcode链接:leetcode 1512. 好数对的数目题目描述给你一个整数数组 nums。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是(0,3), (0,4), (3,4), (2,5),下标从 0 开始示例 2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是原创 2020-10-25 12:11:22 · 205 阅读 · 0 评论 -
C++ OpenCV中 Scalar和Vec3b的互转函数
//请自己加入头文件inline cv::Scalar Vec3b2Scalar(const cv::Vec3b& v){ return cv::Scalar(v[0], v[1], v[2]);}//! converts Scalar to Vec3binline cv::Vec3b Scalar2Vec3b(const cv::Scalar& v){ return cv::Vec3b((uchar)v[0], (uchar)v[1], (uchar)v[2]);}..原创 2020-10-20 18:15:10 · 1323 阅读 · 0 评论 -
leetcode 371. 两整数之和
leetcode 371. 两整数之和不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1递归解法a ^ b可以得到两数相加不进位的加法结果(a & b) << 1可以得到两数相加产生的进位将不进位的加法结果与进位相加,即可得到两数相加的实际结果。需要注意的是:不进位加法结果与进位相加有可能再次造成进原创 2020-10-10 23:14:22 · 170 阅读 · 0 评论 -
leetcode 349. 两个数组的交集
题目链接:349. 两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。思路第一个vector转为set,然后遍历第二个vector,若第二个vector元素在set中存在,则把该元素存下来。最后因为题目输出要原创 2020-10-10 20:47:07 · 132 阅读 · 1 评论 -
C++ 二分查找模板和leetcode原题示例
二分查找二分查找是刷题重要的一环,在leetcode较多题目都可以用二分查找解决。二分查找基本思想如下:对一个有序的数据集合,查找的思想类似分治思想,每次通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间缩小为0。/** * 注意在实现的时候: * 1、循环终止条件: low <= high * 2、mid的取值,假如low和high比较大的话,取 (low + high) / 2, * 容易发生溢出,改进的写原创 2020-10-04 21:29:05 · 319 阅读 · 0 评论 -
C++动态规划模板和leetcode原题
leetcode 地址连续子数组的最大和剑指offer第42题这道题目基本是考察动态规划的最简单题目啦????动态规划:状态转移方程:dp[i] = max(dp[i-1] + nums[i], nums[i]),其中dp[i]表示以索引i为结束点基准的子数组的最大值。初始状态:dp[0]= nums[0]。class Solution {public: int maxSubArray(vector<int>& nums) { for(i原创 2020-10-03 14:02:05 · 338 阅读 · 2 评论 -
leetcode108 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5递归解法/** * Definition for a binary tree node. * struct原创 2020-10-02 22:43:54 · 87 阅读 · 0 评论 -
leetcode x 的 n 次幂函数递归和非递归解法
原题链接:https://leetcode-cn.com/problems/powx-n/实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2^-2 = 1/(2^2) = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32 位有符号整数,其原创 2020-10-02 22:12:50 · 305 阅读 · 0 评论 -
C++11 生成随机数
代码链接:https://wandbox.org/permlink/piWyOPiMyG0tggQKC++11 提供了新的随机数生成方法,随机数的相关类声明都位于<random>头文件中,完整说明可参考:random,此处选择一些常用的总结一下。std::mt19937是C++11加入的新特性,是一种高效的随机数生成算法。它的用法和rand()相似,但是具有速度快,周期长的特点。它的名字就来自于周期长度2^19937-1。而rand()在windows下生成的数据范围为0-32767。而这个原创 2020-09-22 18:08:30 · 1476 阅读 · 1 评论 -
2020CV秋招求职的若干思考
文章目录前言一、秋招到底考察什么二、秋招该如何准备1.储备基础知识2.锻炼工程能力三、有哪些面试技巧1.如何引导面试官2.面试的那些黑话总结前言知乎上对算法岗的提问逐渐从“饱和”、““神仙打架”、“诸神黄昏”到“灰飞烟灭”,甚至预订了明年的“车毁人亡”。笔者毕业于2019年,参加了2018的秋招,结合自己秋招经历和今年听到的一些秋招历程,简单谈下对CV秋招的看法。一、秋招到底考察什么示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、秋招该如何准备原创 2020-09-20 17:15:33 · 942 阅读 · 4 评论 -
从C++11到C++23(四)统计某个数目中1的个数
代码链接见:https://wandbox.org/permlink/sIdpRyLe4utkecEqC++20提供了一个新的 <bit> 头文件用于提供一些位运算,其中popcount可用于统计一个数目中1的个数。如果你想统计一个2/8/16进制数目中1的个数,这个函数就非常方便了:#include <bit>#include <bitset>#include <cstdint>#include <initializer_list>原创 2020-06-30 23:13:10 · 761 阅读 · 0 评论 -
从C++11到C++23(三)常量表达式修饰虚函数constexpr virtual functions
代码链接见:https://wandbox.org/permlink/ksQk5KCf4K5ChUe0constexpr(常量表达式)是为了解决C++历史遗留问题,它一种比const 更严格的束缚, 它规定了表达式本身在编译期间可知。简单来说,const其实是readonly(只读),而constexpr才是const(常量)。二者更多区别见:知乎:C++ const 和 constexpr 的...原创 2020-04-30 10:25:09 · 1106 阅读 · 0 评论 -
从C++11到C++23(二)C++20的for循环
代码链接见:https://wandbox.org/permlink/Ex03u0X4YB8zYfpyC++20的for循环遍历,优雅到爆:#include <iostream>#include <vector>using namespace std;int main(){ for (std::vector v{1, 2, 3}; auto& ...原创 2020-04-29 15:09:17 · 2166 阅读 · 1 评论 -
从C++11到C++23(一) C++20圆周率、常数e和常见对数
代码连接见:https://wandbox.org/permlink/qaUjQb3Ud0SGqRhpC++20中圆周率和常数e已经进入std了,无需math头文件:// gcc >=10,// g++ test.cpp -Wall -Wextra -std=c++2a#include <iostream>#include <numbers> //加这个头...原创 2020-04-29 14:59:55 · 1782 阅读 · 0 评论 -
C/C++11的毫秒时间戳和日期互转
先来个C++11的版本:// 需要开启c++11支持,g++ test.cpp -std=c++11 -o test// 这里默认是东八区北京时间格式#include <iostream>#include <chrono>#include <cstdio>using namespace std;std::time_t getTimeStamp()...原创 2020-04-17 10:33:26 · 7644 阅读 · 0 评论