自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 回调的介绍以及使用(以kotlin为例)

回调的介绍以及使用(以kotlin为例)什么是回调?案例回调的基本构成什么是回调?先来看一下维基百科的解释:在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过参数将函数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。嗯。每个人我都认识,为什么连在一起就不认识了呢…算了算了,先不管这个定义了,直接从案例出发吧,这样更容易理解一些。案例假设现在有这样一个场景,我需要给用户

2021-08-05 10:02:36 1353

原创 kotlin用法总结(遇到不会的语法才记录)

kotlin用法总结(遇到不会的语法才记录)?的用法作用域编程用法let的使用?的用法?表示是否可以为空比如定义变量val a:Int = null //报错val a:Int? = null //正确如果值出现空后,需要采取一些行动,可以这么写val name = a?:return// 这个表示将a的值赋值给name,如果a为空,直接退出函数作用域编程用法let的使用我也不太清楚这是个啥,直接上实例了,这种作用域方法主要是为了简化代码。假如我有这样一个需求,就是新建一个对象,

2021-07-13 10:09:27 156

原创 intellij idea开发插件的入门demo(可以做安卓插件)

intellij idea开发插件的入门demo开发环境环境配置最近,由于项目需要,需要开发安卓插件。但是对于我一个刚入坑的新人来说还是走了不少弯路。因此,我再这里记录一下开发的过程,既是为了自己以后可以快速开发,也是为了让大家少走些弯路。(注:我是在Mac环境下进行的开发,如果和Windows有些出入,还请看看其他教程)开发环境先去官网下载intellij idea,专业版和社区版都可以用,我这里用的是社区版。安装完后进入环境配置阶段。环境配置如果你是想新建一个程序并让他成功运行,那你需要

2021-07-09 10:24:43 427

原创 LeetCode LCP 07. 传递信息

LeetCode LCP 07. 传递信息题目描述解决方案深度优先搜索广度优先搜索动态规划题目描述解决方案这道题竟然是一道简单题???我直接裂开,滚去睡大觉了。这道题比较经典,有三种方法可以解决这道题目。深度优先搜索我们先来分析一下这道题目,这道题目其实就是在有向图中找到经过 kkk 步到达点 n−1n-1n−1 的数目,并且该题的节点可以循环访问。所以这道题的解决步骤还是很明确的,第一步建图,第二步进行深度遍历。建图代码如下:vector<vector<int>&gt

2021-07-03 21:43:07 137

原创 LeetCode 852. 山脉数组的峰顶索引

LeetCode 852. 山脉数组的峰顶索引问题描述解决方案二分法问题描述解决方案二分法我们先来说一下二分搜索常用的模板,一般有两种第一种:int biDivide(vector<int>& arr) { int n = arr.size(); int left = 0, right=n-1; int ans; while(left<=right){ int mid = (lef

2021-06-15 09:30:46 71

原创 LeetCode 1449. 数位成本和为目标值的最大数字

LeetCode 1449. 数位成本和为目标值的最大数字题目描述解决方法动态规划题目描述解决方法动态规划从题目中我们可以分析得出,要想找到较大的数字,那么这个数字的位数一定要多,也就是4位数字要大于3位数字,另一个是大的数字要排在前面,例如7772一定大于2777。按照这个思路,该问题可以拆成两个问题:一个是能否找到数字负载和为targettargettarget的组合,且这个组合所包含的数字数目最多;另一个是如何记录中间的组合数。这个问题可以看做是另类的背包问题,即总体负载为targett

2021-06-14 14:35:23 204

原创 LeetCode 278. 第一个错误的版本

LeetCode 278. 第一个错误的版本问题描述解决方法二分搜索问题描述解决方法二分搜索这其实是一道非常简单的题目,我主要记录一下这道题特殊的二分搜索方式。普通的二分搜索是这样的,一般是从一个有序数组中找到是否存在一个值,一般的操作方法是初始规定left=0,right=n−1left=0,right=n-1left=0,right=n−1,然后计算mid=(left+right)/2mid=(left+right)/2mid=(left+right)/2,更新的时候按照left=mid+1

2021-06-13 10:36:23 65

原创 Leetcode 518. 零钱兑换 II

Leetcode 518. 零钱兑换 II题目描述解决方案题目描述解决方案

2021-06-10 21:41:19 106

原创 LeetCode 494. 目标和

LeetCode 494. 目标和题目描述解决方法方法一 暴力法方法二 动态规划题目描述解决方法方法一 暴力法这道题目可以使用回溯法做,就是对数组中每个数前分别加上正号和负号进行遍历即可,时间复杂度为O(2n)O(2^{n})O(2n)class Solution {public: int count=0; int findTargetSumWays(vector<int>& nums, int target) { dfs(nums, 0,

2021-06-07 11:01:01 72

原创 LeetCode 321. 拼接最大数

LeetCode 321. 拼接最大数问题描述解决思路问题描述解决思路我们可以用一句话来描述我们的解决思路,即“在两个数组中分别找出长度为a和b的最大递减子序列,a和b的和为k,之后将两个最大递减子序列合并”。要实现我们这个思路,需要实现以下几个模块的代码:从数组中找出固定长度的最大递减子序列合并两个子序列可以比较两个子序列的大小从数组中找出固定长度的最大递减子序列 vector<int> getSubMaxSeq(vector<int>& nu

2021-06-05 22:29:00 171

原创 Leetcode 523. 连续的子数组和

Leetcode 523. 连续的子数组和问题描述解决思路问题描述解决思路依旧是前缀和 + 哈希表不过这个问题需要引入同余定理即(a−b)%m=0(a-b) \% m = 0 (a−b)%m=0与a%m=b%ma\%m=b\%ma%m=b%m等价除此之外,我们用map来记录中间每个前缀和求余以及对应前缀和最后的下标,下标只需要保存最小的那个就行代码如下:class Solution { public boolean checkSubarraySum(int[] nums,

2021-06-02 09:37:04 65

原创 leetcode 652. 寻找重复的子树

leetcode 652. 寻找重复的子树题目描述解决方案题目描述解决方案使用序列化的方式解决一种朴素的方法是,将每个节点为根的子树都保存下来,之后进行比较就可以得到最终的结果。但是保存如何保存一棵树是一个难点。一种解决方法是我们将树的值按照先序遍历的的方式保存到字符串中,就是序列化。有了这个概念之后,我们就可以将每个子树的序列化结果保存到哈希表中,通过比较子树序列化的结果来找到重复的子树。我们可以使用递归的方式进行树的序列化,并在递归的过程中保存从叶子到根的子树序列化值,可以减少计算重复的次

2021-05-31 16:53:30 94

原创 LeetCode 1074. 元素和为目标值的子矩阵数量

LeetCode 1074. 元素和为目标值的子矩阵数量题目描述解决方法题目描述解决方法使用前缀和 + 哈希表的方式解决对于这种复杂的问题,我们可以对问题进行分解,因为我们之前做过一道一位数组的题目https://leetcode-cn.com/problems/subarray-sum-equals-k/所以我们可以考虑能否将问题化归到我们已知的问题上。对于二维矩阵的块的加和,我们可以将这个步骤分解为两个步骤,先对列进行加和,在对行进行加和。对于列的加和,我们在列上找两个端点 i 和 j

2021-05-30 21:06:25 111

原创 算法题目中的小trick

算法题目中的小trick求二进制表示中最低位方法一方法二求二进制表示中最低位方法一n&(n−1) n \& (n - 1) n&(n−1)方法二n&(−n) n \& (-n) n&(−n)

2021-05-30 09:59:07 88

原创 LeetCode 560. 和为K的子数组

LeetCode 560. 和为K的子数组问题描述解决思路方法一 朴素暴力法方法二 将子数组求和时间复杂度优化到O(n)方法三 前缀和 + 哈希表优化问题描述解决思路方法一 朴素暴力法分析本文题目可知,我们首先要找到数组中所有连续子数组的可能情况,之后对每一种可能求和,然后和k的值进行比较,如果两者相等,那么最后的统计数目就要加1。为了实现这个目标,我们可以执行以下几个步骤:确定数组左端的端点i确定数组右端的端点j从[i,j]中逐个选择k,求[i,k]之间的和最左子数组和使用这种方法

2021-05-29 17:30:21 132

原创 Linux各种指令汇总

sudo + 指令: 使用管理员权限ln -s 路径1 路径2: 路径1是要连接的路径 路径2是软连接文件路径

2020-01-13 13:40:31 103

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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