云海翻腾
云海翻腾
全部文章
分类
C++(5)
程序/算法设计(2)
题解(29)
归档
标签
去牛客网
登录
/
注册
云海翻腾的博客
day day up
全部文章
(共36篇)
将数组循环右移k位
将长度为n数组循环右移k(范围1到n)位 方法一 思考: 找每个元素a[i]的最终所在位置,直接放上去,但是放上去前需要先将放置位置元素保存,然后找被保存元素的最终所在位置...一直循环到a[i]结束。 为了提高效率,可以倒着处理,这样元素a[i]只需要暂存一次。将a[i]暂存,到最终要放到i位置...
C++
数组
2021-12-01
0
668
题解 | #表达式求值#
表达式求值是经典问题。 将表达式由中辍转为后辍 如将(3+2)*30*(4-1)转为3,2,+30,*4,1,-*。 转换方法为,用一个栈stk保存运算符号。对表达式进行遍历, 当访问到数字时,添加到后辍式。 当访问到'('时,入栈, 当访问到')'时,出栈到后辍式,直到遇到'(', 当访问到'+...
C++
栈
2021-11-23
1
422
题解 | #最长无重复子数组#
最朴素的想法,用i做下标遍历数组,对于当前i,用j从i + 1开始遍历数组,当a[i:j-1]子数组中包含a[j](设下标为k)时,说明a[i:j-1]不能更长,此时更新i为k+1。 这样我们可以找到所有子数组和其长,自然可以找到最长子数组。 优化点:判断a[i:j-1]中是否包含a[j],以及如果...
C++
数组
哈希表
2021-11-22
0
354
C++/STL范型算法
STL算法定义在两个头文件中,分别是algorithm和numeric。 另人费解的命名??? search/search_n与find_end都是用于查找序列,分别表示在范围1中查找范围2序列的第一次出现,和在范围1中查找范围2序列的最后一次出现。显然属于一对相似操作,但是却用了完全不同的命名。...
C++
2021-11-16
0
391
C++/可调用对象与谓词
可调用对象 函数 函数指针 重载了函数调用的类。即重载了operator()。 lambda表达式 谓词 谓词是一个可调用表达式,返回值能用作条件值。 标准库不少算法(如sort)可以接受一个谓词作为参数,有一元谓词和二元谓词。 标准库提供的常用可调用对象 名称 含义 less 小...
C++
2021-11-13
0
541
多线程内部排序性能研究
普通排序的问题 我们知道除了一些特殊排序算法(如基数排序),平均性能最好的是快排。即使是使用快排,当排序规模达到千万级时,不加编译优化,用i7-6700 CPU @ 3.40GHz跑的时间也是秒级或十秒级。 多线程排序设计 普通排序的问题在于只能利用单个CPU能力。那我的初步想法就是利用多线程来提高...
C++
2021-11-12
0
489
c++/智能指针/allocator类
allocator类实现内存分配与对象构造相分离,对象析构与内存释放相分离。这样使用更加灵活,有利于提高效率。 allocator支持的方法 方法 功能 allocate 分配内存 deallocate 释放内存 construct 构造对象 destroy 析构对象 ...
C++
2021-11-10
0
397
c++/智能指针/动态数组管理
unique_ptr直接支持动态数组,也支持下标访问。当然了,也可以用get获取内置指针来访问。 shared_ptr不支持直接动态数组,所以需要用户提供删除器,只能用get获取内置指针来访问。 int main() { unique_ptr<int[]> upArr(new...
C++
2021-11-10
0
693
c++/智能指针/weak_ptr作用
weak_ptr需要配合shared_ptr使用,不能直接访问对象,必须调用lock返回非空才能使用。 多线程访问,一个线程使用shared_ptr负责内存管理,其它线程只用weak_ptr使用内存。 解决shared_ptr循环引用问题。 循环引用问题 执行以下程序可以知道,main函数退...
C++
2021-11-10
0
612
题解 | #两数之和#
找满足和为target的两数下标,最主要是要能快速根据数找到下标。 可以先建立数与下标的映射map。然后用i遍历数组,根据target与当前数计算出另一个数,然后在map中找,能找到,则很快能得到两数下标。 class Solution { public: vector<int>...
C++
哈希表
2021-10-23
0
340
首页
上一页
1
2
3
4
下一页
末页