# 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. Android selector一些坑

    最近给textview添加seletor时,发现textcolor和background要分开成两个selector.并且,textcolor的要再res路径下建color路径,然后在color下面建 ...

  2. teach-es6

    ES6: ECMAScript6 js: 组成部分: ECMA DOM BOM ECMA是“European Computer Manufactures Association”的缩写,中文称欧洲计算 ...

  3. PTA(Basic Level)1006.Sign In and Sign Out

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...

  4. 【转贴】龙芯内核发展策略 已经支持k8s

    龙芯内核发展策略 时间:2019-06-27 15:48  来源:未知   作者:龙芯中科   点击:1002次 http://www.loongson.cn/m/view.php?aid=1118 ...

  5. opencv学习之读取图像-imread函数

    序 想要完整全面地学习opencv,仅凭阅读samples的示例源码是不够的.毕竟opencv是一个拥有非常多函数的程序库,所以在每学习一个函数时,芒果觉得有必要记录下来,分享给有需要的同学.于是,就 ...

  6. [Next] 六.next的优化

    导出 html 并开启服务 我们将 pages 下页面导出为静态 HTML 页面.首先,next.config.js 在应用程序的根目录中创建一个名为的文件,并添加以下内容 exportPathMap ...

  7. 从0开始入门ssm-crm系统实战

    喜欢就点个赞呗! GitHub项目ssm-learn-crm show me the code and take to me,做的出来更要说的明白 1.1 克隆 git clone https://g ...

  8. oa_mvc_easyui_项目搭建及登录页面验证码(1)

    1.空项目的搭建,三层的搭建(各层之中的引用) webapp:bll,model,common bll:dal,model dal:model 2.SQL表 ItcastDb:T_UserInfo,T ...

  9. 第五章 表表达式 T-SQL语言基础

    表表达式 Microsoft SQL Server支持4种类型的表表达式:派生表(derived table),公用表表达式(CTE,common table expression),视图,以及内联表 ...

  10. 简单 UDP 操作类

    using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Ne ...