1 爱编程的小屁孩

尚未进行身份认证

暂无相关描述

等级
博文 117
排名 4w+

多线程、多进程、互斥锁

因为一个进程内的线程共享一个页目录项,所以不同的线程运行在不同的核上的时候,读取同一个虚拟地址时,对应的物理地址是一致的,所以可能产生冲突!所以所谓的各种模型,加的锁应该就是为了解决这些问题吧多进程就没这种问题,但是不同进程数据共享就很麻烦了,因为每个进程有自己的页目录项,即使虚拟地址一样,映射的物理内存也是可能不一样的。...

2019-07-15 15:50:25

并发与并行的区别

迄今为止,看到的最好解释:1.你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。2.你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发;3.你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。并发的关键,你有处理多个任务的能力,不一定要同时。并行的关键,你有同时处理多个任务的能力。所以,我认为他们最关键的点就...

2019-07-15 15:26:01

堆排序(heap_sort)

一、学习要点:1.什么是堆?a.完全二叉树;b.子树满足根节点数值小于左右子节点数值,为最小堆;满足根节点数值大于左右子节点数值,为最大堆;2.怎么维护堆的结构:a.每一个子树都应该维护堆结构;b.自下而上维护堆的结构;【(5,6,3,7,8)至上而下的维护,不能将最大的值放到最前头;】3.堆排序:不断的构建完整的堆结构;将最大的元素arr[0]与arr[size-1]进行交换;对...

2019-07-03 18:46:40

快速排序(quick sort)

一、学习要点:1.利用递归分治的思想;2.利用挖坑的思想,调整数组左边的元素一直小于某一个数,数组右边的数一直大于某一个数;3.详细原理说明:https://blog.csdn.net/MoreWindows/article/details/6684558二、代码#include<stdlib.h>#include<iostream>singnamespa...

2019-07-01 17:22:19

手撕希尔排序

一、学习要点:1.核心思想插入排序对小而有序的数组具有很快的排序效率;2.对数组进行不断分组排序,充分利用插入排序的优势;二、代码实现:#include<stdlib.h>#include<iostream>usingnamespacestd;voidshell_sort(inta[],intn){ intgap=n/2,i,j,k; for...

2019-07-01 15:53:17

插入法排序

一、学习要点:1.直接插入的核心思想:将给定数组看成是有序表和无序表组成;开始时有序表只有1个元素,无序表包含n-1个元素,排序过程是每次从无序数组中抽取一个元素,把它插到有序数组中的适当位置,最后形成新的有序表;2.首先找到应该插入的位置,插入位置之后的所有元素向后移位,移位之前要插入数据及时保存;3.为防止移位后的数据覆盖问题,要移位的所有元素从最后移位开始;二、代码:#includ...

2019-06-30 20:18:00

动态数组的定义和声明(c++)

动态数组的定义和声明:https://blog.csdn.net/singebogo/article/details/70477737

2019-06-29 10:31:20

Find First and Last Position of Element in Sorted Array

一、求target在有序数组nums中出现的最小下标和最大下标组成的数组。否则返回{-1,1}。二、代码classSolution{public: int[]searchRange(int[]nums,inttarget){ intlen=nums.length; int[]result=newint[]{-1,-1}; intlow=0,high=len-1;...

2019-06-28 19:47:10

First Missing Positive

一、学习要点:这篇博客讲的比较好:https://www.cnblogs.com/fstang/p/3754549.html不断填坑挖坑,填坑是用应有的值,挖去不匹配的值;二、代码:classSolution{ intfirstMissingPositive(intA[],intn) { for(i=0;i<n;i++) { if(A[i]==i+1) ...

2019-06-28 19:00:37

颜色排序(Sort Colors)

一、学习要点:1.定义red指针指向开头位置,blue指针指向末尾位置;2.从头开始遍历原数组,如果遇到0,则交换该值和red指针指向的值,并将red指针后移一位。若遇到2,则交换该值和blue指针指向的值,并将blue指针前移一位。若遇到1,则继续遍历;二、代码:classSolution{public: voidsortColors(vector<int>&amp...

2019-06-28 16:18:32

链表反转2(Reverse Linked List II)

一、学习要点:0.流程简述:1->2->3->4->5->null1->3->2->4->5->null1->4->3->2->5->null由此我们可以看出来,总共需要n-m步即可,第一步是将节点3放到节点1的后面,第二步将节点四放到节点1的后面。很有规律的操作,刚开始,pre指向结点1,c...

2019-06-28 15:24:26

判断一颗二叉树是否为二叉搜索树(Validate Binary Search Tree)

一、学习要点:利用二叉搜索树的中序遍历为递增数组的性质;二、代码:voidmiddle(node*root,vector<int>&inorder){ if(root==NULL) { return; } middle(root->left,inorder); inorder.push_back(root->value); middle...

2019-06-28 10:55:24

链表中是否存在环的问题,及环入口在链表中位置(Linked List Cycle II)

一、学习要点:1.快慢指针法,存在链表环的话,两指针肯定会相遇;2.入口位置由两快慢指针相遇时,改变慢指针指向表头,和慢指针等速前进,再次相遇的地点决定;3.讲的比较好的一个博客:https://blog.csdn.net/willduan1/article/details/50938210二、代码:structListNode{ intval; ListNode*next;...

2019-06-28 10:09:38

反转链表(ReverseList)

一、学习要点:1.改变指针的指向即可,两个结点之间的关系;二、代码:structListNode{ intval; structListNode*next; ListNode(intx):(val(x),next(NULL)){};}classSolution{public: ListNode*ReverseList(ListNode*pHead){ L...

2019-06-27 22:03:11

链表中位数(Middle of the Linked List)

一、学习要点1.链表知识的回顾;2.链表结点数组;二、代码classSolution{publicListNodemiddleNode(ListNodehead){ListNode[]array=newListNode[100];intcount=0;while(head!=null){array[count++]=head;head=...

2019-06-27 21:00:21

图像倒转90度(Rotate Image)

一、学习要点0.在原图像矩阵上进行操作;1.旋转90度,等于将图像对折,然后左右对调;2.vector矩阵的声明和赋值;二、代码学习:#include<iostream>#include<stdlib.h>#include<vector>#include<algorithm>classSolution{public: voi...

2019-06-27 20:22:40

用哈希桶实现错位字组的分类(Group Anagrams)

一、学习要点:1.map和unordered_map的区别;2.哈希桶的使用;二、代码:classSolution{public: vector<vector<string>>groupAnagrams(vector<string>&strs) { vector<vector<string>>res;...

2019-06-27 10:50:33

C语言中atoi()函数的用法

C语言中atoi()函数的用法一、学习要点:1.intatoi(constchar*str)把参数str所指向的字符串转换为一个整数;二、代码#include<stdio.h>#include<stdlib.h>#include<string>intmain(){ intval; charstr[20]; strcp(str,"...

2019-06-22 21:02:23

KMP的c语言实现和学习

一、学习要点:1.KMP算法思路了解:https://www.bilibili.com/video/av3246487?from=search&seid=110095447506325807402.KMP完整代码实现视频:https://www.bilibili.com/video/av16828557/?spm_id_from=333.788.videocard.23.完整代码实...

2019-06-19 21:47:26

罗马数字转阿拉伯数字

一、学习要点:1.运用递归的思想,找出罗马字符串中最大的元素,对左边的处理是减去,对右边的处理是加上;递归头是字符串只剩下一个元素时,或者右边的下标小于左边的下标;二、代码:#include<stdlib.h>#include<stdio.h>intsingle_r2i(charch){chars1[7]={'I','V','X','L','C'...

2019-06-19 10:18:57
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。