自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树的最小深度(rust实现)

给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。

2023-10-16 10:42:58 356

原创 Kotlin协程之Dispatchers

这篇博客将会介绍几种 Dispatchers 的用法。Dispatchers 可以决定协程运行在什么线程上,协程将在特定的线程中运行这些任务。协程中的Dispatchers 与 RxJava 中的 Schedulers 类似我们在安卓项目中通常使用以下几种 Dispathers但是当我们查看文档,还会发现还有一种所以,在 kotlin 协程中有四种类型的 Dispathers。

2023-10-11 14:41:57 282

原创 ViewPager 异常状态之 无法切换、循环切换

网上关于 ViewPager 的用法、源码解析已经讲的很多了。但生产环境中,我们可能会遇到各种奇怪的问题。这篇文章将会聊聊自己遇到的比较奇怪的异常情况,并讲述分析思路与源码解析。

2023-10-08 17:00:24 281

原创 算法练习之反转链表

的时候,需要写 take(),该方法的作用是,取出 option 中的数据,并将其至为 None。如果我们不这样做,会发现 tmp.next的所有权被转移给了 next 变量,下面将不能再给tmp.next复制,而使用 take 方法则不会转移所有权。个人认为学习算法题目重要的不是解法,而是解法背后的思想。可以看出来,当我们形成出需要的反转链表时候,前半段与后半段就已经割裂出来,所以,我们需要三个变量,来保证我们仍然可以继续遍历。定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

2023-09-13 11:09:18 275

原创 安卓绘制原理之 那些年遇到的requestLayout埋下的坑

对于ViewGroup而言,layout children都是在onLayout中完成的,因此,对于正在执行onLayout的ViewGroup而言,其子View的所有requestLayout请求都会因为自身的PFLAG_FORCE_LAYOUT阻拦而无法触达RootViewImpl,此时VIew的measure流程已经结束,由于measure的时候,自身并不存在PFLAG_LAYOUT_REQUIRED标志位,那么等到自身layout时候,就不会执行layout,导致view的视图不会按预期更新。

2023-09-10 21:58:40 548

原创 安卓绘制原理之 MeasureCache优化了什么?

假设 A、B、C 都是一个需要测量孩子两次的 ViewGroup,那么如果没有 MeasureCache,当执行 A 的 Measure 时候,将会调用 BBCC,共四次 measure,同样的调用DDEEDDEEFFGGFFGG,共 16 次 measure。但是如果有 measureCache,在 measure 阶段,将会调用 A 的 measure(如果 A 是顶 viewGroup),然后直接设置 B、C 的大小。不执行可以优化性能耗时,但这里又重新执行了一次,优化在哪里?

2023-09-04 15:43:45 721

原创 安卓绘制原理概览

Android 程序员都知道 Android 的绘制流程分为 Measure、Layout、Draw 三步骤,其中由 ViewRootImpl 实现的 performTraversal 方法是 Measure、layout、draw 的真正执行者,本文将不会关注 measure、layout、draw 的执行细节。而是展示 measure、layout、draw 和 Traversal 之间的关系,沉浸在细节里面,反而对全貌会难以知晓,这一系列将会循循渐进,先介绍全貌,再由具体问题分析具体的细节。

2023-09-03 12:58:35 762

原创 App Bundle 初见

App Bundle 初见什么是 App Bundle?你使用应用的所有代码和资源构建一个单一的工件。传统的我们会使用 Apk 将我们的代码传给用户,用户使用 Apk 安装代码,并使用应用。简单来说 App Bundle 就是打包分发的一种新的方法。我们不在使用 Apk 这样的方式,而是用一种更加快速、高效的方法将我们的代码传递到用户的手中。从下图中可以看到,Google Play 针对每个设备的配置提供专门优化过的应用。每一个用户得到的资源都不相同。从下图可以看到,传统的 Apk 分发机制需要

2020-09-15 21:14:40 334 2

原创 字节跳动面试题目-扑克牌的移动

题目我手中有一堆扑克牌, 但是观众不知道它的顺序。1、第一步, 我从牌顶拿出一张牌, 放到桌子上。2、第二步, 我从牌顶再拿一张牌, 放在手上牌的底部。3、第三步, 重复第一步、第二步的操作, 直到我手中所有的牌都放到了桌子上。最后, 可以看到桌子上牌的顺序是:(牌底部)1,2,3,4,5,6,7,8,9,10,11,12,13(牌顶部)问, 刚开始拿在手里的牌的顺序是什么?其实这一题很简单,我们只需要将这个操作倒着来一遍就完事了。下面直接看代码。import java.util.Link

2020-08-30 16:27:01 522

原创 机器人的运动范围-剑指Offer-Java实现

机器人的运动范围题目:地上有一个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每次可以向左、右、上、下移动一个,但不能进入行坐标和列坐标的数位之和 大于k的格子。例如,当k为18时,机器人能进入方格(35,37),因为3+5+3+7=18。但它不能进入方格(35,38),因为3+5+3+8=19。请问该机器人能够到达多少个格子?结题思路和回朔法类似 ,这个方格也可以看做一个m*...

2019-06-10 09:17:57 175

原创 矩阵中的路径-Java实现

矩阵中的路径 (剑指Offer)题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。package Algrothim;public class MatrixPath { public static boolean ...

2019-06-08 15:15:38 399

原创 搜索旋转排序数组

搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [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,...

2019-05-17 16:13:21 238

原创 Python语言实现-重建二叉树

重建二叉树题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。解决方法在二叉树的前序遍历序列中,第一个数字总是树的根结点的值。但在中序遍历中,根结点的值在序列的中间,左子树的节点的值位于根结点的值的左边,而右子树的节点的值位于根结点的值的右边。因此我们要扫描中序遍历序列,才能找到根结点的值。所以本题我们采用递归的思路来做。...

2019-04-18 11:27:05 266

原创 最大子数组

最大子数组给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。本题在leetcode中属于简单题目,但是这题其实有很多解法,都蕴涵了很多算法思想。分别有暴力解法、动态规划解法和分治思想解法。在此做...

2019-04-15 18:38:28 162

原创 Leetcode移除链表元素

移除链表元素删除链表中等于给定值val的所有结点输入:1->2->6->3->4->5->6,val = 6输出:1->2->3->4->5此题很简单。需要知道两点。删除头结点删除非头结点class Solution: def removeElements(self,head,val): # 先循环的处理头结点...

2019-04-09 23:11:45 123

原创 算法:移动0到最末尾的位置-python实现

移动0到最末尾的位置今天面试的时候被问到了,很蒙蔽,瞬间想到了几种方法,但是都不是最优解。回来发现还是自己5个月前做过的题目,真是应该反思一下为什么想不出来。问题描述:将数组中的0移动到数组的末尾,并且空间复杂度是O(1)。我瞬间能想到的方法就是利用一个新的数组,依次遍历原数组,如果为0,则统计0的个数并且跳过这个数,如果不为0,则将该数添加到新数组中,最后在新数组后添加0。如何原地去做呢...

2019-04-09 16:38:14 1326

原创 环形链表

判断链表是否有环判断链表是否有环有两种思路。利用set()集合,每经过一个节点,就将该节点保存在set()集合中,如果该链表遍历至空,则表示无环。如果该链表的节点第二次出现在set()集合中,则表示有环。def hasCycle(head): """ :type head: ListNode :rtype: bool """...

2019-04-08 22:49:28 68

原创 字节跳动算法-顺序打印m个长度为n的数组

字节跳动算法-顺序打印m个长度为n的数组思路维护一个长度为n的数组,分别表示各个数组走到了哪里,每次找最小的一个数。每找出来一个数需要比较m次,需要找m*n次,时间复杂度是 m^2xN代码def printNSortArray(self,a): if not a: return if not a[0]: return m = ...

2019-03-26 19:36:54 818

原创 一个链表,假设第一个节点我们定为下标为1,第二个为2,那么下标为奇数的结点是升序排序,偶数的结点是降序排序,如何让整个链表有序?(分离链表,合并两个有序链表)

字节跳动后端面试计算题目题目一个链表,假设第一个节点我们定为下标为1,第二个为2,那么下标为奇数的结点是升序排序,偶数的结点是降序排序,如何让整个链表有序?(分离链表,合并两个有序链表)思路思路很简单,先将链表拆分成奇数的链表,和偶数的链表,然后翻转偶数的链表,在合并两个链表。代码# 翻转链表def reverseList(head): p = head while ...

2019-03-24 21:11:53 885

转载 PythonIO多路复用

python IO 多路复用 select poll epollselectselect原理select是通过系统调用来监视着一个由多个文件描述符组成的数组,当select()返回后,数组中就绪的文件描述符会被内核修改标记位,使得进程可以获得这些文件描述符从而进行后续的读写操作。select是通过遍历来监视整个数组的,而且每次遍历都是线性的。select优点select目前几乎在所有的平...

2019-03-24 11:15:00 458

原创 二叉树的锯齿形层次遍历

二叉树的锯齿形层次遍历给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。思路:常见思路:根据层次遍历的想法,如果只需要锯齿形,那么其实只要周期性的使一些结果翻转就可以了。def zigzagLevelOrder(root): if not root: return [] queue...

2019-03-23 21:39:24 100

原创 数组中重复数字-leetcode

数组中重复数字在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道哪几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数字{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。解决方法上来这道题的思路就是暴力解决,如何暴力解决这个问题呢。思路:直接双重循环遍历,遇到重复的直接输出。时间复杂...

2019-03-23 00:08:55 353

原创 Python与Java的单例模式

单例模式题目:设计一个类,我们只能生成该类的一个实例。只能在单线程环境(懒汉模式)public class Singleton{ private static Singleton singleton = null; private Singleton(){} public static Singleton getInstance(){ if (si...

2019-03-22 22:18:13 172

原创 PyQt5 QTableView设置某一列不可编辑

class EmptyDelegate(QItemDelegate): def __init__(self,parent): super(EmptyDelegate, self).__init__(parent) def createEditor(self, QWidget, QStyleOptionViewItem, QModelIndex): ...

2019-01-02 09:34:26 9891 3

原创 PyQt5 QKeySequenceEdit实现只能输入一个组合键,而不是四个连续组合键

直接贴代码,就不解释了,参考了此篇https://stackoverflow.com/questions/30006562/limit-qkeysequence-qkeysequenceedit-to-only-one-shortcut文章,但是都是C++代码,这里改成了python代码. # -*- coding: utf-8 -*-# @Time : 18-12-15 上午9...

2018-12-15 09:41:31 754 1

原创 PyQt5 QAbstractTableModel,QStringListModel使用方法

最新项目需要在PyQt中使用表格,列表等样式.一开始我的写法很简单,在Qt-designer中拖了QListWidget与QTableWidget.向tableWdiget动态添加一行采用如下代码 def _insert_to_table(self, tableWidget): '''将数据插入到表格中,self.table_data保存了一行所有数据''' ...

2018-12-02 11:16:00 5636

空空如也

空空如也

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

TA关注的人

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