自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【问题解决】python 脚本 import lxml.etree 时 ModuleNotFoundError: No module named ‘lxml‘ (mac)

记录一个问题解决。看到这个报错,很容易想到需要安装 lxml 模块。此时执行:pip install lxml或者pip3 install lxml安装成功后,再次执行原 python 脚本,发现还是报同样的错,难道 lxml 没有安装成功?此时执行(以 pip3为例):pip3 list可以看到 pip 安装的 pacakge 信息:Package Version---------- -------lxml 4.8.0pip 22.0.4set

2022-05-24 12:15:18 2086 2

原创 初步学习 adb

1. 概述“安卓调试桥 adb (Android Debug Bridge)”,利用 adb 可以在计算机端链接安卓移动设备,获取其 Unix shell 的权限,用命令行的方式调试该移动设备。2. 配置2.1 打开移动设备的开发者模式(以手机安卓模拟器为例)(1)打开设置(2)单击 “About emulted device”(3)找到 “Build number”,多次点击,直到显示一个写着 “you are already a developer” 的 toast 停止点击。此时该设备进

2021-08-02 00:12:01 196

原创 【数据结构与算法(Java)】快速排序(图文解析)

1. 实现思路1.1 算法方法结构1. void quickSort(int[] array, int left, int right) 2. int[] partition(int[] array, int left, int right)3. void swap(int[] array, int index1, int index2)1.2 图解思路2. 代码实现 // 快速排序 public static void quickSort(int[] array, int

2021-06-07 00:53:34 131 1

原创 【数据结构与算法(Java)】二叉树的前序、中序、后序的遍历与查找

1. 思路1.1 遍历思路(1)前序打印当前节点数值若左树非空,递归左树若右树非空,递归右树(2)中序若左树非空,递归左树打印当前节点数值若右树非空,递归右树(3)后序若左树非空,递归左树若右树非空,递归右树打印当前节点数值1.2 查找思路(1)前序检查当前节点值,若与输入值相等,则返回当前节点设置临时节点变量node,用于储存找到的节点(初始化为null)查询左树若左树非空,递归左树,并将返回结果赋值给临时变量node递归完成,若node非null,

2021-03-26 17:08:48 124

原创 【数据结构与算法(Java)】哈希表(取模)

1. 哈希表基本思路建立一个数组,存放若干链表添加节点时,通过哈希函数,确定应当放入的链表,并将节点插入该链表2. 基本结构2.1 SingleNodeint idint/String dataSingleNode nextSingleNode2.2 SingleLinkedListSingleNode headNodeisEmpty()addNode()displayAllNodeData()findNode()deleteNode()2.3 HashTable

2021-03-18 11:15:52 950 4

原创 【数据结构与算法(Java)】斐波那契数列

1. 实现思路1.1【递归法】: 递归"裂变"计算f值,计算次数较多基本情况:k < 2, f(k) = k递归收缩:k > 2, f(k) = f(k -1) + f(k - 2)1.2【遍历法】:逐个储存+计算下一个f值k < 2, f(k) = kloop 逐个计算,算到k停止:k > 2, f(k) = f(k -1) + f(k - 2)返回最后一个值1.3 【数组法】:将计算过的f值储存在array里k < 2, f(k) = k设置用

2021-03-18 11:06:52 158 1

原创 【数据结构与算法(Java)】查找-插值查找(优化二分查找)

1. 排序思路循环:由mid点不断分割查找当left > right 且 搜索值超出查找数组的范围时停止当left == right 且 left值 == right值时,无法作mid被除数,停止当找到时,返回此时的下标mid分割值下标mid = left + (right - left) * [(searchValue - array[left]) / (array[right] - array[left])]2. 代码实现 /** * 插值查找(优化二分查找

2021-03-18 10:57:34 93

原创 【数据结构与算法(Java)】查找-二分查找(折半查找)

1. 查找思路1.1 二分查找(递归实现,只返回第一个找到位置的下标)基本条件:left > right,说明没找到,返回-1得到中间点下标 mid比较,分割,查找3.1 若 待寻找的数 < 中间点数值:继续在中间点左边数组中查找3.2 若 待寻找的数 > 中间点数值:继续在中间点右边数组中查找3.3 若 待寻找的数 = 中间点数值:找到,返回当前中间点下标1.2 二分查找(递归实现,返回全部找到位置的下标)新建list,存放要返回的全部下标值基本条件:left

2021-03-10 17:56:33 160

原创 【数据结构与算法(Java)】排序-基数排序(优化版桶排序)

1. 排序思路获得最大数的位数新建:桶数组 + 桶数据记录数组循环,入桶+出桶3.1 入桶:每个数据分别入相应的桶3.2 出桶:遍历所有的桶,按桶的顺序依次取出数据,并放入原数组2. 代码实现 /** * 基数排序 * 思路: * 1. 获得最大数的位数 * 2. 新建:桶数组 + 桶数据记录数组 * 3. 循环,入桶+出桶 * 3.1 入桶:每个数据分别入相应的桶 *

2021-03-10 17:23:07 138

原创 【数据结构与算法(Java)】排序-归并排序(合并排序)

1. 排序思路分解数组,每次都一分为二[8, 4, 2, 6, 7, 1, 9, 3, 20, 18, 11, 15][8, 4, 2, 6, 7, 1] [ 9, 3, 20, 18, 11, 15][8, 4, 2] [6, 7, 1] [9, 3, 20] [18, 11, 15][8, 4] [2] [6, 7] [1] [9, 3] [20] [18, 11] [15][8] [4] [2] [6] [7] [1] [9] [3] [20] [18] [11] [15]两两合并(有

2021-03-08 18:03:25 77

原创 【数据结构与算法(Java)】排序-快速排序(交换排序)

1. 算法思路快速排序是对 冒泡排序 的改进:找到中轴点pivot(中点)pivot左右互相交换,使得:左边 < pivot,右边 > pivot对左边和右边数组分别重复上述步骤2. 代码实现 /** * 快速排序 * 思路: * step1: * [ 8, 4, 2, <6>, 7, 1, 9, 3 ] * left->

2021-03-08 17:33:57 76

原创 【数据结构与算法(Java)】排序-希尔排序(插入排序 - 缩小增量排序)

1. 排序思路不断将原数组分组,每组进行"简单插入排序"分组方式为:第一次分 length/2 组,第二次分 length/2/2 组,第三次分 length/2/2/2 组,…,以此类推,最后一次分为 1 组结束分组和分别的插入排序,整个数组的排序即完成注意:插入方法有"交换法"(效率低)和"移位法"(高效)两种2. 代码实现 /** * 希尔排序(缩小增量排序) * 思路: * - 不断将原数组分组,每组进行

2021-03-06 18:01:53 73

原创 【数据结构与算法(Java)】排序-简单插入排序(插入排序)

1. 排序思路将数组分为"有序表"和"无序表""有序表"初始为第一个数,"无序表"为剩下数组将"无序表"的首位与"有序表"逐个比较,寻找插入点寻找时,从"无序表"首位的前一位开始比较,通过交换依次往前移动若 "无序表"首位 < "无序表"首位的前一位:未找到插入点,交换两数,继续寻找否则: 找到,停止小循环继续下一轮当"无序表"为1时,排序完成2. 复杂度分析T(n) = n + 1 + n * (n - 1) + 1 = n2 = O(n2)3. 代码实现

2021-03-06 10:51:16 91

原创 【数据结构与算法(Java)】排序-简单选择排序(选择排序)

1. 排序思路共进行 length - 1 次 “大循环”每轮循环,找到该轮 “最小值”,和 “未排序数组的首位” 交换2. 复杂度分析:T(n) = n + 1 + n * (n - 1) + 1 = n2 = O(n2)3. 代码实现 /** * 简单选择排序 * 思路: * - 共进行 length - 1 次 “大循环” * - 每轮循环,找到该轮 "最小值",和 "未排序数组的首位" 交换 *

2021-03-05 22:08:09 65 2

原创 【数据结构与算法(Java)】排序-冒泡排序(交换排序)

1. 排序思路共进行 length - 1 次 “大循环”每趟循环,排序的次数逐次减少每躺排序,两两比较大小,每次比较都把大的后移-(优化)若某躺大循环中,没有发生“交换”,则结束整个排序2. 代码实现 /** * 冒泡排序 * - 共进行 length - 1 次 “大循环” * - 每趟循环,排序的次数逐次减少 * - 每躺排序,两两比较大小,每次比较都把大的后移 * -(优化)若某躺大循环中

2021-03-05 17:04:24 108

原创 【数据结构与算法(Java)】八皇后问题(回溯算法-递归)

1. 递归思路基本情况:放置到第8个皇后(即找到一个解法)向基本情况靠近:若当前皇后的放置位置不冲突,则放置下一个皇后到下一行调用自身:将当前皇后数加1后作为参数,继续放置2. 代码实现/** * 八皇后问题 - 回溯算法(递归) */public class EightQueenProblem { /** * 一位数组表示棋盘 * index - 行 * data - 列 */ private static int[] ches

2021-03-05 11:37:29 181 1

原创 【数据结构与算法(Java)】迷宫问题(回溯算法-递归)

1. 代码实现/** * 使用回溯算法(递归)解决"迷宫问题" */public class Maze { int[][] mazeMap = new int[11][22]; final int[] startPosition = new int[]{8, 15}; final int[] endPosition = new int[]{1, 21}; public Maze() { this.generateMazeMap();

2021-03-03 18:00:21 269 5

原创 【数据结构与算法(Java)】逆波兰计算器(后缀表达式实现)

public class PolandNotation { /** * @author hoy * 中缀表达式 -> 后缀表达式list<String> * 思路: * 1. 创建一个堆栈,operatorStack<string> 用于保留运算符; 创建一个list,postfixList<string> 用于保留中间结果。 * 2. 原始中缀表达式 -> 中缀表达式list&l

2021-03-03 10:20:52 160 4

原创 【数据结构与算法(Java)】计算器(中缀表达式实现)

1. 中缀计算器public class InfixCalculator { /** * @author - hoy * 计算器:计算所给出数学表达式字符串的结果,返回结果值(只计算个位数的数字输入,无括号) * @param expression - 表达式字符串 * @return - 返回计算结果 */ public static int infixCalculator(String expression) { //

2021-03-03 10:18:57 261

原创 【数据结构与算法(Java)】栈 Stack(双向链表实现)

1. 应用场景程序的调用:程序指令的地址储存在堆栈内,每执行一个程序,就先放入栈中,执行完当前程序就从栈内取出下一个执行。递归调用的处理:除了存程序指令地址,还存参数、区域变量等。表达式转换和求值:如 “中缀 -> 后缀”二叉树的遍历图的深度优先算法(DFS)2. 特点结构:线性结构栈顶(top) :栈的顶部,出栈入栈的出入口栈底(bottom):栈的底部,最先入栈和最后出栈的位置专有名词:出栈(pop):从 栈顶 取出入栈(push):从 栈顶 放入先进后

2021-02-27 21:42:21 380

原创 【数据结构与算法(Java)】栈 Stack(数组实现)

1. 应用场景程序的调用:程序指令的地址储存在堆栈内,每执行一个程序,就先放入栈中,执行完当前程序就从栈内取出下一个执行。递归调用的处理:除了存程序指令地址,还存参数、区域变量等。表达式转换和求值:如 “中缀 -> 后缀”二叉树的遍历图的深度优先算法(DFS)2. 特点结构:线性结构栈顶(top) :栈的顶部,出栈入栈的出入口栈底(bottom):栈的底部,最先入栈和最后出栈的位置专有名词:出栈(pop):从 栈顶 取出入栈(push):从 栈顶 放入先进后

2021-02-27 17:07:02 210

原创 【数据结构与算法(Java)】单向环形链表(按顺序添加)

1. 应用场景约瑟夫问题 Joseph(百度百科)2. 思路节点结构:数据域(Data):存储 当前节点 的 数据地址域1(Next):指向 下一个节点 的 地址环形链表结构:头节点:储存环形链表的第一个节点储存方式:尾部节点指向头节点不一定 是连续存储添加节点:本文章按照直接添加到尾节点的方式3. 数据结构(类结构):【节点 SingleNode】(1)成员变量(Field)data: int,节点所储存的数据nextNode: SingleNode,

2021-02-27 12:50:45 112

原创 【数据结构与算法(Java)】约瑟夫问题

1. 问题描述设编号为 1,2,3,…,n 的 n 个人围坐在一起,让编号为 k (1 <= k <= n) 的人从 1 开始报数,数到第 m 个的这个人出列,然后从此人的下一人再从 1 开始报数,数到 m 的出列,以此类推,直到所有人都出列。打印出整个过程的出队编号序列。2. 解决思路利用 单向环形链表步骤:初始化环形链表 和 出队数组校验:是否都是正数;startNodeData是否在链表长度范围内设置preNode,作为firstNode的上一个节点将first移动到

2021-02-27 12:48:14 134 2

原创 【数据结构与算法(Java)】双向链表(按顺序添加)

1. 应用场景当不知道数据量大小的时候,可以使用“链表”来动态储存和处理数据需要对链表进行反向操作时2. 思路分类:(本文使用 “有头节点”)有头节点 链表无头节点 链表存储方式:节点节点结构:数据域(Data):存储 当前节点 的 数据地址域1(Next):指向 下一个节点 的 地址地址域2(Pre):指向 上一个节点 的 地址头指针:数据域无意义,只有指向下一节点的地址域不一定 是连续存储本文章按照节点值的 从小到大 顺序添加3. 数据结构(类结构):

2021-02-25 12:28:00 948 2

原创 【数据结构与算法(Java)】单链表(按顺序添加)面试题练习

1. 查找单链表中的倒数第k个节点(新浪)- 思路:找到倒数第k个节点 = 找到正数第(length - k + 1)个节点(1)获取length(2)循环遍历,找到第(length - k + 1)个节点eg.[head], 1, 2, 3, 4, 5, 6, <7>, 8, 9, 10k = 4, length = 10 -> 正数第 10 - 4 + 1 = 7个节点(7)- 实现: public static Node findReciprocalNod

2021-02-24 13:22:13 161

原创 【数据结构与算法(Java)】单链表(按顺序添加)

1. 应用场景2. 思路分类:有头节点 链表无头节点 链表存储方式:节点结构:数据(Data):存储 数据本身下一节点指针(Next):指向 下一个节点不一定 是连续存储3. 数据结构(类结构):(1)成员变量(Field)(2)初始化 / 构造器(Constructor)(3)方法(Methods)4. 完整实现...

2021-02-22 23:10:46 452 3

原创 【数据结构与算法(Java)】数组实现环形队列Circle Queue

1. 思路*数组实现队列 Queue(一次性)(环形队列解决的是普通数组队列的不可复用的限制)当添加数据时,rear指向数组最后一位且数组未满,则将 “rear+1” 后对 maxSize进行 取模,即将队列尾部移动到数组头部。front: 指向队列 第一个元素的位置,初始值为0rear: 指向队列 最后一个元素 的 下一个位置,初始值为0队列 已满 的条件:(rear + 1) % maxSize == front队列 为空 的条件:rear == front队列中 有效数据的个数 :

2021-01-04 21:55:30 146

原创 【数据结构与算法(Java)】数组实现队列 Queue(一次性)

1. 特点队列是一个 有序列表实现形式:数组 ,链表原则:先入先出(先存的数据先取出,后存的数据后取出)

2020-12-16 16:42:11 664

原创 【数据结构与算法(Java)】稀疏数组 Sparse Array

1. 应用场景某个数组中大部分元素的值是0或者同一值,可以用 “稀疏数组” 来保存。eg.0 0 0 0 0 0 00 2 0 0 3 0 00 0 0 8 0 0 01 0 0 0 0 0 00 5 0 0 0 9 02. 处理思路(1)思路[0] 记录 “有几行几列” ,有多少 “不同的值”[1]-[n] 把 “不同的值” 的 ”行”、“列”和“值” 记录在一个 “小数组” 里例1.原始二维数组0 0 0 0 0 0 00 2 0 0 3 0 00 0 0 8 0 0

2020-12-09 22:35:21 102

原创 【Java基础】Java语言概述

1. Java 简介Java是SUN(Stanford University Network - 斯坦福大学网络公司)在1995年推出的一种高级编程语言。Java是一种纯粹面向对象的编程语言。舍弃了C语言中的指针(以引用替代)、运算符重载(operator overloading)、多重继承(以接口取代),增加了垃圾回收器功能等。2. Java 技术体系- Java SE (Java Standard Edition) 标准版支持Java桌面级应用,提供完整Java核心API,老版本为J2SE-

2020-12-08 15:15:23 119

空空如也

空空如也

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

TA关注的人

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