# myleecode

1.冒泡排序

#冒泡排序 

import  time
nums=[40,23,14,35,3,5,12,44,65,21]
def bubble_sort(nums):
for i in range(len(nums)-1):
for j in range(len(nums)-i-1):
if nums[j]>nums[j+1]:
nums[j],nums[j+1]=nums[j+1],nums[j]
return nums
start=time.time()
res=bubble_sort([40,23,14,35,3,5,12,44,65,21])
time.sleep(1)
t=time.time()-start
print(res,t) #1.0000569820404053
'''
打印结果
[3, 5, 12, 14, 21, 23, 35, 40, 44, 65] 1.0000569820404053
''' # 基于冒泡排序求取求最大值(不使用列表的内置方法sort) def max_value(nums):
count=0
for i in range(len(nums)-1):
for j in range(len(nums)-i-1):
if nums[i]>nums[i+1]:
nums[i],nums[i+1]=nums[i+1],nums[i]
return nums[len(nums)-1]
res=max_value([40,23,14,35,3,5,12,44,65,21])
print(res)
'''
打印结果
65
'''
#简单版本求最大值(不使用列表中sort方法)
l=[40,23,14,355,3,5,12,44,65,21]
for i in range(len(l)-1):
if l[i]>l[i+1]:
l[i],l[i+1]=l[i+1],l[i]
print(l[len(l)-1])
'''
打印结果
355
'''

2.快速排序

"""快速排序"""
def quick_sort(data):
if len(data) >= 2: # 递归入口及出口
mid = data[len(data) // 2] # 选取基准值,也可以选取第一个或最后一个元素
left, right = [], [] # 定义基准值左右两侧的列表
data.remove(mid) # 从原始数组中移除基准值
for num in data:
if num >= mid:
right.append(num)
else:
left.append(num)
return quick_sort(left) + [mid] + quick_sort(right)
else:
return data # 示例:
array = [2, 41, 5, 7, 1, 120, 6, 15, 5, 2, 7, 9, 10, 15, 9, 5, 12]
print(quick_sort(array)) # 输出为[1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 9, 9, 10, 12, 15, 15, 17]

3.进度条打印

# 方法一:
import time
start = time.time()
count = 100
for i in range(count+1):
print(f'\r[{i*">"}:{(count-i)*"-"}]已加载:{i}% ','共用时:',time.time()-start,'s',end='')
time.sleep(0.1)
print()
print('加载成功!') # 方法二:
import time scale=50
print('执行开始'.center(scale//2,'-'))
start=time.perf_counter()
for i in range(scale+1):
a='*'*i
b='.'*(scale-i)
c=(i/scale)*100
dur=time.perf_counter()-start
print('\r{:3.0f}%[{}->{}]{:.2f}s'.format(c,a,b,dur),end='')
time.sleep(0.1)
print('\n'+'执行结束'.center(scale//2,'-'))

4.打印 九九乘法表

# 方法一:
for i in range(1,10):
for j in range(1,i+1): # 内存循环的range条件是根据外层循环决定的
print('%s*%s=%s'%(i,j,i*j),end=' ')
print() # 方法二: 一行代码实现99乘法表
print('\n'.join([' '.join(['%s*%s=%s'%(y,x,y*x)for y in range(1,x+1)])for x in range(1,10)]))

5.打印 金字塔

max_level = 10
for current_level in range(1,max_level+1):
# 打印空格
for i in range(max_level-current_level):
print(' ',end='')
# 打印信号
for j in range(2*current_level-1):
print('*',end='')
print()

6.接雨滴

	给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

)

上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)

l=[0,2,0,0,4,5,2,0,4,3,2,1,4,5,5]
def trap( height):
if len(height) <= 1:
return 0
max_height = 0
max_height_index = 0
# 找到最高点
for i in range(len(height)):
h = height[i]
if h > max_height:
max_height = h
max_height_index = i
area = 0
# 从左边往最高点遍历
tmp = height[0]
for i in range(max_height_index):
if height[i] > tmp:
tmp = height[i]
else:
area = area + (tmp - height[i])
# 从右边往最高点遍历
tmp = height[-1]
for i in reversed(range(max_height_index + 1, len(height))):
if height[i] > tmp:
tmp = height[i]
else:
area = area + (tmp - height[i])
return area
print(trap(l))

7.一行代码实现1-100个数相加

from functools import reduce

print(reduce(lambda x,y:x+y,[i for i in range(1,101)]))

# res=(i for i in range(1,101))
# print(res) # <generator object <genexpr> at 0x0000000009F6B888> 生成器

8.如何在不使用内置方法强制转换的情况将一字符串形式的纯数字转换成整型类型。

#  方法1  利用ord将十进制数字转换成ASCII码表对应的序号(整型),再与0对应的序号进行相减,得到其对应位数的数字,在进行累加和。
def convert_to_int(str):
s=0
for i in str:
s*=10
tmp = ord(i) - ord('0')
s += tmp
return s
val = convert_to_int('4321')
print(val,type(val))
# 1234 <class 'int'> res=ord('0')
print(res,type(res))
48 <class 'int'> # 方法2 主要思想是倒置原字符串,for循环倒置字符串,利用另一相等的整数累加和得到整型123,其本质并不是原字符数字进行的转换。
s='123'
s=s[::-1]
num=0
for k,v in enumerate(s):
for j in range(0,10):
if v == str(j):
num += j * (10**k)
print(num,type(num))
# 123 <class 'int'> # 方法3
s='123'
s=s[::-1]
num=0
for k,v in enumerate(s):
t="%s * 1"%v
# print(type(v)) # <class 'str'>
n=eval(t) # <class 'int'>
print(n,type(n))
num += n * (10 ** k)
print(num,type(num)) # 123 <class 'int'> # 方法四 假如直接用内置方法强转有3中方法:
1).
print(type(eval('12')))
2).
print(type(int('12')))
3).倒模块
from ast import literal_eval
print(type(literal_eval('12'))) '''
<class 'int'>
<class 'int'>
<class 'int'>
'''
# 9.基于生成器

def add(n,i):
return n+i
def test():
for i in range(4):
yield i
g=test()
for n in [1,10]:
g=(add(n,i) for i in g)
# 第一次for循环g=(add(n,i) for i in test())
# 第二次for循环g=(add(n,i) for i in (add(n,i) for i in test()))
res=list(g) # i = 0
# for i in range(8):
# pass
# print(i) g = (add(n, i) for i in g)
g = (add(n, 0), add(n, 1), add(n, 2), add(n, 3))
g = (add(n, i) for i in (add(n, 0), add(n, 1), add(n, 2), add(n, 3)))
g = (add(n,add(n,0)),add(n,add(n,1)),add(n,add(n,2)),add(n,add(n,3)))
# 10.基于匿名函数
## 方式1:
def index(): return [lambda x, i=i: i*x for i in range(4)] print([m(2) for m in index()]) 方式2:把其改成有名函数 def index():
l1=[]
l2=[]
for i in range(4):
def func(x,i=i):
return i*x
l1.append(func)
for m in l1: # 一个个不同内存地址的函数名func
l2.append(m(2))
print(l2)
index() '''
[0, 2, 4, 6]
'''

myleecode的更多相关文章

随机推荐

  1. 【Linux开发】linux设备驱动归纳总结(四):4.单处理器下的竞态和并发

    linux设备驱动归纳总结(四):4.单处理器下的竞态和并发 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  2. 基于vs插件的abp代码生成器

    工作了这么多年,一直都在小公司摸爬滚打,对于小公司而言,开发人员少,代码风格五花八门.要想用更少的人,更快的速度,开发更规范的代码,那自然离不开代码生成器.之前用过动软的,也用过T4,后面又接触了力软 ...

  3. 论文阅读 | Real-Time Adversarial Attacks

    摘要 以前的对抗攻击关注于静态输入,这些方法对流输入的目标模型并不适用.攻击者只能通过观察过去样本点在剩余样本点中添加扰动. 这篇文章提出了针对于具有流输入的机器学习模型的实时对抗攻击. 1 介绍 在 ...

  4. (5.4)mysql高可用系列——MySQL异步复制(实践)

    关键词:mysql复制,mysql异步复制,mysql传统异步复制 [1]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数 ...

  5. pyhton sort()无返回值

    li3=['] li4=li3.sort()#sort是没有返回值得,打印的是none,对列表进行升序排列 print(li4) print(li3) 输出结果是None['123', '123', ...

  6. python基础_面向对象

    面向对象定义 把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance) ...

  7. java实现spark常用算子之mapPartitions

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  8. 特产网站自适应CSS

    下面是一个特产网站自适应CSS,这个特产自适应CSS通过屏幕宽度大小来进行适应的,而不是根据UA来判断,就加快了判断的速度,所以速度很快 中国特产站排名还是很好的,特别是手机端 li { list-s ...

  9. Spark 2.43读取.json文件入库到MySQL 8

    如果没有安装包,可以用我的这个 百度网盘链接点击进入 提取码: eku1 解压之后 准备开始配置环境变量 如果运行时候报错参考 (java.io.IOException: Could not loca ...

  10. Java面试01

    一.谈谈你对java的理解 1.平台无关性,一次编译到处运行 2.GC 3.语言特性 4.面向对象 5.类库 6.异常处理 二.Java如何做到一次编译到处运行?(如何做到平台无关性) 首先我们先来编 ...