
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 · 1289 阅读 · 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 · 94 阅读 · 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 · 88 阅读 · 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 · 1243 阅读 · 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 · 192 阅读 · 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 · 183 阅读 · 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 · 129 阅读 · 0 评论 -
网易面试
内联函数是否能是虚函数参考:https://blog.youkuaiyun.com/fightHHA/article/details/81772399内联函数能否声明为虚函数(1)只有成员函数才能声明为虚函数,因为虚函数仅适用于有继承关系的类对象,所以普通函数不能声明为虚函数;(2)虚函数必须是非静态成员函数因为静态成员函数不受限与某个对象;(3)内联函数不能声明为虚函数,因为内联函数不能再运行中动态确定其位置;(4)构造函数不能声明为虚函数,多态是指不同对象对同一消息有不同的行为特征,虚函数作为运行过程中原创 2020-09-15 13:11:59 · 129 阅读 · 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 · 127 阅读 · 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 · 294 阅读 · 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 · 219 阅读 · 0 评论