C/C++
文章平均质量分 51
lx127372
数字图像处理
展开
-
自旋锁,信号量和互斥锁
对于同步的方法,最基础的就是原子操作,他是其他同步方法的基石。原子操作可以保证指令以原子的方式去执行(执行过程不被打断)。但是,不可能每个临界区都可以用简单的原子操作。很多临界区尽可能跨越多个函数,简单的原子操作也无能为力,所以就需要更复杂的同步方法,锁来提供保护。1. 自旋锁自旋锁最多只能被一个线程所持有。如果一个执行线程试图获得一个被已经持有的自旋锁,那么该线程就会一直进行忙循环等待锁重新可用。也就是说自旋锁使得请求它的线程在等待重新可用的时候自旋(特别浪费处理器的时间)。这种行为是自旋锁的要点。所原创 2021-10-04 20:11:21 · 489 阅读 · 0 评论 -
leetcode刷题笔记--二分法
记录一下,方便复习leetcode 33/*假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2:输入: n原创 2020-08-26 16:15:52 · 161 阅读 · 0 评论 -
记录一次ubuntu18.04安装 vscode并且配置C++调试环境
ubuntu18.04安装 vscode并且配置C++调试环境 安装vscode安装插件并配置安装vscode我是直接在桌面上找到应用中心装的就是这个图标,进去直接搜索Visual Studio Code,然后直接安装就好了。当然也可以去官网下在.deb文件 然后 sudo dpkg -i xxx.deb安装安装插件并配置在搜索里面搜索C++,然后安装了C/C++和 C/C++ Compile run如果想要中文也可以搜索Chinese变成中文的。然后建立一个文件夹,这个文件夹里面写你的原创 2020-07-10 23:34:15 · 5367 阅读 · 1 评论 -
leetcode刷题笔记——分治
leetcode 241这个题改了几次也看了题解,重点复习/*给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: "2-1-1"输出: [0, 2]解释:((2-1)-1) = 0(2-(1-1)) = 2*//*分治 以符号分成左右两边 然后分别对左右两边递归*/#include<iostream>#include<strin原创 2020-07-07 09:49:25 · 230 阅读 · 0 评论 -
leetcode刷题笔记-树2
leetcode 101:/*给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/symmetric-t原创 2020-06-21 14:52:52 · 184 阅读 · 0 评论 -
leetcode刷题笔记-树1
方便之后复习,记录一下leetcode上有关于树的几道题先是树的前序遍历、中序遍历、和后序遍历分别是leetcode上144、94、145前序遍历就是先根结点 – 左子树 – 右子树中序遍历就是左子树 – 根结点 – 右子树后序遍历就是左子树 – 右子树 --根结点代码:递归方法 struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), le原创 2020-06-13 10:03:49 · 245 阅读 · 0 评论 -
Leetcode刷题笔记-滑动窗口
记录一下在leetcode上刷的滑动窗口的几道题,方便后边复习。解析都放在代码里注释。leetcode 15:/*给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum*//*用排序加双指针,这个题主要是去重*/#inc原创 2020-05-31 16:49:14 · 333 阅读 · 0 评论 -
ALL in ALl
最近一直没怎么上博客,今天就写到题吧。题目描述:给定两个字符串s和t,请判断s是否是t的子序列。即从t中删除一些字符,将剩余的字符连接起来,即可获得s。输入描述:包括若干组测试数据。每组测试数据由两个ASCII码的数字和字母串s和t组成, s和t的长度不超过100000。输出描述:对每组测试数据,如果s是t的子序列则输出Yes;,否则输出No。样例输入:sequence subse...原创 2019-03-12 23:25:03 · 517 阅读 · 0 评论 -
简单排序算法
记一下学习的三种简单排序算法冒泡排序冒泡排序也算是最经典的了,也是比较简单的,就是将相邻的两个相比较,直接上代码吧:#include<stdio.h>void bubblesort(int a[],int n){ int i,j,temp,count1=0,count2=0,flag; flag=1; for(i=0;i<n-1&&flag;...原创 2019-02-07 21:38:38 · 245 阅读 · 0 评论 -
建立单链表并找到中间数
题目:建立单链表并找到中间数普通方法就是先遍历一遍链表知道了单链表的长度N,然后再从头找到N/2时候的数。这种方法时间复杂度为O(N+N/2)=O(3N/2)。在优化一下这个方法,可以利用快慢指针,也就是设置两个指针,然后快的一次移动两个,慢的一次移动一个位置。总体代码(C语言):#include<stdio.h>#include<stdlib.h>#includ...原创 2019-01-02 11:49:28 · 486 阅读 · 0 评论 -
递归题
用递归计算n个人中选择k个人组成一个委员会的不同组成。 分析: 由n个人里面挑选k个人的组合数=有n-1个人里面选k个人+由n-1个人里选k-1个组合数。 递归推到当n=k或者k=0时结束,因为当n=k或者k=0的时候只有一种组合数。 代码:# include <iostream>using namespace std;int comm(int n,int k){...原创 2018-08-21 00:09:17 · 205 阅读 · 0 评论