
算法
神来回复
程序小白一枚
展开
-
力扣刷题9
题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例示例1输入:121输出:True示例2输入:-121输出:False解释:从左向右读为-121,从右向左读为121-,因此它不是一个回文数。class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """原创 2021-12-17 13:36:11 · 132 阅读 · 0 评论 -
力扣刷题 680
题目描述给定一个非空字符串s,要求最多删除一个字符,判断其是否能成为回文字符串。示例输入:“aba”输出:Trueclass Solution(object): def validPalindrome(self, s): """ :type s: str :rtype: bool """ n=len(s) def isPalindrome(s,i,n): l=0原创 2021-12-16 22:04:56 · 138 阅读 · 0 评论 -
力扣刷题 第1175题
题目描述请你帮忙给从1到n的数设计排列方案,使所有的质数都被放在质数索引(索引值从1开始)上;你需要返回可能的方案总数。让我们一起来回顾一下质数:质数一定是大于1的,并且不能用两个小于它的正整数的乘积来表示。由于答案可能会很大,所以请你返回答案模mod 109+7 之后的结果即可。示例输入:n=5输出:12解释:举个例子,[1,2,5,4,3]是一个有效的排列,但[5,2,3,4,1]不是,因为在第2种情况下质数5被错误地放在索引值为1的位置上了。思路这个题是先寻找范围n内的质数,然后使用n减去质原创 2021-12-16 21:13:28 · 173 阅读 · 0 评论 -
力扣刷题 166
题目描述给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分放在括号内。示例输入:numerator=1,denominator=2输出:“0.5”class Solution(object): def fractionToDecimal(self, numerator, denominator): """ :type numerator: int :ty原创 2021-12-12 10:15:25 · 4183 阅读 · 0 评论 -
力扣刷题 179
题目描述给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例输入:[3,30,34,5,9]输出:9534330class Solution(object): def largestNumber(self, nums): """ :type nums: List[int] :rtype: str """ return str(int(''.join(sorted(map(str,nums),cmp=原创 2021-12-12 09:35:11 · 209 阅读 · 0 评论 -
力扣刷题 53
题目描述求数组中最大连续子序列和,例如,给定数组A=[1,3,-2,4,-5],则最大连续子序列和为6,即1+3+(-2)+4=6。class Solution(object): def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int """ n=len(nums) max_sum_=max_sum=nums[0]原创 2021-12-11 16:15:37 · 289 阅读 · 0 评论 -
力扣刷题 16
题目描述给定一个包括n个整数的数组nums和一个目标值target。找出nums中的3个整数,使它们的和与target最接近。返回这3个数的和。假定每组输入只存在唯一答案。例如,给定数组nums=[-1,2,1,-4]和target=1。与target最接近的3个数的和为2,即-1+2+1=2。class Solution(object): def threeSumClosest(self, nums, target): """ :type nums: List[原创 2021-12-11 14:58:29 · 210 阅读 · 0 评论 -
力扣第454题 四数之和
题目描述给定4个包含整数的数组列表A、B、C、D,计算有多少个元组(i,j,k,l)能使A[i]+B[j]+C[k]+D[l]=0。为了使问题简单化,所有的A、B、C、D具有相同的长度n,且0≤n≤500。所有整数的范围在-228到228-1之间,最终结果不会超过231-1。示例输入:A=[1,2],B=[-2,-1],C=[-1,2],D=[0,2]输出:2解释:两个元组如下。● (0,0,0,1)→A[0]+B[0]+C[0]+D[1]=1+(-2)+(-1)+2=0● (1,1,0,0)原创 2021-12-11 11:48:16 · 2987 阅读 · 0 评论 -
力扣18题四数之和
题目描述给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在4个元素a、b、c、d,使a+b+c+d的值与target相等?找出所有满足条件且不重复的四元组。class Solution(object): def fourSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[List[int]]原创 2021-12-09 22:17:48 · 116 阅读 · 0 评论 -
力扣15三数之和
题目的要求如下。● 找到3个数相加等于0,而不是“两数之和”中的不定值target,因此本题相当于是个特例。● 题目要求返回的是数本身,而不是索引值。● 这道题存在多个答案,与上一题不同,本题要求返回所有可能的答案。● 答案中不可以包含重复的三元组,所以需要考虑去重。思路由于这道题要求的不再是返回索引值,因此先排序,然后使用双指针的思路是可行的。具体算法是先对原数组进行一次排序,然后一层循环固定一个元素,循环内部利用双指针找出剩下的两个元素,这里要特别注意需要去重。上述算法除去排序部分的时间复杂度原创 2021-12-09 21:12:32 · 137 阅读 · 0 评论 -
力扣第一题两数之和
题目给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回它们的索引值。你可以假设每种输入只会对应一个答案,但是,你不能重复利用这个数组中同样的元素。示例给定 nums=[2,7,11,15],target=9因为 nums[0]+nums[1]=2+7=9,所以返回[0,1]解法1排序+双指针这个算法由于使用了排序会改变列表的索引值,得到的结果不适合题目要求时间复杂度:算法瓶颈在于排序,因此时间复杂度为O(nlogn),其中n为数组长度。时间原创 2021-12-09 16:41:44 · 319 阅读 · 0 评论 -
算法复杂度分析
迭代复杂度分析1、常数阶:O(1)算法中不存在循环语句、递归语句,即使有成千上万行的代码,其时间复杂度也是O(1)2、多项式:O(n)、O(n2)、O(n3)判断一个算法是不是属于这种时间复杂度的一个简单方法是关注循环执行次数最多的那一段代码,这段代码执行次数对应n的量级,就是整个算法的时间复杂度。如果是一层n的循环,那么时间复杂度就是O(n);如果嵌套了两层n的循环,那么时间复杂度就是O(n2),以此类推。3、是对数阶:O(logn)和O(nlogn)二分查找的时间复杂度通常是O(logn原创 2021-12-09 15:04:33 · 1913 阅读 · 0 评论 -
算法5 排列问题
if __name__=="__main__": i=0 print("有效的借阅次数为:") for a in range(1,6): for b in range(1,6): for c in range(1,6): if a!=b and a!=c and c!=b: print("A:%2d B:%2d C:%2d"%(a,b,c),end=" ")原创 2021-12-09 11:42:03 · 176 阅读 · 0 评论 -
算法4百钱百鸡
if __name__=="__main__": cock=0 while cock<=20: hen=0 while hen<=33: chicken=0 while chicken<=100: if (5*cock+3*hen+chicken/3.0==100)and(cock+hen+chicken==100): pr原创 2021-12-09 11:10:01 · 186 阅读 · 0 评论 -
python算法3
牛顿迭代法求取方程根def solution(a,b,c,d): x=1.5 x0=x; f=a*x0*x0*x0+b*x0*x0+c*x0+d fd=3*a*x0*x0+2*b*x0+c h=f/fd x=x0-h while abs(x-x0)>=1e-5: x0=x f=a*x0*x0*x0+b*x0*x0+c*x0+d fd=3*a*x0*x0+2*b*x0+c h=f/f原创 2021-12-09 10:47:08 · 531 阅读 · 0 评论 -
【无标题】
2、python算法 斐波那契数列if __name__=="__main__": fib1=1 fib2=1 i=3 print("%6d %6d"%(fib1,fib2),end=" ") while i<30: fib=fib1+fib2 print("%6d"%fib,end=" ") if i%4==0: print() fib2=fib1原创 2021-12-09 10:16:30 · 516 阅读 · 0 评论 -
数据分析scipy使用总结
1、## python第一个例程求取一个四位数,前两位数字相同,后两位数字也相同,并且这个四位数是一个数的平方和。if __name__=="__main__": flag=0 for i in range(10): for j in range (10): if flag: break if i!=j: if flag:原创 2021-12-09 09:36:49 · 280 阅读 · 0 评论