1、二维数组的查找:

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

class Solution:def Find(self, target, array):rows = len(array)-1cols = len(array[0])-1i = rowsj = 0while i >= 0 and j <= cols:if target < array[i][j]:i -= 1elif target > array[i][j]:j += 1else:return Truereturn False

2、旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

class Solution:def minNumberInRotateArray(self, rotateArray):lens = len(rotateArray)if lens == 0:return 0elif lens == 1:return rotateArray[0]else:left = 0right = lens-1while left < right:mid = (left+right)//2if rotateArray[mid] <= rotateArray[right]:right = midelse:left = mid+1return rotateArray[right]

3、斐波那契数列

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Solution:def Fibonacci(self, n):fib = [0,1]if n <= 1:return fib[n]while len(fib)<=n:fib.append(fib[-1]+fib[-2])return fib[n]

4、跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

class Solution:def jumpFloor(self, number):ways = [1,2]if number <= 2:return ways[number-1]while len(ways)<=number:ways.append(ways[-1]+ways[-2])return ways[number-1]

5、变态跳台阶

这道题纯粹是为了和前一题对比,放在数组这篇博客里。一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

class Solution:def jumpFloorII(self, number):if number <=1:return numberelse:way = 1for i in range(2,number+1):way *= 2return way

6、矩形覆盖

和斐波那契数列的思路差不多。我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Solution:def rectCover(self, number):ways = [0,1,2]if number <= 2:return ways[number] else:while len(ways) <= number:ways.append(ways[-1]+ways[-2])return ways[number]

7、数值的整数次方

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

# -*- coding:utf-8 -*-
class Solution:def Power(self, base, exponent):temp = 1if base == 0:    return 0elif base != 0 and exponent == 0:return 1elif base!= 0 and exponent > 0:for i in range(exponent):temp *= basereturn tempelse:for i in range(-exponent): temp *= 1./ base       return temp

8、调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

class Solution:def reOrderArray(self, array):if not array:return []odd_list = []even_list = []for i in array:if i % 2 != 0:odd_list.append(i)else:even_list.append(i)return odd_list+even_list

9、顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Solution:  def printMatrix(self, matrix):res = []while matrix:res += matrix.pop(0)if matrix and matrix[0]:for row in matrix:res.append(row.pop())if matrix:res += matrix.pop()[::-1]if matrix and matrix[0]:for row in matrix[::-1]:res.append(row.pop(0))return res

10、数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

class Solution:def MoreThanHalfNum_Solution(self, numbers):if not numbers:return 0lens = len(numbers)count_freq = {}for i in numbers:if i not in count_freq:count_freq[i] = 1else:count_freq[i] += 1 for key,value in count_freq.items():if value > (lens//2):return keyreturn 0

11、连续子数组的最大和

HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)。

借鉴自然语言处理中的ngram的做法。

class Solution:def FindGreatestSumOfSubArray(self, array):def get_ngram(array):n = len(array)m = 1n_gram = [array[i-k:i] for k in range(m,n+1) for i in range(k,n+1)]                        return n_gramdef find_max(array):n_gram = get_ngram(array)sum_n_gram = [sum(i) for i in n_gram]max_sum = sum_n_gram[0]for i in sum_n_gram:if i >= max_sum:max_sum = ireturn max_sumif not array:returnelse:return find_max(array)

12、把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

这个题在python3环境下,要调用一个函数cmp_to_key。

from functools import cmp_to_key
class Solution:def PrintMinNumber(self, numbers):if not numbers:return ''def compare(a,b):if a+b > b+a:return 1elif a+b < b+a:return -1else:return 0numbers = [str(i) for i in numbers]numbers.sort(key=cmp_to_key(compare))return ''.join(numbers).lstrip('0')

13、丑数

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

这道题真是神题,暂时理解不了,抄别人的代码。

class Solution:def GetUglyNumber_Solution(self, index):if index < 1:return 0res = [1]t2=t3=t5=0nextIdx = 1while nextIdx < index:minNum=min(res[t2]*2,res[t3]*3,res[t5]*5)res.append(minNum)if res[t2]*2 == minNum:t2 += 1if res[t3]*3 == minNum:t3 += 1if res[t5]*5 == minNum:t5 += 1nextIdx += 1return res[nextIdx-1]

13道Python数组练习题相关推荐

  1. 100道Python编程练习题

    100+ Python challenging programming exercise 100道Python编程练习题,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的 ...

  2. python中输出n开始的5个奇数_送你99道Python经典练习题,练完直接上手做项目,免费送了来拿吧...

    学python没练习题怎么行.今天,给大家准备一个项目: 99道编程练习,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的编程技能.目前,这个项目已经获得了 2924 S ...

  3. 100道Python面试练习题【含答案】

    Python是目前编程领域最受欢迎的语言.在本文中,我将总结Python面试中最常见的100个问题.每道题都提供参考答案,希望能够帮助你在2021年求职面试中脱颖而出,找到一份高薪工作.这些面试题涉及 ...

  4. 23道Python基础练习题附答案

    1.Python和Java.PHP.C.C#.C++等其他语言的对比? (1)C语言 C语言,它既有高级语言的特点,又具有汇编语言的特点,它是结构式语言.C语言应用指针:可以直接进行靠近硬件的操作,但 ...

  5. 50 道 Python 基础练习题(附答案详解)

    作者:Amo Xiang https://blog.csdn.net/xw1680/article/details/103546693 1.两个变量的交换 # -*- coding: utf-8 -* ...

  6. python矩阵相乘例题_百道Python入门级练习题(新手友好)第一回合——矩阵乘法...

    题目描述 [问题描述] 编写程序,完成3*4矩阵和4*3整数矩阵的乘法,输出结果矩阵. [输入形式] 一行,供24个整数.以先行后列顺序输入第一个矩阵,而后输入第二个矩阵. [输出形式] 先行后列顺序 ...

  7. 字典 选取前100_100道 Python 经典练习题004

    题目:输入某年某月某日,判断这一天是这一年的第几天? 这道题看似简单,但实际要考虑的问题很多.首先我们要判断平年/闰年,因为它涉及到2月是否会多一天的问题:另外我们还要判断用户的每一个输入是否合法,不 ...

  8. python学习,8道Python基础练习题

    1.输入一个百分制成绩,要求输出成绩等级A.B.C.D.E,其中90100分为A,8089分为B,7079分为C,6069分为D,60分以下为E. 要求: 1)用if语句实现: 2)输入百分制成绩后要 ...

  9. 100道python经典练习题

    链接:https://pan.baidu.com/s/1K0iuZKJukLoGQ8OBy7xq1Q 提取码:2s6q 链接长期有效,如有疑问,欢迎评论区交流.

最新文章

  1. linux怎么允许远程root登录
  2. java中ra怎么解释_JAVA个人相关知识总结
  3. SAP CRM settype COMM_PROD_VAR
  4. 计算机跨考医学检验技术,医学检验技术考研可以考哪些专业?
  5. 如何抢占云栖大会C位?史上最强强强攻略来了
  6. 网络压缩《network pruning 浅析》
  7. 四阶行列式直接展开_【Just For Fun】n 階行列式計算 宏 生成器,四阶行列式的最优展开...
  8. Visio—如何画矩形虚线边框?
  9. Windows Phone开发(6):处理屏幕方向的改变 转:http://blog.csdn.net/tcjiaan/article/details/7273107...
  10. WindowsBuilder控件中文编码问题
  11. Delphi 7 在Win 7 下的安装使用
  12. 【经验分享】数学建模论文格式要求及常见问题汇总
  13. OpenGL学习之旅(三)——Bezier曲线理论与OpenGL实现
  14. 解除excel打开密码
  15. go mod invalid pseudo-version
  16. UnboundLocalError local variable torch referenced before assignment
  17. html作业介绍家乡,dreamweaver网页大作业 我的家乡
  18. Vue 之 echarts 图表数据可视化的基础使用(简单绘制各种图表、地图)
  19. 抛弃Eclipse!
  20. python exercise string之一常规操作

热门文章

  1. 用CORS 解决vue.js django跨域调用
  2. SAP中国首个基于SAP HANA的Business One Analytics项目初试锋芒
  3. qtp web随机获取下拉框的值
  4. 【学习笔记】Python - Beautiful Soup
  5. 【采购订单】利用BAPI创建PO后丢失消息输出
  6. 【PP操作手册】工艺路线相关操作
  7. 物料帐结算,库存差异为何在下月初冲回
  8. ABAP X类型 和 xstring类型
  9. 利润中心, 成本中心, 工作中心
  10. sap中Excel的模版上传和下载