- 博客(9)
- 收藏
- 关注
原创 一、单例模式
文章目录定义代码版本1版本2版本3版本4版本5版本5定义保证一个类仅有一个实例,并提供一个该实例的全局访问点。单例模式很容易写,但是保证多线程安全的单例模式则不容易。代码版本1// 内存栈区// 内存堆区// 常数区// 静态区 系统释放 // 二进制代码区 class Singleton {public: static Singleton * GetInstance() { if (_instance == nullptr) { _instance = n
2021-07-13 20:14:37 102
原创 设计模式和模式设计原则
文章目录设计模式模式设计原则依赖倒置原则开放封闭原则面向接口编程封装变化点单一职责原则里式替换原则接口隔离原则对象组合优于类继承什么情况下使用设计模式?设计模式设计模式是什么?其实写代码并不是简单的coding而已,同样的一个功能有的人能写得跟一坨屎一样,但好的程序员就能把它实现得非常优雅巧妙,还特别容易移植扩展。虽说千人千面,每个人的代码风格都不一样,但是高质量的代码总是有套路可循。在哪种典型情况下代码怎么写比较好,我想这就是设计模式定义的范畴。首先看一个例子:这几种写法都能实现多态,但是显
2021-07-13 20:04:02 144
原创 Problem 11-Largest product in a grid
题目11题解#include <iostream>using namespace std;int num[30][30], ans;int dirx[4] = {-1,0,1,1};int diry[4] = {1,1,1,0};int main(){ for(int i=5;i<25;i++) for(int j=5;j<25;j++){ cin >> num[i][j]; }
2021-06-04 12:31:21 77
原创 Problem 8-Largest product in a series
题目8题解用滑动窗口一点一点往后挪动,新加入的乘上,掉出窗口的除掉,但是要注意:以上数据中有很多0,一旦乘以0结果就是0了,所以遇到0是不能直接网上乘的,而且因为要求必须是连续的数字相乘,所以包含数字0的窗口的乘积也是不能去更新最终结果的。#include <iostream>using namespace std;char str[1005];int main(){ long long ans = 0, now = 1, zero_cnt = 0; cin &
2021-06-03 17:48:59 99
原创 Problem 6-Sum square difference
题目6题解一趟遍历,算出结果#include <iostream>int main(){ int sum = 0, psum = 0; for(int i=1;i<=100;++i){ psum += i*i; sum += i; } std::cout << sum * sum - psum << std::endl; return 0;}...
2021-06-03 16:50:06 80
原创 Problem 4-Largest palindrome product
题目4题解#include <iostream>bool isPalindrome(int x){ int raw = x, t = 0; while(x){ t = t*10 + x%10; x/=10; } return t == raw;}int main(){ int ans = 0; for(int i=100;i<1000;++i){ for(int j=i;j&l
2021-06-03 16:42:37 68
原创 Problem 2-Even Fibonacci numbers
题目2题解傻瓜方式可以一趟遍历,用一个大的vector把所有的斐波那契数存下来, 边存边累加符合条件的数,遍历结束,结果就出来了。这道题可以把空间复杂度由O(N)优化到O(1),用两个变量存中间状态即可。#include <iostream>int main(){ long long ans = 0; int a = 1, b = 2; while(b<4000000) { if(b % 2 == 0){ ans
2021-06-03 16:19:34 106
原创 Problem 1-Multiples of 3 and 5
这里写自定义目录标题题目1题解傻瓜方案:优化版本:题目1题解傻瓜方案:一趟遍历,符合条件的累加起来,时间复杂度为O(N)。#include <iostream>int main(){ int sum = 0; for(int i=1;i<1000;i++){ if(i % 3 == 0 || i % 5 == 0){ sum += i; } } std::cout << s
2021-06-03 16:11:46 89
原创 Webbench源码剖析
Webbench源码剖析Web Bench是一个网站压力测试的工具。其最后更新时间是2004年,已经十年多了。其源代码总共才不到600行,全部使用C语言编写,最多可以模拟3万个并发连接。真可谓是简洁代码的代表之作。
2016-08-31 10:36:55 557
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人