def

面试中常考的几种算法

旧巷老猫 提交于 2020-11-08 08:33:32
前言 排序算法是面试中的重点考点,这部分算法不是很难,但细节处很凸显基本功,如果深究起来怕是很多人都回答不清的。 今天就来借着Leetcode的一道模板题来讲讲各个算法的实现(Python),以及一些注意事项,不足之处欢迎指正。 涉及算法 冒泡排序 快速排序 归并排序 堆排序 选择排序 插入排序 shell排序 Leetcode测评地址 - 75 Sort Colors Medium难度 正文 先解释一下题意: 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 其实很简单,给数组排一下序就行了,不过用自带的sort就没意思了,这题正好可以用来测一下各个排序算法。 冒泡排序 它的思想是每次让一个元素和它相邻的元素对比并交换值,每一趟下来都有一个元素被冒泡到最顶端,也就是说它排好了,下一趟排序就不用和它比较了。 所以每一趟需要对比的次数都会-1,实现起来,第一层循环控制比较次数,第二层循环执行冒泡操作。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class : def (self, nums: List[int]) -> None : """ 冒泡排序的思想: 依次对数组中的每个元素进行排序,将它们排到适合的位置上去

RSA加密

心已入冬 提交于 2020-11-08 07:53:22
今天头疼了一下午心情非常不美好,所以什么都不想干,找点好玩的RSA加密嘻嘻嘻。。。就找到了一个视频 HASH算法: 特点:对于相同的数据加密结果是一样的,不同的数据加密的长度是一样的,没有办法进行逆运算。 也被称为数据指纹。 通过散列碰撞解密, 企业级的开发中:用户密码服务器保存的是密码的HASH值。这个老师讲的不太好,用户密码加严, 可以对每一个用户加一个随机key然后再加密,有一个随机hash算法是hmac,对每一个密码都有一个key进行加密 用户注册账号密码客户端会把密码转换成hash值然后上传服务器,服务器保存,在传递的过程中账号和hash值, 黑客可以抓包拦截数据包,呃,30分钟的视频20分钟没有说到说好的RSA加密算法,行吧,还是自己看吧 费马小定理:假设a是一个整数,p是一个素数,a的p次方减去a一定是p的倍数,验证方式杨辉三角。 RSA算法是一个关于素数的应用, 欧拉φ函数又称为欧拉总计函数,φ(n)其中n是正整数,φ(n)表示在小于或者等于n的正整数当中,与n互素的数的个数。 互素也叫互质,如果两个整数的最大公约数是1则称为它们互素。如果n是一个素数,那么φ(n)=n-1,是这个函数的一个基本性质。 用python 实现一下吧 class RSA: """ RSA加密算法 """ def __init__(self): self.__create_key()

python球球大作战简化版

不羁的心 提交于 2020-11-08 06:23:56
大球吃小球 import pygame import random class Color: @classmethod def random_color(cls): red = random.randint(0, 255 ) green = random.randint(0, 255 ) blue = random.randint(0, 255 ) return (red, green, blue) class Ball: def __init__ (self, cx, cy, radius, sx, sy, color): self.cx = cx self.cy = cy self.radius = radius self.sx = sx self.sy = sy self.color = color self.is_alive = True # 球的默认存活状态 # 行为: # 移动 : 在哪里移动 def move(self, window): self.cx += self.sx self.cy += self.sy # 圆心点发生变化 需要做边界判断 # 横向出界 if self.cx - self.radius <= 0 or self.cx + self.radius >= window.get_width(): self.sx = - self.sx # 纵向出界

scala 中 Future 的简单使用

孤街醉人 提交于 2020-11-08 04:19:04
scala Future object MyFuture { def doWork(i: Int): Int = { Thread.sleep(3 * 1000) i } def main(args: Array[String]): Unit = 1 to 5 foreach { i => val future = Future { blocking { doWork(i) } } future onComplete { case Success(value) => println(value) case Failure(exception) => println(exception) } // 通过视界转换,让 Int 拥有更丰富的方法 // 由于继承了 AnyVal,表明这是一个 value class /* implicit final class DurationInt(private val n: Int) extends AnyVal with DurationConversions { override protected def durationIn(unit: TimeUnit): FiniteDuration = Duration(n.toLong, unit) } */ Await.result(future, 7 seconds) } } 来源:

[python基础] python生成wordcloud并保存

纵然是瞬间 提交于 2020-11-07 12:58:56
1.核心包 #jieba、pandas用来处理数据,数据源以xls格式存储的,这里用pandas进行处理 import jieba from jieba import analyse import pandas as pd #scipy、wordcloud创建词云 from scipy.misc import imread from wordcloud import WordCloud from wordcloud import ImageColorGenerator #matpoltlib展示、保存生成的词云图 import matplotlib.pyplot as plt 2.过程 import jieba from jieba import analyse import pandas as pd import sys reload(sys) sys.setdefaultencoding( ' utf-8 ' ) # 1.stopwords def stop_words(): stop_dict = set() with open(u ' ./百度停用词列表.txt ' , ' r ' )as f: words = f.readlines() for word in words: stop_dict.add(word.strip().decode( ' utf-8 ' ))

CMSIS-RTOS的使用

一世执手 提交于 2020-11-06 07:59:07
CMSIS-RTOS实现通常作为库提供。 要将RTOS功能添加到现有的基于CMSIS的应用程序,需要添加RTOS库(通常是配置文件)。 RTOS库的可用功能在头文件 cmsis_os.h 中 定义,该文件 特定于每个CMSIS-RTOS实现。 根据CMSIS-RTOS实现,执行可以从 main 函数 开始 作为第一个线程。 这样做的好处是应用程序员可以使用其他内部创建线程的中间件库,但用户应用程序的其余部分只使用 主 线程。 因此,RTOS的使用对于应用程序员来说是不可见的,但是库可以使用CMSIS-RTOS功能。 将文件添加到项目后,用户可以开始使用CMSIS-RTOS功能。 下面提供了一个代码示例: #include“ cmsis_os.h ” // CMSIS-RTOS头文件 void job1( void const * argument){ // thread function'job1' 而( 1 ){ : // 执行一些代码 osDelay( 10 ); // 延迟执行10毫秒 } } osThreadDef(job1,osPriorityAboveNormal, 1 , 0 ); // 将job1定义为线程函数 void job2( void const * argument){ // thread function'work2' osThreadCreate

mxnet 线性模型

落爺英雄遲暮 提交于 2020-11-06 05:41:10
mxnet 线性模型 import mxnet import mxnet.ndarray as nd from mxnet import gluon from mxnet import autograd # create data def set_data(true_w, true_b, num_examples, *args, **kwargs): num_inputs = len(true_w) X = nd.random_normal(shape=(num_examples, num_inputs)) y = 0 for num in range(num_inputs): # print(num) y += true_w[num] * X[:, num] y += true_b y += 0.1 * nd.random_normal(shape=y.shape) return X, y # create data loader def data_loader(batch_size, X, y, shuffle=False): data_set = gluon.data.ArrayDataset(X, y) data_iter = gluon.data.DataLoader(dataset=data_set, batch_size=batch_size, shuffle

Python快速入门

断了今生、忘了曾经 提交于 2020-11-04 17:26:11
目录 Python语言概述 Python开发环境配置 Python解释器 Python程序的编辑方式 Python程序的运行方式 程序的基本编写方法 Python语言基本语法元素 程序的格式框架 语法元素的名称 程序的语句元素 基本输入输出函数 基本数据类型 数字类型的运算 字符串类型及格式化 程序的流程图 程序的基本结构 程序的分支结构 关系操作符 程序的循环结构 循环控制: break和continue 函数的基本使用 函数的使用 函数的返回值 变量的作用域 代码复用 组合数据类型 组合数据类型 列表类型 列表的定义 列表的索引 列表的切片 列表类型的操作 列表的操作函数 字典类型 字典的定义 字典的索引 字典的操作函数 Python语言概述 Python开发环境配置 1.到Python主页下载并安装Python基本开发和运 行环境,网址: www.python.org/downloads/ https://python123.io/download 2.根据操作系统不同选择不同版本 3.下载相应的Python 3.0系列版本程序 Python解释器 Python解释器有两个重要的工具: IDLE :Python集成开发环境,用来编写和调试 Python代码; Pip :Python第三方库安装工具,用来在当前计算 机上安装第三方库。 Python程序的编辑方式

python__基础 : 异常处理与自定义异常

こ雲淡風輕ζ 提交于 2020-11-04 09:33:46
异常处理方法一般为: try : ------code----- except Exception as e: # 抛出异常之后将会执行 print(e) else : # 没有异常将会执行 print( ' no Exception ' ) finally : # 有没有异常都会执行 print( ' execute is finish ' ) 可以用 raise 抛出一个异常,以下是一个输入字符太短的异常例子: class ShortInputException(Exception): ''' 自定义异常类 ''' def __init__(self, length, atleast): self.length = length self.atleast = atleast try : s = input( ' please input: ' ) if len(s) < 3 : raise ShortInputException(len(s), 3 ) except ShortInputException as e: print( ' 输入长度是%s,长度至少是%s ' % (e.length, e.atleast)) else : print( ' nothing... ' ) 如果输入字符长度小于3,那么将会抛出 ShortInputException 异常: >>>

Python 分段利润提成

随声附和 提交于 2020-11-03 15:47:59
题目: 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 解法1: lia = [1000000, 600000, 400000, 200000, 100000, 0] lir = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1] sa = 1650000 com = 0 for i in range(6):   if sa > lia[i]:   com += (sa - lia[i]) * lir[i]   print('(%s - %s) * %s' % (sa, lia[i], lir[i]), com, (sa - lia[i]) * lir[i])   sa = lia[i] 运行结果: ('(1650000 - 1000000) * 0.01', 6500.0, 6500.0) ('(1000000 - 600000) * 0.015', 12500.0,