算法
文章平均质量分 85
基础算法
修电脑-电视-电冰箱-就是不修理bug
这个作者很懒,什么都没留下…
展开
-
剑指offer(jz41--jz50)
jz41 和为S的连续正数序列描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?思路暴力解法:遍历两遍数组,穷举找到所有的序列。优化解法(滑动窗口):考虑到序列是连续的,可以维护一个两个指针,计算序列值,终止条件是序列的中间数原创 2021-06-24 08:32:14 · 152 阅读 · 0 评论 -
剑指offer(jz31--jz40) python!!
jz31 整数中1出现的次数(从1到n整数中1出现的次数)描述输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数例如,1~13中包含1的数字有1、10、11、12、13因此共出现6次思路直接方法:把1-n个数字拼接成一个字符串,遍历出1的个数,最简单直接的方法。时间复杂度接近于kn。基本可行代码如下:def jz31(s): count=0 t='' for i in range(len(s)): t+=str(i) for j in t: if j=='1':原创 2021-06-23 07:30:01 · 238 阅读 · 0 评论 -
剑指offer(jz21--jz30)
jz21 栈的压入弹出序列描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路分析创建一个栈,进行进栈操作,同时进行出栈的判断,最后判断栈里是否还有元素,以此判断是否是出栈顺序。判断条件就是栈是否为空。代码如下:def solution(pu原创 2021-06-22 06:52:32 · 121 阅读 · 0 评论 -
剑指offer(jz11--jz20)
jz11 二进制中1的个数描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。思路把整数n当做一个而二进制数,每次与n-1做按位与操作,再每次把n向右移动一位。代码如下:def solution(n): count=0 while n!=0: count+=1 n=n&(n-1) return count比较讲究技巧。还有除2取模法。二进制移位法。jz12 数值的整数次方描述给定一个double类型的浮点数base和int类型的整数expon原创 2021-06-21 07:33:17 · 138 阅读 · 0 评论 -
剑指offer(jz1--jz10)
jz1 二维数组中的查找描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target = 7,返回 true。给定 target = 3,返回 false。思路根据数组的特点,一行递增,一列递增。要查找数字是否在该数组中,遍历是暴力解法。由于原创 2021-06-20 11:22:57 · 122 阅读 · 0 评论 -
查找算法与排序算法之Python实现
查找算法与排序算法查找算法顺序查找二分查找排序算法冒泡排序选择排序简单选择排序选择排序插入排序快速排序堆排序堆排序topk问题归并排序希尔排序计数排序桶排序基数排序查找算法顺序查找顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法。对于任意一个序列以及一个给定的元素,将给定元素与序列中元素依次比较,直到找出与给定关键字相同的元素,或者将序列中的元素与其都比较完为止。代码实现如下:def order_find(li,val): for i in range(len(li)):原创 2021-05-04 15:33:03 · 85 阅读 · 0 评论