力扣中的经典模拟题
写在前面
\[\mathbb Z\\
\mathbb N
+\dots+,\dots,\]
日期计算
日期替换
2437. 有效时间的数目;
class Solution {
public:
int countTime(string time) {
if (time.find('?') == string::npos) return 1;
auto h1 = time[0], h2 = time[1];
auto m1 = time[3], m2 = time[4];
int ans1{}, ans2{};
// hour:
if (h1 == '?') {
...
高级数据结构设计力扣题目总结
写在前面
下面的这些数据结构都用到了链表, 可见链表在数据库/缓存等底层构件中的重要作用.
跳表: 数组+链表节点
1206. 设计跳表 - 力扣(LeetCode);(高级数据结构, 数据库常用)
需要设计多级结构以便降低查找的时间复杂度, 相当于在一般链表中采用了二分查找的思想, 空间换时间.
class Skiplist {
static constexpr int level = 8;
struct Node {
int val;
vector<Node*> next;
Node(int _v) : val(_v) {
next.resize(level, nullpt...
C++并发编程实战笔记(一)线程概念与基本控制
写在前面
在C++ 中实现多线程还是很容易的, 不像C的pthreads接口, 下面来总结一下C++多线程的一些基本操作, 包括线程的创建, 合并, 分离, 获取ID等操作, 主要参考了C++并发编程实战(第二版)的第一二章, 这本书应该是C++并发必看的经典了.
另外参考:
std::thread;
一些有用的程序
用于辅助
#include <iostream>
#include <cassert> // 断言
#include <chrono> // 计时
#include <thread> // 线程
using namespace std;
using namespace std::chrono; ...
C++内存模型与程序运行分区
写在前面
作用域
生命周期
内存区域
全局内存
整个文件
应用程序的生命周期
全局区
静态内存
声明它的函数内部
应用程序的生命周期
全局区
自动内存(局部内存)
声明它的函数内部
限制在函数执行时间内
栈区
动态内存
由引用该内存的指针决定
直到内存释放
堆区
内存模型与虚函数
虚表
近来学习和生活的一些思考
时刻激励自己,如果没有动力,那么尝试来看看下面这段话;
如果你不去奋斗,你的代价是什么?
如果你认为教育的成本太高,那你就看看无知的代价;
如果你不去努力奋斗,那你就尝试看看你为贫穷付出的代价,别人能用钱去解决的问题,你将不得不用时间、健康、尊严、甚至生命去解决;
当我们的父母逐渐老去,我们还没有出人头地的时候,你才会发现什么叫无助!大多数人憧憬希望,但是不会为了希望去努力;大多数人讨厌拼命,但是会为了攥在手里的东西去拼命;
所以,为了目标奋斗吧,少年!
对于程序员来说,通过各种经验和实践解决问题的能力才是你的 核心竞争...
C++字符串+和push_back创建字符串的性能比较
写在前面
刷力扣(415. 字符串相加)时候发现这样一个现象:
使用
s1 = static_cast<char>(c) + s1;
要比先push_back, 然后reverse慢很多:
s2.push_back(static_cast<char>(c));
// ..
reverse(s2.begin(), s2.end());
那么问题出在哪呢?
猜测: 第一种方法应该是等号右边先通过重载的加法运算符创建了一份字符串的临时对象, 然后(调用拷贝赋值运算符)赋值给s1, 最后还要销毁临时对象, 这就导致每次都要进行赋值和销毁, 时间成本就上来了..
而第二种都只是原地操作, 对内存的影响应该也只局限于动态扩容了.
测试
#inclu...
共计 462 篇文章,58 页。
您是Zorch的第 个小伙伴
Hits