- 博客(22)
- 收藏
- 关注
原创 jupyter用不了opencv(cv2)
打开Anaconda Prompt直接在默认路径输入pip install opencv-python
2021-09-18 16:17:24
780
原创 【数据结构】 堆排序
堆是以二叉树为基础存放数据,分为大顶堆和小顶堆。大顶堆:根节点大于左右子节点。升序排列使用大顶堆小顶堆:根节点小于左右子节点。降序排列使用小顶堆排序思路为:(1)将最小子树排成大顶堆。(1.1)排序可能会影响底下排好的堆,需要递归(1)(2)循环调用(1),全部排成大顶堆。(2.1)将第0个元素和堆最后一个元素交换,将交换后前面的元素递归(1)。现在存在数组[9, 6, 8, 7, 0, 1, 10, 4, 2]大顶堆有很多种,其中一种大顶堆为:将数组排成大顶堆:Java代码:
2021-07-29 11:13:33
140
原创 【数据结构】 用Kotlin和Java实现顺序存储二叉树
顺序存储1. 概述顺序存储只考虑完全二叉树存储为[1, 2, 3, 4, 5, 6, 7]第n个元素的左节点是2n+1第n个元素的右节点是2n+2第n个元素的父节点是(n-1)/22. 遍历java代码public class ArrayBinaryTree { int[] data; public ArrayBinaryTree(int[] data) { this.data = data; } public void frontS
2021-07-28 14:35:54
106
原创 自定义View,用Kotlin绘制Android雷达图
在自定义View和雷达图两篇博客的基础上,进行了些许修改,这里总结一下我自己的学习心得。自定义View有如下几种方式类型定义自定义组合控件多个控件组合成为一个新的控件,方便多处复用继承系统View控件继承自TextView等系统控件,在系统控件的基础功能上进行扩展继承View不复用系统控件逻辑,继承View进行功能定义继承系统ViewGroup继承自LinearLayout等系统控件,在系统控件的基础功能上进行扩展继承ViewViewGroup不复用
2021-07-26 18:16:45
396
原创 面试题:线程与进程
多任务:同一时间干多件事,比如开车的时候手和脚同时驾驶汽车。操作系统同时运行多个任务,比如一边浏览器刷网页、一边word写论文、一边MP3听音乐。多线程和多进程就是处理多任务时提高效率。并发:任务数>CPU核数,通过操作系统的各种任务调度算法,实现多个任务“一起执行”。并行:任务数<CPU核数,即任务真的一起执行的。安装火狐浏览器流程:下载火狐浏览器exe文件,点击exe进行安装,点击桌面图标,任务管理器就能显示火狐浏览器的进程。程序:xx.py,xxx.txt是程序,是一个静态的。
2021-07-21 14:37:34
155
原创 【数据结构】 用Kotlin实现二叉树的创建、遍历、查找、删除
树的查找性能和插入性能优于线性结构(数组、链表)。二叉树:任何节点的子节点数量不超过2二叉树的子节点分为左节点和右节点。下图是两棵树满二叉树:所有叶子节点都在最后一层,而且节点总数为2^n-1。完全二叉树:所有叶子节点都在最后一层或倒数第二层,且最后一层的叶子节点都在左边连续,倒数第二层的叶子节点在右边连续。下图不是完全二叉树,第4层的叶子节点不是从左至右下图也不是完全二叉树,第3层右边的叶子结点没有填满。创建二叉树-------1----2----3代码(1)创建树类
2021-07-20 16:38:40
438
原创 【算法】常见排序算法合集 Kotlin
输入:n个数[9, 4, 7, 5, 1, 3, 2]输出:[1, 2, 3, 4, 5, 7, 9]本文为Kotlin代码1. 插入排序 Insertion-Sort适合对少量元素进行排序fun main() { val A = mutableListOf(9, 4, 7, 5, 1, 3, 2) val new = insertionSort(A) println(new)}fun insertionSort(array: MutableList<Int&g
2021-07-20 11:17:39
270
原创 Kotlin 递归
递归:在一个函数内部调用该函数本身入口调用—入口———调用—入口——————调用—入口—————————返回——————返回———返回返回递归能缩减代码,但可能造成栈溢出。比如:fun main(args: Array<String>) { rec(10)}fun rec(i: Int) { println(i) rec(i-1)}结果显示:需要设置停止条件:fun main(args: Array<String>)
2021-07-19 10:40:04
342
1
原创 Kotlin 单向循环链表与双向循环链表
1 单向循环链表单向循环链表,它的最后一个结点指向头结点,形成一个环。在节点结构上和单链表是一样的。从单向循环链表中的任何一个结点出发都能找到任何其他结点。1.1 节点代码class LoopNode(var value: Int) { // 独立的循环链表,自己循环到自己 var next: LoopNode = this operator fun next(): LoopNode { return next } // 删除子
2021-07-16 14:19:26
310
原创 Kotlin 用数组实现队列的入队、出队
用Kotlin语言实现队列的先入先出fun main() {// 创建一个队列 val mq = MyQueue()// 入队 mq.add(1) mq.add(2) mq.add(3) mq.add(4)// 打印队列 mq.show()// 出队 println(mq.poll()) mq.show()}class MyQueue { var elements: IntArray = int
2021-07-15 16:40:42
1085
2
原创 Kotlin 用数组实现栈的压入、弹出、获取栈顶元素
实现栈的后入先出fun main() {// 创建一个栈 val ms = MyStack()// 压入数据 ms.push(9) ms.push(8) ms.push(7) ms.push(6) // 获取栈顶 println(ms.peek()) // 弹出栈顶 ms.pop() println(ms.peek())}class MyStack() { // 栈的底层使用数组来存储数
2021-07-15 16:17:29
609
原创 Kotlin 数组 IntArray和intArrayOf的区别
在用Kotlin初始化数组遇到了个问题,没想到IntArray和intArrayOf居然还有区别。一般可以这样初始化数组val arr = intArrayOf(1, 2 ,3)数组内的元素就是[1, 2, 3]。但我如果要初始化长度为3的数组,但不知道里面填什么内容,用 intArrayOf 实现不了。得这么做:val arr = IntArray(3)于是看了一下intArrayOf和IntArray的源码...
2021-07-15 14:26:30
3306
原创 【算法】哈希算法
最近面试遇到面试官有提到哈希算法,可能比较重要,于是找资料学习整理了一下。现实中有个应用场景:比如快递站有1000个快递,但只有10个货架,每个货架有5层,要将这1000个快递放入这50层内。平均下来,每一层放入20个快递,但由于快递尺寸大小,每层可能放入的数量可能不一样。取快递就直接说取件号,比如第3个快递柜的第2层可以是:0302;第13个快递柜的第4层可以是:1304。于是,存在以下4个现象:两个相同货物,一定存放在同一个货架的同一层;两个不同货物,不一定存放在同一个货架的同一层;同一个
2021-07-13 15:11:11
132
原创 IntArray和Array<Int>
一开始不熟悉Kotlin数据结构的时候想着用二维数组来存矩阵,发现同时存在IntArray和Array<Int> ,这两者有什么区别。fun main() { val array1 = intArrayOf(1, 2, 3) val array2 = arrayOf<Int>(1, 2, 3)}这里扒了两者字节码,说明了区别存在于JAVA装箱后者使用了装箱,会影响效率。IntArray比**Array**效率更高。...
2021-07-13 10:22:09
1020
2
原创 Int与Int?,?.与!!.
Int与Int?最近编程遇到了个问题,在对列表取最大值并进行运算的时候:fun main() { val list = listOf(0, 1, 2, 4, 6, 3) val big = list.max() println(big + 1)}编译器提示错误big是属于Int?类型,不能直接和Int型的1相加。编译器提示有三种修改方法:用if语句判断是否为空if (big != null) { println(big + 1)}用 ?. 检测
2021-07-13 09:54:16
149
原创 Kotlin面向对象(二): 抽象类与接口
继承open class Father { fun sayHello() { println("Hello") }}class Son : Father()fun main() { val son = Son() son.sayHello()}方法重写
2021-06-10 10:08:37
77
原创 从Matlab转向Kotlin(3):顶层函数、成员函数、局部函数、递归函数、尾递归函数
熟悉了Kotlin的数组/集合和函数,就能复现一些简单的Matlab计算数学的程序。刚好能把笔者研究生期间计算数学的一点Matlab编程经验用上。这里把《Kotlin从基础到实践》的书里把函数章节学完,可以给《从Matlab转向Kotlin》系列收个尾了。在函数里编辑数学公式,以及函数的调用,Matlab和Kotlin大同小异,这里学习整理函数的分类和递归。函数的分类Kotlin里把函数分为顶层函数、成员函数、局部函数。顶层函数是直接在kt文件里创建函数成员函数是在类里面创建函.
2021-06-09 13:40:04
200
原创 从Matlab转向Kotlin(2):数组(Array)与集合(List,Set,Map)
数学里有向量和矩阵,在Matlab里用中括号的数组就能表示横向量、列向量、矩阵。横向量:[1,2,3]列向量:[1;2;3]2×3的矩阵:[1,2,3;4,5,6]Kotlin里,有数组和集合。数组能实现遍历、修改、查询等操作,不能改变数组的长度,也就是说不能添加和删除元素。楼主在这里就遇到过坑。这里是在《Kotlin从基础到实践》里学习到的fun main() { // 定义 val arr1 = intArrayOf(1,2,3) val .
2021-06-09 10:47:34
285
原创 从Matlab转向Kotlin(1):kotlin存放矩阵,一个函数输出多个参数,函数的重载
笔者读研三年编了几千行matlab代码,工作需要进行安卓开发,几乎0基础开始学习Kotlin。现在这个系列记录笔者的学习历程。笔者手头目前有两本书,一本是郭霖的《Android第一行代码》(第三版),一本是黑马程序员的《Kotlin从基础到实践》。笔者不打算从头开始看,而是项目中编程需要什么,就看哪一块内容。从面向过程到面向对象有很长的路要走,笔者现在先做的,是先尝试着将matlab程序移植到Kotlin中,在这过程中熟悉Kotlin语法结构,之后再慢慢转向面向对象。由于Kotlin没有Matlab
2021-06-07 13:51:46
407
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人