[置顶]关于博主

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

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

[LeetCode C++实现]33. Search in Rotated Sorted Array

以前总觉得二分查找简单,刷了一些题目后再也不觉得二分查找简单了,各种边界条件,简直要了老命,但对这道题而言,我们只要找到某半段有序数组即可,如果target恰好位于其中,那么问题就转换为普通的二分查找。下面是两种形式的写法:

class Solution {

public:

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

int l = 0,r = nums.size() - 1;

while(l <= r)

{

int mid = l + (r - l)/2;

if(nums[mid] == target) return......

日常开发笔记总结(十)

面试总结专题

用户态到内核态转换

操作系统的进程空间可分为用户空间和内核空间,它们需要不同的执行权限。其中系统调用运行在内核空间。

从用户态切换到内核态主要有如下几种方式:

1.系统调用

在电脑中,系统调用(英语:system call),指运行在用户空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供用户程序与操作系统之间的接口。大多数系统交互式操作需求在内核态运行。如设备IO操作或者进程间通信。

2.异常

页缺失(英语:Page fault,又名硬错误、硬中断、分页错误、寻页缺失、缺页中断、页故障等)指的是当软件试图访问已映射在虚拟地址空间中,但是目前并未......

[LeetCode C++实现]1636. Sort Array by Increasing Frequency

无脑使用unordered_map来保存数字出现次数,然后按照出现次数排序,如果出现次数相等,则数值大的排在前面。

class Solution {

public:

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

unordered_map<int,int> cnt;

for(auto num:nums){

cnt[num]++;

}

sort(nums.begin(),nums.end(),[&](int a,int b){

return cnt[a] == cnt[b] ? a>......

[LeetCode C++实现]25. Reverse Nodes in k-Group

非常经典的链表逆序题目:

/**

* Definition for singly-linked list.

* struct ListNode {

* int val;

* ListNode *next;

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

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

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

* };

*/

class Solution {

public......

[LeetCode C++实现]47. Permutations II

class Solution {

public:

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

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

vector<vector<int>> res;

permuteUnique(nums,0,res);

return res;

}

private:

void permuteUnique(vector<int> nums,int begin,vector<vector<int>......

[LeetCode C++实现]59. Spiral Matrix II

class Solution {

public:

vector<vector<int>> generateMatrix(int n) {

vector<vector<int>> ans(n,vector<int>(n,0));

int num = 1;

//设定访问边界

int up = 0,down = n-1,left = 0,right = n -1;

while(true)

{

//从左向右访问

for(int i = left;i <= right;i++)

ans[up][i] = num++;

if(++up &......

[LeetCode C++实现]54.Spiral Matrix

class Solution {

public:

vector<int> spiralOrder(vector<vector<int>>& matrix) {

int m = matrix.size(),n = matrix[0].size();

vector<int> ans;

//设定访问边界

int up = 0,down = m -1,left = 0,right = n -1;

while(true)

{

//从左向右访问

for(int i = left;i <= right;i++)

ans.push_back(ma......

[LeetCode C++实现]103. Binary Tree Zigzag Level Order Traversal

最开始使用BFS代码如下:

/**

* Definition for a binary tree node.

* struct TreeNode {

* int val;

* TreeNode *left;

* TreeNode *right;

* TreeNode() : val(0), left(nullptr), right(nullptr) {}

* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}

* TreeNode(int x, TreeNode *left,......

[LeetCode C++实现]415. Add Strings

首先使用最直观 最ugly的代码AC,根据失败的case,AC的代码如下:

class Solution {

public:

string addStrings(string num1, string num2) {

int m = num1.size(),n = num2.size();

int carry = 0;

string res;

while(m > 0 && n > 0)

{

int num = num1[m-1]-'0'+num2[n-1]-'0'+carry;

carry = 0;

if(num >= 10)

{

carry = 1;......