- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 删除k个数字后的最小值
问题描述: 给出一个整数,从该整数中去掉K个数字,要求剩下的数字形成的新整数尽可能小。 问题分解:转化为先去掉一个数字问题。删除的不仅仅是最大的数字,而且是删除高位的数字。 如何把高位的数字降低呢? 把原整数的所有数字从左到右进行比较,如果发现某一位数字大于它右边的数字,那么删除该数字,因为右面的大数字顶替小数字位置,新整数值变小。 def remove_k_digits(num, k): for i in range(0, k): has_cut = False # 从左向右遍历,找到比自己右侧
2022-04-08 11:05:17
321
原创 全排列的下一个数
全排列 1.从后查看逆序区域,找到逆序区域的前一位,也即是数字交换的边界 2.让逆序区域的前一位和逆序区域中大于它的最小的数字交换位置 3.把原来的逆序区域转为顺序状态 举例 1 2 4 5 3 找到逆序区域边界 5 交换 3 和5,得1 2 5 4 3 (交换的是逆序区域里面大于交换数****4 并且是最小,所以是5) 逆转逆序区域 得 125 3 4 def find_nearest_number(numbers = []): # 1.从后查看逆序区域,找到逆序区域的前一位,也即是数字交换的边
2022-04-06 16:23:57
496
原创 无序数组排序后的最大相邻差
无序数组排序后的最大相邻差 暴力: 排序后,循环求差值 “”" 利用桶排序思想完成: 原数组长度 n = len(array),一个桶代表一个区间范围 区间跨度:(max - min )/ (n - 1) 1.创建n个桶 2.遍历原数组,循环插入对应桶,记录每一个桶的最大值和最小值 3.遍历所有的桶,统计每一个桶的最大值和此桶右侧非空桶的最小值,求二者差,数组最大即为无序数组排序后的最大相邻差 “”" class Bucket: def __init__(self): self.min = None
2022-04-05 20:13:27
324
原创 位运算总结
位运算 位运算 0&0=0 0&1=0 1&0=0 1&1=1 & 与 两个位都为1时,结果才为1 | 或 两个位都为0时,结果才为0 ^ 异或 两个位相同为0,相异为1 取反 0变1,1变0 << 左移 各二进位全部左移若干位,高位丢弃,低位补0 右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移) 判断一个数是否是2的整数次幂 # 是否是2的整数次幂 d
2022-04-05 18:05:54
768
原创 最大公约数
最大公约数 辗转相除法,俩个整数a和b, a%b = c a,b最大公约数就等于 b,c最大公约数 def get_largest_common2(a, b): big = max(a, b) small = min(a, b) if big % small == 0: i += 1 return small return get_largest_common2(big % small, small) print(get_largest_common2(100,45)) # 暴
2022-04-05 15:09:50
98
原创 最小栈,俩栈实现,辅助栈保持当前最小值
最小栈,俩栈实现,辅助栈保持当前最小值 push 进栈: 首元素默认为最小栈。从第二个元素开始比较,看条件辅助栈进栈 (辅助栈进栈条件)若辅助栈为空,或新元素的值小于或等于辅助栈的栈顶元素的值,则压入辅助栈 pop 出栈: 原先栈直接出栈,辅助栈看条件是否出栈 (辅助栈)如果出栈元素和辅助栈元素相等,辅助栈元素也出栈 get_min 获得栈最小值: 若栈空,则返回空,否则直接返回辅助站数组最后一个元素 注意:pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。 cl
2022-04-05 11:21:26
131
原创 判断链表是否有环
判断链表是否有环 方法:创建俩个指针p1, p2,一个一次移动一个节点,一个一次移动俩个节点,比较俩个指针指向的节点是否相同,相同则有环。 求环的长度? 俩个指针相遇,证明有环,此时可以让慢指针回到头节点,继续循环前进,统计循环次数,直到俩个指针第二次相遇,此时统计出来的就是环的长度。 因为俩个指针的速度差是一步,当俩个指针再次相遇时, P2比P1多走了一圈(或者采取代码中的方法) 求出入环节点? 把其中一个指针放回到头节点,另一个指针保持在首次相遇的位置,俩个指针每次都向前走一步,最终相遇的节点就是入环节
2022-04-04 21:57:53
150
原创 python实现 排序算法
各种排序算法 O(n2) —————————————————————————————— 冒泡排序,稳定排序 每一轮都要遍历所有元素,总共遍历(元素数量 - 1)轮 # 冒泡排序,最大的冒泡上去,最后元素最大 def bubble_sort1(array = []): for i in range(len(array) - 1): for j in range(len(array) - i - 1): if array[j] > array[j + 1]: temp = arra
2022-03-30 19:46:41
376
原创 最大优先队列
最大优先队列 无论入队顺序如何,都是当前最大元素优先出队 最大二叉堆实现最大优先队列 每一次入队操作就是堆的插入操作 每一次出队操作就是删除堆顶节点 代码 class PriortyQueue: # 最大优先队列,最大二叉堆,堆顶是整个堆中的最大元素 def __init__(self): self.array = [] self.size = 0 def enqueue(self,element): self.array.append(element) self.size += 1
2022-03-28 15:53:36
308
原创 二叉堆的构建
二叉堆的构建 对于二叉堆,有三种操作 插入节点,插入是节点上升,数组的最后一个叶子节点 删除节点,删除是节点下沉 意思是删除的是栈顶的节点,从头开始下沉。为了维持完全二叉树结构,会把堆的最后一个节点临时补到原来栈顶的位置 构建二叉堆 本职是所有非叶子节点依次下沉 第一个非叶子节点 下标计算:(len(array) - 2 ) // 2 关于代码优化部分,# 无需真正交换,单向赋值即可 是指的对于插入,上浮,循环每次只更新孩子节点,最终确定的父节点最后循环后赋值,这个赋值是在循环开始之前:用一个temp 保
2022-03-28 11:09:02
639
原创 python:剑指 Offer 07. 重建二叉树
python:剑指 Offer 07. 重建二叉树 根据前序遍历和中序遍历 输出根节点 示例 输入: Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] Output: [3,9,20,null,null,15,7] Input: preorder = [-1], inorder = [-1] Output: [-1] ...
2022-03-28 10:54:33
133
原创 python 剑指 Offer 06. 从尾到头打印链表
python 剑指 Offer 06. 从尾到头打印链表 用栈实现,先进后出 python 感觉没啥意义,列表栈直接循环添加,然后倒序输出 用到倒序输出的一个技巧 list[::-1] stack[::-1] # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class S
2022-03-24 19:30:34
1435
原创 python 递归实现树的三种遍历
python 递归实现书的三种遍历 class TreeNode: def __init__(self,data): self.data = data self.left = None self.right = None def create_binary_tree(input_list = []): """ 构建二叉树 param input_list:输入数列 返回根节点 node """ if input_list is None or len(input_list) ==
2022-03-24 09:58:16
2488
原创 python实现一个队列
python实现一个队列 队尾指针指向的位置永远空出1位,所以队列的最大容量比数组长度小1 进队 队满条件 :(self.rear + 1) % len(self.list) == self.front 出队 队满条件:self.rear == self.front class MyQueue: def __init__(self,capacity): self.list = [None] * capacity self.front = 0 self.rear = 0 def enqueu
2022-03-23 21:09:53
883
原创 链表各种操作
链表各种操作 # 定义节点Node class Node: def __init__(self,data): self.data = data self.next = Node # 初始化链表 class LinkedList(object): def __init__(self): self.size = 0 self.head = Node self.last = Node # 找到index节点,返回P def get(self,index): if index &
2022-03-23 20:42:11
125
原创 Python range() 函数
Python range() 函数 range() 函数返回数字序列,默认从 0 开始,默认以 1 递增,并以指定的数字结束 range(start, stop, step) start 可选。整数,指定从哪个位置开始。默认为 0。 stop 可选。整数,指定在哪个位置结束。 step 可选的。整数,指定增量。默认为 1。 x = range(2, 20, 2) for n in x: print(n) 2 4 6 8 10 12 14 16 18 ...
2022-03-23 17:22:05
911
原创 python:剑指 Offer 05. 替换空格
python:剑指 Offer 05. 替换空格 先扩容,然后移动 # 原有空间上遇到空格就添加两个空格 # 设置俩个指针,一个指针指向新数组结尾 # 另一个指向旧数组结尾 # 意思是 从后往前复制,遇到空格替换为"%20" c++ class Solution { public: string replaceSpace(string s) { int length = s.size(); for( int i = 0; i &
2022-03-23 09:24:24
1716
原创 剑指 Offer 04. 二维有序数组中的查找
剑指 Offer 04. 二维数组中的查找 class Solution(object): def findNumberIn2DArray(self, matrix, target): # 数组的特征是向靠右和靠下数字越大 # 从二维数组左下角开始判断 上还是右 # i >= 0上到头 # j < len(matrix[0]) 最右边 i, j = len(matrix) - 1, 0 wh
2022-03-23 08:51:19
138
原创 python:剑指 Offer 03. 数组中重复的数字
python:剑指 Offer 03. 数组中重复的数字 class Solution(object): def findRepeatNumber(self, nums): # 下标和value 一一对应,如果不对应就交换, # 发现一个值对应俩个下标就说明发现重复元素了,直接输出就可以了 # enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列, # 同时列出数据和数据下标,一般用在 for 循环当中。 for i, num in
2022-03-22 21:40:04
500
原创 python:剑指 Offer 09. 用两个栈实现队列
python:剑指 Offer 09. 用两个栈实现队列 class CQueue: def __init__(self): self.stk_in = [] self.stk_out = [] def appendTail(self, value: int) -> None: self.stk_in.append(value) def deleteHead(self) -> int: # 俩个if 顺
2022-03-22 21:11:43
299
原创 批量xml数据集标签名称
import os import xml.etree.ElementTree as ET #程序功能:批量修改数据集中xml标签文件的标签名称 def changelabelname(inputpath): listdir = os.listdir(inputpath) for file in listdir: if file.endswith('xml'): file = os.path.join(inputpath,file)
2020-08-18 10:39:50
421
原创 手把手教你在ubuntu安装mysql数据库/一些数据库知识和服务器初体验
服务器初体验 Xshell6和Xftp6初步使用 Xshell6:可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。 Xftp6:是一个功能强大的SFTP、FTP文件传输软件。 我们可以使用Xshell6在Windows上操作Linux服务器,Xftp6用来将Windows文件与Linux服务器文件相互传输。 具体使用方法 ubuntu安装mysql数据库 1.官网下载mysql,下载到是一个 ...
2020-07-25 16:11:37
252
原创 python保存视频或者图片地址到mysql数据库,通过pymysql
python保存视频或者图片地址到mysql数据库,通过pymysql废话不说,直接开始先创建数据库Mon,然后创建表path,然后是python代码插入效果图参考链接 废话不说,直接开始 本代码只是通过pymysql 把本地文件夹下的图片或者视频保存到MySQL 数据库,关于pymysql的安装参考其他博文。 先创建数据库Mon,然后创建表path,然后是python代码 create table if not exists path (id int,p varchar(100)) engine=
2020-07-23 11:20:20
2605
9
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人