自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)

原创 刷Leetcode收获的关键知识与相对应的算法题索引(持续更新中)

set容器不允许有相同键值,可利用此来判断是否有重复元素(map同理)Leetcode 217:存在重复元素排序法可对容器按升序或降序排序可优化解决很多问题Leetcode 217:存在重复元素解决在一个数组中寻找只出现一次的数字(其他数字均出现两次),可用异或黑科技Leetcode 136: 只出现一次的数字单层循环双指针:快慢指针法。每循环一次执行加1操作的是快指针...

2019-07-05 15:58:51 123 1

原创 OC语法之浅谈block

OC语法之浅谈blockblock基本介绍block应用场景block直接使用声明和定义分开声明和定义放一起block作属性block作方法的参数block作返回值完整demo示例block基本介绍block对象是一段代码,和C语言函数类似,都是在一个花括号内的一套指令,但是它没有函数名,相应位置只有一个^ 符号,^ 表示这段代码是一个block对象。下面是一个block示例:^{ NSLog(@"这是一个block语句");}我们可以简单理解为函数指针,即代码块的内存地址。block常用作传

2020-07-28 21:27:40 249

原创 剑指offer 45:把数组排成最小的数

把数组排成最小的数题目描述我的解法1:暴力法我的解法2:自定义比较规则+排序题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。我的解法1:暴力法直接遍历所有可能的结果,找出最小值。具体流程是先用二维数组储存所有可能的排列结果,然后遍历所有结果找出最小值,最后...

2020-05-03 20:46:35 62

原创 C++ 类中使用多线程

做项目的时候,应项目对接方的要求,需要在封装的类中启动线程,于是在定义一个成员函数startWork()负责线程的定义使用std::thread,结果程序报错,程序如下:#include <iostream> #include <thread>#include <windows.h>#include <string>using names...

2020-04-22 12:07:40 367 1

原创 Leetcode 53:最大子序和

目录题目描述我的解法:双层循环暴力法动态规划分治算法贪心算法题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。...

2020-03-20 12:44:55 61 2

原创 C++关于自动构造对象的隐式类型转换

关于C++的隐式类型转换有好几种,这篇博客解释一下其中的一种,就是当形参是对象时自动构造的一个例子。学习时看到一道问答题,问的是请说一说隐式类型转换,看到其中的一个转换是这样的:对于只存在单个参数的构造函数对象构造来说,函数调用可以直接使用该参数传入,编译器会自动调用其构造函数生成临时对象。为了验证一下,写了个测试的demo,代码如下所示:#include <iostream>#...

2020-03-18 18:39:39 64

原创 Leetcode 121:买卖股票的最佳时机

目录题目描述我的解法:两层迭代器循环的暴力法运行超时正确解法:一次遍历,记录每次循环的最小值题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = ...

2020-03-18 18:03:46 36

原创 Leetcode 70:爬楼梯

Leetcode 70:爬楼梯题目描述我的解法:暴力法运行超时其它解法1:对暴力法的优化其它解法2:动态规划其它解法3:斐波那契数其它解法4:直接套斐波那契通项公式题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释:有两种方法可以爬到楼顶。1....

2020-03-16 20:43:38 51

原创 多线程交替工作的一种简单方式,以实现RGB和YUV420的相互转换为例

本篇博文接前篇自己思考出来的一种实现多线程交替工作的方式,给出来一个关于双线程协同工作的一种实际应用场景,实现的是RGB和YUV420的相互转换。主函数启两个线程,其中,一个线程用来读取RGB形式图片,并转成YUV格式数据存到申请的内存中;另一个线程用来读取内存数据,并把YUV格式转成RGB并显示。因为需要先进行线程1的读取转换存储,再进行线程2的读取内存和转换显示,两个线程交替工作,所以用到了前...

2020-03-13 18:51:58 1149 2

原创 自己思考出来的一种实现多线程交替工作的方式

自己思考出来的一种实现多线程交替工作的方式多线程协同工作,一般会用到信号量。但有没有简单点的方式来实现呢?我发现这个不用信号量也是可以实现的(虽然还是推荐信号量…),做法就是加一个标志位,用while循环控制两个线程的阻塞。代码见下:#include <iostream> #include <thread>#include <windows.h>u...

2020-03-13 18:50:24 113

原创 Leetcode 88:合并两个有序数组

Leetcode 88:合并两个有序数组题目描述我的解法其它解法1:直接赋值,不用push_back其它解法2:对解法1的简化其它解法3-5:用到vector自带的api题目描述给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设...

2020-03-13 17:59:30 177

原创 Leetcode 108:将有序数组转换为二叉搜索树

Leetcode 108:将有序数组转换为二叉搜索树题目描述解法1:创建辅助函数迭代解法2:原函数迭代题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面...

2020-03-12 12:46:22 126

原创 C++使用纯虚函数的接口封装以及接口的调用方法

C++使用纯虚函数的接口封装以及接口的调用方法受疫情的影响,本研狗最近一直在家养老,但是,实验室那边的项目突然压下来了,无奈,只好云办公呗。给的任务是对我之前完成的项目做一个封装,对外部提供接口使用。这**就涉及到我知识的盲区了呀,时间还催的挺紧,只好这两天边学边做,终于肝出来了一个初步的成果,做好了空的原型库定义,加上了要求的输入输出参数,封装成了接口。然后想着趁着热乎劲,赶紧把方法总结下来,...

2020-02-23 18:17:37 740 3

原创 Leetcode 102:二叉树的层次遍历

Leetcode 102:二叉树的层次遍历题目描述我的解法:前序遍历思想题目描述给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]...

2020-02-14 11:56:29 103

原创 Leetcode101:对称二叉树

Leetcode101:对称二叉树题目描述我的解法其它解法1:递归其它解法2:利用队列的非递归遍历题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ ...

2020-02-10 11:01:57 57 1

原创 Leetcode 98:验证二叉搜索树

Leetcode 98:验证二叉搜索树题目描述我的解法题目描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \...

2020-02-07 10:48:55 44

原创 Leetcode 104:二叉树的最大深度

Leetcode 104:二叉树的最大深度题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。说明此题与二叉树的遍历有关,关于二...

2020-01-12 21:54:56 73

原创 Leetcode 234:回文链表

Leetcode 234:回文链表题目描述我的解法利用stack先入后出快慢指针+stack题目描述请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?我的解法利用map,做两次循环,第一次循环把链表的va...

2020-01-03 10:56:37 41

原创 Leetcode 206:反转链表

Leetcode 206:反转链表题目描述我的解法一:用map做临时存储我的解法二:后值前插法(我起的名字)迭代法题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?我的解法一:用map做临时...

2019-11-04 15:27:13 51

原创 Leetcode 237:删除链表中的节点

Leetcode 237:删除链表中的节点题目描述解法:替身攻击法我的思考题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:4->5->1->9示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表...

2019-10-17 11:26:21 69

原创 Leetcode 38:报数

Leetcode 38:报数题目描述我的解法递归解法题目描述报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (...

2019-10-15 14:09:01 50

原创 Leetcode 28:实现strStr()

@[TOC](Leetcode 28:实现strStr())题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输...

2019-09-17 11:22:47 48

原创 Leetcode 125:验证回文串

Leetcode 125:验证回文串题目描述我的解答(超出时间限制)别人家的解法分析题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false我...

2019-07-13 10:16:27 45

原创 Leetcode 242:有效的字母异位词

Leetcode 242:有效的字母异位词 题目描述我的解法:用map思考与收获以数组代替map的解法题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只...

2019-07-09 21:37:05 49

原创 Leetcode 36:有效的数独

Leetcode 36:有效的数独题目描述我的解法:利用set特性,将判断分为三个步骤别人家的解法题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数...

2019-07-07 09:55:48 60

原创 Leetcode 283:移动零

Leetcode 283:移动零题目描述我的解法(官方题解没有)官方解法1:空间局部优化官方解法2:空间最优,操作局部优化(双指针)官方解法3:最优解题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次...

2019-07-05 15:43:09 59

转载 C++ STL 迭代器失效问题

之前看《C++ Primier》的时候,也解到在顺序型窗口里insert/erase会涉及到迭代器失效的问题,并没有深究。今天写程序的时候遇到了这个问题。1 莫名其妙的Erase最初我的程序是酱紫的,别说话,我知道这样是有问题的,可这样是最直观的想法 int arr[]={0,1,2,3,4,5,6,7,8,9,10};   vector<int> a(arr,arr+si...

2019-07-05 15:30:44 48

原创 Leetcode 66: 加一

Leetcode 66: 加一题目描述分析我的代码(运行时间秒杀百分之九十多的解答提交)题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: ...

2019-07-05 10:13:41 33

原创 Leetcode 350: 两个数组的交集 II

Leetcode 350: 两个数组的交集 II题目描述我的方法和改进(利用map)我的方法改进题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素...

2019-07-04 21:02:25 66

转载 ubuntu vscode配置C++的 .json文件

ubuntu vscode配置C++的 .json文件1.配置launch.json2.配置1.配置launch.json{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": ...

2019-07-03 14:43:15 549

原创 Leetcode 136: 只出现一次的数字

Leetcode 136: 只出现一次的数字题目描述我的代码解法1:先进行sort排序解法2:利用map(但是我的思路不对,代码见下)解法2:正确地使用map(运行时间和占用内存是硬伤)解法3:用set解法4: 黑科技——异或题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外...

2019-07-02 21:09:39 42

原创 Leetcode 217:存在重复元素

Leetcode 217:存在重复元素题目描述我的代码(暴力法运行超时)别人家的题解解法1:题目描述定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3...

2019-05-28 22:26:11 67

转载 set容器的用法

set容器的用法1.set容器的理解2.实现过程举例1.set容器的理解所有元素都会根据元素的键值自动排序,set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。(set的元素不像map那样可以同时拥有实值(value)和键值(key))。set成员函数列表如下:begin()–返回指向第一个元素的迭代器clear()–清除所有元素count()–返回某...

2019-05-28 22:17:13 184

空空如也

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除