[置顶]关于博主

52coder.net是很早之前与同学一起脑洞的域名:中文名可以叫做-我爱程序员。我记得那年冬天孟非主持的非诚勿扰很火,我信誓旦旦的说以后要做一个网站,专门去为程序员解决个人问题,于是就有了现在的这个域名52coder.net。当时比较热衷于论坛,折腾过Discuz,在读书时折腾过,最多的时候同时在线人数超过1000,论坛的注册人数达到了2w左右,现在却早已忘记当初因为什么原因关闭论坛。

博客开始于2017年6月,希望博客用来记录自己的学习过程,渐渐通过几个月的时间喜欢上写点东西,目前学习的内容主要有C语言、数据结构、Linux系统编程、算法、LeetCode等,如果针对文章中的内容有任何疑......

UNIX/Linux系统管理技术手册

书架上的这块大部头书在5.1的时候终于有时间来学习了,本文将长期更新,记录UNIX/Linux系统管理技术手册学习中的疑问与解答。该书在豆瓣评分颇高,UNIX/Linux系统管理技术手册.勘误表在本文最后,如有疑问欢迎留言讨论。

笔记中实际操作的系统来自于ubuntu,运行在一款古董级的hp笔记本上,在Macbook Pro中运行了一台centos7虚拟机,电脑卡的时候关闭该虚拟机使用hp笔记本中的虚拟机。

[LeetCode C++实现]704. Binary Search

经典面试题二分查找,当年校招面试经常遇到,先用最简单最直接的方法AC。

class Solution {

public:

int search(vector<int>& nums, int target) {

int start = 0,end = nums.size() - 1;

while(start <= end)

{

int mid = (start + end) / 2;

if(nums[mid] == target)

return mid;

else if(nums[mid] < target)

start = mid + 1;

else

en......

[LeetCode C++实现]233. Number of Digit One

233. Number of Digit One

老规矩,上来先暴力破解,一眼看上去非常简单,1分钟写出答案,最后Time Limit Exceeded.

class Solution {

public:

int countDigitOne(int n) {

int res = 0;

for(int i = 1;i <= n;i++)

{

res += cal_digit(i);

}

return res;

}

private:

int cal_digit(int n){

int cnt = 0;

while(n)

{

if(n % 10 == 1)

cnt++;

n /= 10......

[LeetCode C++实现]69. Sqrt(x)

69. Sqrt(x)

暴力破解求解:使用最直观的解法,性能也符合预期,非常之慢。

class Solution {

public:

int mySqrt(int x) {

int ans = 0;

for(int i = 1;i <= x;i++)

{

//avoid overflow

if(i > x / i)

return ans;

ans = i;

}

return ans;

}

};

Runtime: 68 ms, faster than 5.95% of C++ online submissions for Sqrt(x).

Memory Usage: 6......

[LeetCode C++实现]172. Factorial Trailing Zeroes

非常有意思的一道题目,读研的时候当家教,在一个小学奥数辅导班上见到过这个题,先介绍阶乘的概念,然后问结果中有多少个0,很多年过去了,再看这道题感觉很有缘分。

class Solution {

public:

int trailingZeroes(int n) {

int cnt = 0;

while(n) cnt += n/5,n /= 5;

return cnt;

}

};

结果中有0,实际是判断5的个数,如果n > 25,实际上还要判断包含多少个25,因为25中包含两个5,原来加过一个,还需要再加一次,如果n >125,那么还要再加第三次,依次类推。

[LeetCode C++实现]204. Count Primes

204.Count Primes

这么一道求素数个数的简单题目,首先尝试最简单的暴力破解法:

class Solution {

public:

int countPrimes(int n) {

int cnt = 0;

for(int i = 2;i < n;i++)

{

if(isPrime(i))

cnt++;

}

return cnt;

}

private:

bool isPrime(int n) {

for(int i = 2;i <= n/2;i++)

{

if(n % i == 0)

return false;

}

return true;

}

};

执......

[LeetCode C++实现]326. Power of Three

326.Power of Three

while循环解法

class Solution {

public:

bool isPowerOfThree(int n) {

while(n > 1)

{

if(n % 3 != 0)

return false;

n /= 3;

}

return (n == 1) ? true:false;

}

};

循环解法更优解法:

class Solution {

public:

bool isPowerOfThree(int n) {

if(n < 1)

return false;

while(n % 3 == 0)

{

n......

[LeetCode C++实现]15. 3Sum

15.3Sum

3sum一道非常经典的题目,第一次做,以前只做了2Sum,老规矩先上暴力破解解法:

class Solution {

public:

vector<vector<int>> threeSum(vector<int>& nums) {

int n = nums.size();

sort(nums.begin(),nums.end());

set<vector<int>> result;

vector<vector<int>> res;

for(int i = 0;i < n ......

[LeetCode C++实现]92. Reverse Linked List II

92. Reverse Linked List II

自己吭哧吭哧花了接近40分钟写完代码,AC后从评论区看到的解法,新增一个结点,方便处理从开头反转的情况,不用单独判断m==0进行特殊处理。

/**

* Definition for singly-linked list.

* struct ListNode {

* int val;

* ListNode *next;

* ListNode() : val(0), next(nullptr) {}

* ListNode(int x) : val(x), next(nullptr) {}

* Li......