博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python几个算法实现
阅读量:7121 次
发布时间:2019-06-28

本文共 1741 字,大约阅读时间需要 5 分钟。

1.平衡点问题:

比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点

要求:返回任何一个平衡点

1 def balance_point(li): 2     start = 0 3     end = len(li)-1 4     sum_start = li[start] 5     sum_end = li[end] 6     while start < end: 7         if sum_start == sum_end and end-start == 2: 8             return start+1 9         if sum_start < sum_end:10             start += 111             sum_start += li[start]12         else:13             end -= 114             sum_end += li[end]15     return -1

2.支配点问题:

支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,其所在位序成为支配点;比如int[] a = {3,3,1,2,3};3为支配数,0,1,4分别为支配点;

要求:返回任何一个支配点

1 def control_point(li):2     count_li = len(li)/23     for i in li:4         if li.count(i) > count_li:5             return i6 7     return -1

3.python冒泡排序

冒泡排序是最简单且稳定的排序方式,时间复杂度为O(n*n).下面主要使用Python range()函数控制循环,以及python返回多个值的性质,使得代码很简单

def bubble_sort(li):    for i in range(len(li)-1, 0, -1):        for j in range(0,i):            if li[j] > li[j+1]:                li[j+1], li[j] = li[j], li[j+1]

 

4.输出1~N之间的素数

定义:素数又叫质数

from math import sqrtdef sushu_out(n):    result = []    for num in range(2, n):        flag = True        for j in range(2, int(sqrt(num))+1):            if num % j == 0:                flag = False                break        if flag:            result.append(num)    print result, len(result)

5.删除list中重复元素

  • l2 = list(set(l1))
  • l2 = {}.fromkeys(l1).keys()

不改变原来顺序

  • l2 = sorted(set(l1),key=l1.index)
  • 遍历

6.斐波那契数列

定义

def fib(n):    ret = []    a = 0    b = 1    for i in range(0, n):        ret.append(b)      # 主意此处不能使用ret[i] = b ,会导致数组越界,因为ret现在为空,Java中数组初始化要给定长度,Python不同。        a, b = b, a+b    return ret

 

同步于:

转载于:https://www.cnblogs.com/zeng-wei/p/3831381.html

你可能感兴趣的文章
大湾区足球联赛港澳赛区上演进球大战
查看>>
又一巨头布局区块链,360区块猫上线,你不想拥有一只零代猫吗
查看>>
[译] Scala 类型的类型(一)
查看>>
Swift iOS : 代码分析DrawController
查看>>
Architecture(5)电商APP组件化探索
查看>>
Web全屏模式轻松掌握[局部元素全屏展示]
查看>>
超详细的Java面试题总结(三)之Java集合篇常见问题
查看>>
BCH升级在即,什么是OP_CHECKDATASIG和Canonical Transaction Ordering(一)
查看>>
Vue 中实现双向绑定的 4 种方法
查看>>
关闭tomcat报错Cannot allocate memory
查看>>
深圳行:1207-Day 1 - 到达
查看>>
mysqls为node.js而编写的sql语句生成插件 crud for mysql.
查看>>
LeetCode34.在排序数组中查找元素的第一个和最后一个位置 JavaScript
查看>>
程序猿应该记住的几条基本规则
查看>>
[译] 用 Redis 和 Python 构建一个共享单车的 app
查看>>
数据结构和算法面试题系列—二叉树面试题汇总
查看>>
用 SOLID 原则保驾 React 组件开发
查看>>
Reddit热点 | 想看被打码的羞羞图片怎么办?CNN帮你解决
查看>>
idou老师教你学Istio 04:Istio性能及扩展性介绍
查看>>
详解CSS的Flex布局
查看>>