![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
charles666_zq
这个作者很懒,什么都没留下…
展开
-
从数组中任选数量的元素,元素和为目标值,有多少种组合
题目 数组中元素为正整数,如data = {1, 2, 3, 6},目标值target=6,求data中有多少种组合的和为target值。 思路 暴力遍历data的每一种组合,使用掩码+prev_permutation的组合。 int fun(const vector<int>& data, int target) { int N = data.size(); vector<bool> bitMask(N, false); int count = 0; for (in原创 2020-10-11 19:35:23 · 1224 阅读 · 1 评论 -
归并排序
#include <iostream> using namespace std; void merge(int a[], int lo, int mid, int hi) { int* b = new int[mid - lo]; for (int i = 0; i < mid - lo; ++i) b[i] = a[lo + i]; for (int i = lo,j = 0, k = mid; i < hi; ++i) { if (k > hi - 1 || (原创 2020-10-09 10:24:57 · 56 阅读 · 0 评论 -
leetcode148排序链表
参考:zxy-23的优雅的C++递归,归并排序 class Solution { public: ListNode * sortList(ListNode * head) { return (head == NULL)? NULL: mergeSort(head); } private: ListNode * findMid(ListNode * head) { ListNode * slow = head; Lis转载 2020-10-09 09:06:07 · 52 阅读 · 0 评论 -
深信服2020-9-24笔试
编程题有两题,第一题是大学录取问题,第二题是字符串最大匹配问题。 第一题 通过80%,运行超时。可能是sort超时,也可能是大学已经录取完毕,但还有很多考生没处理。 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int T; cin >> T; vector<int> N(T), M(T); vecto原创 2020-09-24 21:09:56 · 1002 阅读 · 0 评论 -
使用sstream
笔试的时候很怕遇到使用逗号分隔的输入,c++不像python有方便的split方法,c++需要使用sstream进行逗号分隔。 #include <iostream> #include <sstream> #include <string> #include <vector> constexpr auto SIZE = 5; using namespace std; int main() { vector<string> data(SIZE原创 2020-09-18 15:23:52 · 143 阅读 · 0 评论 -
菱形继承与虚基表
参考:C++继承详解之三——菱形继承+虚继承内存对象模型详解vbptr(1) 菱形继承问题 派生类D中包含两份B基类的数据,不仅有数据冗余,还只能通过C1::m_b这样的方式来使用成员变量。 虚继承 class B {}; class C1:virtual public B {}; 虚继承会在C1类中加入一个vbptr(虚基指针)和一个vbtable(虚基表) 测试代码: #include <iostream> using namespace std; class Grand { pub转载 2020-09-18 14:12:48 · 133 阅读 · 0 评论 -
背包问题
背包问题 参考:背包问题九讲 01背包问题 LeetCode:416. 分割等和子集 该题可以转换成01背包问题,数组和的一半作为背包,需要装满背包,即初始化时dp[0][0]=0,dp[0][1...v]=INT_MIN;,第一版代码如下,时间复杂度O(lenv),空间复杂度O(lenv)。 class Solution { public: bool canPartition(vector<int>& nums) { int len=nums.size();转载 2020-09-17 21:22:55 · 55 阅读 · 0 评论 -
网易面试
内联函数是否能是虚函数 参考:https://blog.csdn.net/fightHHA/article/details/81772399 内联函数能否声明为虚函数 (1)只有成员函数才能声明为虚函数,因为虚函数仅适用于有继承关系的类对象,所以普通函数不能声明为虚函数; (2)虚函数必须是非静态成员函数因为静态成员函数不受限与某个对象; (3)内联函数不能声明为虚函数,因为内联函数不能再运行中动态确定其位置; (4)构造函数不能声明为虚函数,多态是指不同对象对同一消息有不同的行为特征,虚函数作为运行过程中原创 2020-09-15 13:11:59 · 88 阅读 · 0 评论 -
快排
#include <iostream> #include <vector> #include <algorithm> using namespace std; void shuffle(vector<int> &nums) { int n = nums.size(); for (int i = 0; i < n; i++) { swap(nums[i], nums[rand() % (n - i) + i]); } return原创 2020-09-13 00:39:19 · 88 阅读 · 0 评论 -
组合、排列、幂集
组合 从N个不同元素中选K个,输出所有情况。 CNK=N!K!(N−K)! C_{N}^{K}=\frac{N!}{K!(N-K)!} CNK=K!(N−K)!N! 方法1:掩码排列 void combination(int N, int K) { string bitMask(K, 1); bitMask.resize(N, 0); do { for (int i = 0; i < N; i++) { if (bitMask[i] == 1) cout <<原创 2020-09-10 23:29:35 · 237 阅读 · 0 评论 -
C++笔试奇技淫巧
C++笔试奇技淫巧 next_permutation用于全排列 vector<int> a {2,2,1}; sort(a.begin(),a.end()); do{ for (int i:a) cout<<i<<" "; cout<<endl; } while(next_permutation(a.begin(),a.end())); lower_bound和upper_bound用于二分查找(equal_range) fi原创 2020-09-05 14:09:25 · 174 阅读 · 0 评论