设计模式-单例模式
发表于
更新于
本文字数:
743
阅读时长 ≈
3 分钟
单例模式
0、静态函数变量版本
利用C++特性
1 | template <class T> |
1、普通版本(高并发效率不足)(安全)
线程安全智能指针
发表于
更新于
本文字数:
235
阅读时长 ≈
1 分钟
线程安全的share指针
1. 代码部分
1 | #include <iostream> |
2. 参考资料
二分变种
发表于
更新于
本文字数:
547
阅读时长 ≈
2 分钟
540 有序数组中的单一元素
我的二分
- 与右侧配对失败:
- 右侧是奇数:
l = m + 1 - 右侧是偶数:
r = m
- 右侧是奇数:
- 与右侧配对成功:
- 右侧是奇数:
l = m + 2 - 右侧是偶数:
r = m - 1
- 右侧是奇数:
1 | class Solution { |
官方的全数组二分查找
旋转数组二分
发表于
更新于
本文字数:
1.4k
阅读时长 ≈
5 分钟
1 寻找峰值
找到任意一个峰值,你可以假设 nums[-1] = nums[n] = -∞ 。
1.1 二分法(不怎么优雅)
1 | class Solution { |
1.2 二分法(优雅)
链表去重
发表于
更新于
本文字数:
468
阅读时长 ≈
2 分钟
83 删除排序链表中重复元素
前序遍历
1 | class Solution { |
后续遍历
1 | class Solution { |
最长子序列子数组
发表于
更新于
本文字数:
665
阅读时长 ≈
2 分钟
1143 最长公共子序列
- 子序列是可以不连续的
- dp[i][j]的含义是text1[:i]和text2[:j]最长公共子序列,这个最长公共子序列不一定包含text1[i]和text2[j]
1 | class Solution { |
718 最长重复子数组
- 子数组是连续的
- dp[i][j]的含义是以nums1[i]结尾的nums1[:i]和以nums2[j]结尾的nums2[:j]的最长重复子数组
子集组合排列
发表于
更新于
本文字数:
1.6k
阅读时长 ≈
6 分钟
字符串相乘
发表于
更新于
本文字数:
472
阅读时长 ≈
2 分钟
43 字符串相乘
两数A位和B位,相加后位数最大为max(A, B)+1;相乘后最大位数为A+B
1.1 常规法
将两个串的指针位置m和n、进位c统一放入while循环,代码就会很优美。 代码可以继续优化速度存储:addtion函数改为原地相加,但是会破坏代码的逻辑性,就不改了。
1 | class Solution { |
二叉树最大和
发表于
更新于
本文字数:
543
阅读时长 ≈
2 分钟
1. 124 二叉树中的最大路径和
1.1 两个递归的笨方法
1 | class Solution { |
1.2 一个递归的好方法
1 | class Solution { |