自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 收藏
  • 关注

原创 观察者模式

#include<iostream>#include<list>#include<string>using namespace std;class Subject;class Observer {public: Observer() {} virtual ~Observer() {} virtual void update(Subject* subject) = 0; virtual void update(string content) = .

2020-11-16 20:30:57 176

原创 C/C++编程题刷题:质数对的个数

#include<iostream>using namespace std;bool isPrime(int n) { for (int i = 2; i < n; i++) { if (n%i == 0) return false; } return true;}int main() { int n; cin >> n; int cnt = 0; for (int i = 2; i < n; i++) { if (isPrime(i.

2020-11-07 00:16:54 351

原创 C/C++编程题刷题:多线程交替打印ABC

#include<thread>#include<iostream>#include<mutex>#include<vector>#include<condition_variable>using namespace std;mutex mtx;condition_variable cond;char s[] = { 'A','B','C' };char message = 'A';void handler(int i) .

2020-11-07 00:15:34 457

原创 Mymemmove_memcpy类

#include<iostream>using namespace std;void* mymemcpy(void *dst, const void *src, size_t size) { if (dst == NULL || src == NULL) return NULL; char* psrc; char* pdst; psrc = (char*)src; pdst = (char*)dst; while (size--) { *pdst++ = *psrc+..

2020-11-07 00:08:28 134

原创 MyStringcopy类

#include<iostream>#include<assert.h>using namespace std;int mystrlen(const char* src) { assert(src != NULL); const char* head = src; while (*src != '\0') src++; return (src - head - 1);}char * mystrcopy(char * src, char* dst) { if ..

2020-11-07 00:07:23 124

原创 MyString类

#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<string>using namespace std;class MyString{public: MyString(); MyString(const char* const p); MyString(const MyString & s); ~MyString(); MyString& operator = (const ..

2020-11-07 00:05:48 280

原创

#include<iostream>using namespace std;class MyStack{public: MyStack(int cap) { capacity = cap; Bottom = 0; Top = 0; size = 0; pStack = new int[capacity]; } MyStack() { capacity = 5; Bottom = 0; Top = 0; size = 0; pStack =.

2020-11-07 00:04:25 75

原创 循环队列

#include<iostream>using namespace std;class cycleQueue {private: int *cycleQueueHead; int front; int rear; int size; void resize() { int *temp = new int[size * 2]; int j = 0; for (int i = front; i != rear; i = (i + 1) % size) { tem.

2020-11-07 00:03:37 97

原创 C/C++编程题刷题:topK快排和堆排序的解决方案

#include<iostream>#include<vector>#include<deque>using namespace std;#define random(x) (rand()%x)bool isAsc = false;//堆调整void HeapAdjust(vector<int> &nums, int index, int n) { int leftChild = 2 * index + 1; int righC.

2020-11-06 20:35:24 214

原创 单例模式

问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进行写日志。那么,如何构造一个日志模块的实例呢?难道,每次new一个日志模块实例,写完日志,再delete,不要告诉我你是这么干的。在C++中,可以构造一个日志模块的全局变量,那么在任何地方就都可以用了,是的,不错。但是,我所在的开发部门的C++编码规范是参照Google的编码规范的。全局变量在项目中是能不

2020-08-30 15:57:15 81

原创 C/C++编程题刷题:leetcode415. 字符串相加

415. 字符串相加难度简单252给定两个字符串形式的非负整数num1和num2,计算它们的和。提示:num1和num2的长度都小于 5100 num1和num2都只包含数字0-9 num1和num2都不包含任何前导零 你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式 class Solution {public: string addStrings(string num1, string num2) { ...

2020-08-27 10:03:23 271

原创 C/C++编程题刷题:leecode169. 多数元素

169. 多数元素难度简单708给定一个大小为n的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2class Solution {public: int majorityElement(vector<int>& nums) { ...

2020-08-27 10:03:16 177

原创 C/C++编程题刷题:leetcode 796. 旋转字符串

796. 旋转字符串难度简单93给定两个字符串,A和B。A的旋转操作就是将A最左边的字符移动到最右边。例如, 若A = 'abcde',在移动一次之后结果就是'bcdea'。如果在若干次旋转操作之后,A能变成B,那么返回True。示例 1:输入: A = 'abcde', B = 'cdeab'输出: true示例 2:输入: A = 'abcde', B = 'abced'输出: falseclass Solution {public: b...

2020-08-27 10:03:09 259

转载 C/C++编程题刷题:leetcode 剑指 Offer 41. 数据流中的中位数

剑指 Offer 41. 数据流中的中位数难度困难53如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4]的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。 double findMed.

2020-08-27 10:03:02 173

原创 C/C++编程题刷题:leetcode 20. 有效的括号

20. 有效的括号难度简单1804给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入: "([)]"输出: false示例...

2020-08-27 10:02:56 246

原创 C/C++编程题刷题:leetcode 680. 验证回文字符串 Ⅱ

680. 验证回文字符串 Ⅱ难度简单247给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。class Solution {public: bool checkPalindrome(const string& s, int low, int high) { for (int i = low, j = .

2020-08-27 10:02:46 270

原创 C/C++编程题刷题:leetcode 62. 不同路径 和 63. 不同路径 II

62. 不同路径难度中等649一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -&gt...

2020-08-27 10:02:38 406

原创 C/C++编程题刷题:leetcode 445. 两数相加 II

445. 两数相加 II给你两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 8 -> 0 -> 7/** * De...

2020-08-27 10:02:31 165

原创 C/C++编程题刷题:leetcode 23 合并K个升序链表

23. 合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例

2020-08-27 10:02:20 435

原创 C/C++编程题刷题:leetcode 814. 二叉树剪枝

814. 二叉树剪枝难度中等102给定二叉树根结点root,此外树的每个结点的值要么是 0,要么是 1。返回移除了所有不包含 1 的子树的原二叉树。( 节点 X 的子树为 X 本身,以及所有 X 的后代。)示例1:输入: [1,null,0,0,1]输出: [1,null,0,null,1] 解释: 只有红色节点满足条件“所有不包含 1 的子树”。右图为返回的答案。示例2:输入: [1,0,1,0,0,0,1]输出: [1,null,1,null,1...

2020-08-25 10:10:20 201

原创 C/C++编程题刷题:leetcode 110. 平衡二叉树

110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回true。示例 2:给定二叉树[1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / ...

2020-08-25 10:10:12 170

原创 C/C++编程题刷题:leetcode 958. 二叉树的完全性检验

958. 二叉树的完全性检验给定一个二叉树,确定它是否是一个完全二叉树。完全二叉树的定义如下:若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。(注:第 h 层可能包含 1~2h个节点。)示例 1:输入:[1,2,3,4,5,6]输出:true解释:最后一层前的每一层都是满的(即,结点值为 {1} 和 {2,3} 的两层),且最后一层中的所有结点({4,5,6})都尽可能地向左..

2020-08-25 10:09:58 175

原创 C/C++编程题刷题:leetcode 322. 零钱兑换

322. 零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1...

2020-08-25 10:09:21 549

原创 C/C++编程题刷题:leetcode300. 最长上升子序列

300. 最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是[2,3,7,101],它的长度是 4class Solution {public: int lengthOfLIS(vector<int>& nums) { //dp 表示以nums[i]结尾的最长上升子序列为dp[i] if (.

2020-08-25 10:09:09 199

原创 C/C++编程题刷题:剑指 Offer 34. 二叉树中和为某一值的路径

剑指 Offer 34. 二叉树中和为某一值的路径输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1.

2020-08-25 10:08:43 127

原创 C/C++编程题刷题:leetcode 3. 无重复字符的最长子串

3. 无重复字符的最长子串难度中等4187给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你...

2020-08-25 10:08:32 112

原创 C/C++编程题刷题:leetcode 257. 二叉树的所有路径

257. 二叉树的所有路径难度简单312给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3/** * Definition for a binary tree node. * struct TreeNode { * .

2020-08-25 10:07:51 217

原创 C/C++编程题刷题:leetcode 7. 整数反转

7. 整数反转难度简单2112给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21class Solution {public: int reverse(int x) { if(x/10==0) return x; //平凡情况:若x∈[-9,9],则直接返回其本身 long ..

2020-08-25 10:07:37 155

原创 C/C++编程题刷题:leetcode 92. 反转链表 II

92. 反转链表 II难度中等474反转从位置m到n的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL/** * Definition for singly-linked list. * struct ListNode { * int val; *...

2020-08-25 10:07:02 123

原创 C/C++编程题刷题:leetcode 21. 合并两个有序链表

21. 合并两个有序链表难度简单1219将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...

2020-08-24 12:22:21 277 1

原创 C/C++编程题刷题:leetcode 543. 二叉树的直径

543. 二叉树的直径难度简单447给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3] 或者[5,2,1,3]。/** * Definition for a binary tree node...

2020-08-24 12:22:12 294

原创 C/C++编程题刷题:leetcode 104. 二叉树的最大深度

104. 二叉树的最大深度难度简单673给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。1.dfs/** * Definition for a binary tree node. * struct TreeNode {...

2020-08-24 12:22:00 110

原创 C/C++编程题刷题:leetcode 234. 回文链表

234. 回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} *

2020-08-24 12:21:51 92

原创 C/C++编程题刷题:leetcode344. 反转字符串

344. 反转字符串难度简单269编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是ASCII码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:["H","a","n","n","a","h"]输出:["...

2020-08-24 12:21:40 157

原创 C/C++编程题刷题:leetcode977. 有序数组的平方

977. 有序数组的平方给定一个按非递减顺序排序的整数数组A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= A.length <= 10000 -10000 <= A[i] <= 10000 A已按非递减顺序排序。 class Solution {p..

2020-08-24 12:21:26 245

原创 C/C++编程题刷题:leetcode153. 寻找旋转排序数组中的最小值

153. 寻找旋转排序数组中的最小值难度中等240假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0class Solution {public: int minArray(vector&lt...

2020-08-24 12:20:45 111

原创 C/C++编程题刷题:leetcode81. 搜索旋转排序数组 II

81. 搜索旋转排序数组 II假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,0,1,2,2,5,6]可能变为[2,5,6,0,0,1,2])。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回true,否则返回false。示例1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例2:输入: nums = [2,5,6,0,0,1,2], target = 3输出: fals...

2020-08-24 12:20:33 203

原创 C/C++编程题刷题:440. 字典序的第K小数字

440. 字典序的第K小数字给定整数n和k,找到1到n中字典序第k小的数字。注意:1 ≤ k ≤ n ≤ 109。示例 :输入:n: 13 k: 2输出:10解释:字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。class Solution {public: int findKthNumber(int n, int k) { long long...

2020-08-24 11:10:17 566

原创 C/C++编程题刷题:leetcode 386. 字典序排数

386. 字典序排数给定一个整数n, 返回从1到n的字典顺序。例如,给定n=1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据n小于等于5,000,000。class Solution {public: vector<int> res; vector<int> lexicalOrder(int n) { for(int i=...

2020-08-24 10:42:57 246

原创 C/C++编程题刷题:leetcode 206. 反转链表

206. 反转链表难度简单1174反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next

2020-08-23 10:05:16 171

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除