- 博客(25)
- 收藏
- 关注
原创 字符数量从大到小
输入dgccc 输出cccdg 输入dgggCcc 输出gggccdC 输入一个字符串,按照字符串中字符的数量从大到小输出 #include<iostream> #include<unordered_map> #include<string> #include<algorithm> using namespace std; bool comp(const pair<char, int>& a, const pair<char,...
2021-09-15 20:24:28
171
原创 乘积小于k的子数组
#include<iostream> #include<vector> using namespace std; int numSubarrayProductLessThanK(vector<int>& nums, int k) { int len = nums.size(); int i = 0; int j = 0; int res = 0; int cur = 1; for (; j < len; j++) { cur *= num
2021-09-13 20:50:20
133
原创 生成镜像树
递归生成镜像树 #include<iostream> #include<stack> #include<queue> using namespace std; class TreeNode { public: int val; TreeNode *left; TreeNode *right; TreeNode(int value):val(value),left(nullptr),right(nullptr){} }; TreeNode *mirror(Tre
2021-09-13 19:59:30
131
原创 单例模式c++
懒汉模式 mutex m; class Singleton { public: static Singleton* getInstance() { if (instance == nullptr) { m.lock(); if (instance == nullptr) { instance = new Singleton(); } m.unlock(); } return instance; } private: Singleton(); ~Single
2021-09-12 19:51:42
71
原创 实现多线程同步
实现多线程同步 1普通加锁 mutex m1; void thread1(int a) { for (int i = 0; i < 100; ++i) { m1.lock(); cout <<"thread1"<<" "<< m++<<endl; m1.unlock(); } } 2lock_guard 加锁 mutex m1; void thread1(int a) { lock_guard<mutex> l1(
2021-08-30 21:34:40
99
原创 五张扑克牌,判断是不是顺子
字节测开一面 五张扑克牌,判断是不是顺子 输入:A (1) 2 3 4 5 输出:true 输入:10 J(11) Q(12) K(13) A(1) 输出:false #include <iostream> #include<vector> using namespace std; bool islist(vector<char> &a) { for (int i = 1; i < 5; i++) { if (a[i]-a[i - 1] == 1)
2021-08-24 20:23:47
560
1
原创 输入输出c++
输入输出 #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int m, n; vector<int> res; while (cin >> m) { res.emplace_back(m); if (cin.get() == '\n') { break; } } cin >
2021-08-21 16:29:02
111
原创 合并两个有序链表
合并两个有序链表 #include<iostream> using namespace std; class ListNode { public: int val; ListNode *next; ListNode():val(),next(nullptr){} ListNode(int value):val(value), next(nullptr) {} }; ListNode *mergeNode(ListNode *l1, ListNode *l2) { if (!l1&
2021-08-19 11:32:39
107
原创 合并两个有序的数组
合并两个有序的数组 #include<iostream> #include<algorithm> #include<string> #include<queue> using namespace std; void ABsort(int A[], int B[], int m, int n, int seq) { while (m > 0 && n > 0) { if (A[m - 1] <= B[n - 1]) {
2021-08-19 10:59:02
91
原创 提取偶数位字符串
给一个字符串,提取出其中偶数位的字符,组成一个新的字符串并打印出来,另外要检验输入字符串的合法性,即是否只包含数字、大小写字母, 且长度小于20,如果是非法字符串,打印ERROR。 #include<iostream> #include<algorithm> #include<string> #include<queue> using namespace std; int main() { string input; getline(cin,input
2021-08-18 19:48:38
2540
原创 k个一组链表反转
k个一组链表反转 #include<iostream> #include<algorithm> #include<string> #include<queue> using namespace std; class LinkNode{ public: int val; LinkNode *next; LinkNode() :val(0), next(nullptr){} LinkNode(int value) :val(value), next(nu
2021-08-18 19:15:45
101
原创 反转链表c++
反转链表 输入只能输入0~9的数字字符串 #include<iostream> #include<algorithm> #include<string> #include<queue> using namespace std; class LinkNode{ public: int val; LinkNode *next; LinkNode() :val(0), next(nullptr){} LinkNode(int value) :val(val
2021-08-18 15:42:44
88
原创 判断链表是否有环
创建链表,判断链表是否有环 #include<iostream> #include<algorithm> #include<string> #include<queue> using namespace std; class LinkNode{ public: int val; LinkNode *next; LinkNode() :val(0), next(nullptr){} LinkNode(int value) :val(value), ne
2021-08-18 11:22:42
104
原创 层序创建二叉树
层序输入字符串 创建二叉树 层序输出二叉树 示例:输入1 2 3 4 # 5 # # # # # -> 输出[[1][2,3][4,5]] #include<iostream> #include<algorithm> #include<string> #include<queue> using namespace std; class TreeNode{ public: int val; TreeNode *left; TreeNode *
2021-08-17 20:41:39
944
原创 路径之积c++(输出路径节点数量)
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之积等于targetSum 的路径的数目。 #include<iostream> #include<vector> #include<algorithm> using namespace std; class TreeNode { public: int val; TreeNode *left; TreeNode *right; TreeNode() :val(0),left
2021-08-15 15:27:36
138
原创 路径之积c++(输出路径节点)
给一个二叉树和目标值,找出所有从根节点到叶子节点路径总积等于给定目标和的路径。 #include<iostream> #include<vector> #include<algorithm> using namespace std; class TreeNode { public: int val; TreeNode *left; TreeNode *right; TreeNode() :val(0),left(nullptr),right(nullptr){}
2021-08-15 14:57:49
110
原创 路径之积c++(true or flase)
给一个二叉树和目标值,判断是否存在从根节点到叶子节点的乘积等于目标值的路径; #include<iostream> #include<vector> #include<algorithm> using namespace std; class TreeNode { public: int val; TreeNode *left; TreeNode *right; TreeNode() :val(0),left(nullptr),right(nullptr){}
2021-08-15 14:31:17
170
原创 盛最多水的容器
leetcode11. 盛最多水的容器 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49 #inc
2021-08-14 20:34:31
121
原创 展开括号(a(b(c)<3>)<2>d)c++
//有一种固定的字符串速记方式,如a(b)<3>c表示b重复三次, //即abbbc,可能存在嵌套,如a(b©<3>)<2>d表示abcccbcccd, //输入速记形式,输出原本的字符串。 #include <iostream> #include <string> #include<stack> using namespace std; string reverseString(string &s) { //if (s.s
2021-08-14 11:19:01
318
原创 快速排序c++
#快速排序 #include <iostream> #include <vector> using namespace std; int partition(vector<int> &a, int left, int right) { int pivot = a[left]; while (left < right) { while (left<right&&a[right]>pivot) { --right;
2021-08-12 19:42:41
74
原创 归并排序c++
#归并排序 #include <iostream> using namespace std; void merge(int a[], int temp[], int left, int mid, int right) { int m = right - left + 1; int i = left; int j = mid + 1; int k = 0; while (i <= mid && j <= right) { if (a[i] < a
2021-08-12 19:40:49
80
原创 堆排序c++
#堆排序 #include <iostream> #include <queue> using namespace std; //堆排序 //void adjustHeap(int a[], int parent, int len) { // int temp = a[parent]; // int child = 2 * parent + 1; // // while (child <=len ) { // if (child + 1 <= len &&am
2021-08-12 19:31:11
76
原创 2021-08-10
队列从上到下打印二叉树 //bfs打印树节点 #include #include #include using namespace std; class TreeNode { public: int val; TreeNode *left; TreeNode *right; TreeNode(int value):val(value),left(nullptr),right(nullptr){} }; void bfs(TreeNode root, vector<vector> &res
2021-08-10 14:33:59
80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人